Class: Certflare::Authenticator

Inherits:
Object
  • Object
show all
Defined in:
lib/certflare/common/authenticator.rb

Instance Method Summary collapse

Constructor Details

#initializeAuthenticator

Returns a new instance of Authenticator.



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/certflare/common/authenticator.rb', line 16

def initialize
  @cfg         = YAML.load_file(Pathname.new('/etc/').join('certflare'))
  @api_key     = @cfg['dns_cloudflare_api_key']
  @email       = @cfg['dns_cloudflare_email']
  @domain     = ENV['CERTBOT_DOMAIN']
  @validation = ENV['CERTBOT_VALIDATION']
  @main_domain = PublicSuffix.domain(@domain)
  zone      = CloudflareClient::Zone.new(auth_key: @api_key, email: @email).zones(name: @main_domain)
  @zone_id = zone[:result][0][:id]

end

Instance Method Details

#create_cleanupObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/certflare/common/authenticator.rb', line 36

def create_cleanup
  domain_dir = Pathname.new("/etc/").join("tmp", "CERTBOT_#{@domain}")
  # puts "domain dir: #{domain_dir}"
  unless domain_dir.exist?
    Dir.mkdir(domain_dir, 0700)
  end
  zone_id_file   = domain_dir.join('ZONE_ID')
  record_id_file = domain_dir.join('RECORD_ID')
  File.open(zone_id_file, 'w') do |f|
    f.print(@zone_id)
  end
  File.open(record_id_file, 'w') do |f|
    f.print(@record_id)
  end
  # puts <<~HEREDOC
  #  details for #{zone_id_file.to_s}
  #  writable? #{File.writable?(zone_id_file)}
  #  readable? #{File.readable?(zone_id_file)}
  #HEREDOC
  #puts <<~HEREDOC
  #  details for #{record_id_file.to_s}
  #  writable? #{File.writable?(record_id_file)}
  #  readable? #{File.readable?(record_id_file)}
  #HEREDOC
end

#create_txt_recordObject



27
28
29
30
31
32
33
34
# File 'lib/certflare/common/authenticator.rb', line 27

def create_txt_record
  domain_with_prefix = "_acme-challenge.#{@domain}"
  # puts "record name: #{domain_with_prefix}"
  dns_records = CloudflareClient::Zone::DNS.new(zone_id: @zone_id, auth_key: @api_key, email: @email)
  record      = dns_records.create(name: domain_with_prefix, type: 'TXT', content: @validation, ttl: 120)
  @record_id = record[:result][:id]
  # puts "record id: #{@@record_id}"
end