diff --git a/environment.rb b/environment.rb index 29f7dce5..6a0d711a 100644 --- a/environment.rb +++ b/environment.rb @@ -73,6 +73,12 @@ end $redis_cache = Redis::Namespace.new :cache, redis: $redis +if ENV['RACK_ENV'] == 'test' + $redis_proxy = MockRedis.new +else + $redis_proxy = Redis.new url: $config['redis_proxy'] +end + # :nocov: if ENV['RACK_ENV'] == 'development' # Run async jobs immediately in development. diff --git a/models/site.rb b/models/site.rb index 54c6d842..a122d9ce 100644 --- a/models/site.rb +++ b/models/site.rb @@ -827,6 +827,7 @@ class Site < Sequel::Model end def after_save + store_ssl_in_redis_proxy if @_ssl_changed save_tags super end @@ -1380,7 +1381,24 @@ class Site < Sequel::Model end def ssl_installed? - ssl_key && ssl_cert + domain && ssl_key && ssl_cert + end + + def ssl_key=(val) + @_ssl_changed = true + values[:ssl_key] = val + end + + def ssl_cert=(val) + @_ssl_changed = true + values[:ssl_cert] = val + end + + def store_ssl_in_redis_proxy + return false unless ssl_installed? + $redis_proxy.hset "ssl-#{domain}", 'crt', OpenSSL::X509::Certificate.new(ssl_cert).to_der + $redis_proxy.hset "ssl-#{domain}", 'key', OpenSSL::PKey::RSA.new(ssl_key).to_der + true end def to_rss