class Acmesmith::SaveCertificateService
Attributes
cert[R]
certificate_file[R]
certificate_mode[R]
chain_file[R]
fullchain_file[R]
key_file[R]
key_mode[R]
version_file[R]
Public Class Methods
new(cert, key_mode: '0600', certificate_mode: '0644', version_file: nil, key_file: nil, fullchain_file: nil, chain_file: nil, certificate_file: nil, atomic: true, verbose: false)
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 3 def initialize(cert, key_mode: '0600', certificate_mode: '0644', version_file: nil, key_file: nil, fullchain_file: nil, chain_file: nil, certificate_file: nil, atomic: true, verbose: false) @cert = cert @key_mode = key_mode @certificate_mode = certificate_mode @version_file = version_file @key_file = key_file @fullchain_file = fullchain_file @chain_file = chain_file @certificate_file = certificate_file @atomic = atomic @verbose = verbose end
Public Instance Methods
atomic?()
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 19 def atomic?; !!@atomic; end
local_version()
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 35 def local_version @local_version ||= begin if version_file && File.exist?(version_file) File.read(version_file).chomp else nil end end end
perform!()
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 21 def perform! if local_version == cert.version return end log "Saving certificate CN=#{cert.common_name} (ver: #{cert.version})" write_file(key_file, key_mode, cert.private_key) write_file(certificate_file, certificate_mode, cert.certificate.to_pem) write_file(chain_file, certificate_mode, cert.chain) write_file(fullchain_file, certificate_mode, cert.fullchain) write_file(version_file, certificate_mode, cert.version) end
Private Instance Methods
log(*args)
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 47 def log(*args) if @verbose puts *args end end
write_file(path, mode, body)
click to toggle source
# File lib/acmesmith/save_certificate_service.rb, line 53 def write_file(path, mode, body) return unless path realpath = atomic? ? "#{path}.new" : path File.open(realpath, 'w', mode.to_i(8)) do |io| io.puts body end if atomic? File.rename realpath, path end end