class Sidekiq::Crypt::ServerMiddleware
Constants
- FILTERED
Public Instance Methods
call(_worker_class, job, _queue, _redis_pool = {}) { || ... }
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 8 def call(_worker_class, job, _queue, _redis_pool = {}) return yield unless encrypted_worker?(job) encrypt_secret_params(job) yield delete_encryption_header(job['jid']) rescue StandardError => e if encrypted_worker?(job) Traverser.new(@encryption_header[:encrypted_keys]).traverse!(job['args'], filter_proc) end raise e end
Private Instance Methods
decryption_proc()
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 45 def decryption_proc proc do |_key, param| Cipher.decrypt(param, @encryption_header[:iv], @encryption_header[:key_version]) end end
delete_encryption_header(job_id)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 71 def delete_encryption_header(job_id) Sidekiq.redis do |conn| conn.del("sidekiq-crpyt-header:#{job_id}") end end
encrypt_secret_params(job)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 26 def encrypt_secret_params(job) @encryption_header = read_encryption_header_from_redis(job['jid']) Traverser.new(@encryption_header[:encrypted_keys]).traverse!(job['args'], decryption_proc) end
encrypted_worker?(job)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 31 def encrypted_worker?(job) klass = worker_klass(job) klass && klass.ancestors.include?(Sidekiq::Crypt::Worker) end
filter_proc()
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 51 def filter_proc proc { |_key, _param| FILTERED } end
read_encryption_header(job_id)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 65 def read_encryption_header(job_id) Sidekiq.redis do |conn| conn.get("sidekiq-crpyt-header:#{job_id}") end end
read_encryption_header_from_redis(job_id)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 55 def read_encryption_header_from_redis(job_id) parsed_header = JSON.parse(read_encryption_header(job_id)) { iv: Base64.decode64(parsed_header['nonce']), encrypted_keys: parsed_header['encrypted_keys'], key_version: parsed_header['key_version'] } end
worker_klass(job)
click to toggle source
# File lib/sidekiq-crypt/server_middleware.rb, line 36 def worker_klass(job) klass = begin job['args'][0]['job_class'] || job['class'] rescue StandardError job['class'] end klass.is_a?(Class) ? klass : Module.const_get(klass) end