Module: Certman::Resource::Route53

Included in:
Client
Defined in:
lib/certman/resource/route53.rb

Overview

rubocop:disable Metrics/ModuleLength

Instance Method Summary collapse

Instance Method Details

#cname_rset_exist?Boolean

Returns:

  • (Boolean)


133
134
135
136
137
138
139
140
# File 'lib/certman/resource/route53.rb', line 133

def cname_rset_exist?
  res = route53.test_dns_answer(
    hosted_zone_id: @hosted_zone_id,
    record_name: "#{email_domain}.",
    record_type: 'CNAME'
  )
  !res.record_data.empty?
end

#create_mx_rsetObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/certman/resource/route53.rb', line 32

def create_mx_rset
  route53.change_resource_record_sets(
    change_batch: {
      changes: [
        {
          action: 'CREATE',
          resource_record_set: {
            name: email_domain,
            resource_records: [
              {
                value: "10 inbound-smtp.#{Aws.config[:region]}.amazonaws.com"
              }
            ],
            ttl: 60,
            type: 'MX'
          }
        }
      ],
      comment: 'Generate by certman'
    },
    hosted_zone_id: @hosted_zone.id
  )
end

#create_txt_rsetObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/certman/resource/route53.rb', line 5

def create_txt_rset
  @hosted_zone = route53.list_hosted_zones.hosted_zones.find do |zone|
    zone.name == "#{hosted_zone_domain}."
  end
  route53.change_resource_record_sets(
    change_batch: {
      changes: [
        {
          action: 'CREATE',
          resource_record_set: {
            name: "_amazonses.#{email_domain}",
            resource_records: [
              {
                value: '"' + @token + '"'
              }
            ],
            ttl: 60,
            type: 'TXT'
          }
        }
      ],
      comment: 'Generate by certman'
    },
    hosted_zone_id: @hosted_zone.id
  )
end

#delete_mx_rsetObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/certman/resource/route53.rb', line 80

def delete_mx_rset
  route53.change_resource_record_sets(
    change_batch: {
      changes: [
        {
          action: 'DELETE',
          resource_record_set: {
            name: email_domain,
            resource_records: [
              {
                value: "10 inbound-smtp.#{Aws.config[:region]}.amazonaws.com"
              }
            ],
            ttl: 60,
            type: 'MX'
          }
        }
      ],
      comment: 'Generate by certman'
    },
    hosted_zone_id: @hosted_zone.id
  )
end

#delete_txt_rsetObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/certman/resource/route53.rb', line 56

def delete_txt_rset
  route53.change_resource_record_sets(
    change_batch: {
      changes: [
        {
          action: 'DELETE',
          resource_record_set: {
            name: "_amazonses.#{email_domain}",
            resource_records: [
              {
                value: '"' + @token + '"'
              }
            ],
            ttl: 60,
            type: 'TXT'
          }
        }
      ],
      comment: 'Generate by certman'
    },
    hosted_zone_id: @hosted_zone.id
  )
end

#hosted_zone_exist?Boolean

Returns:

  • (Boolean)


104
105
106
107
108
109
110
111
112
113
# File 'lib/certman/resource/route53.rb', line 104

def hosted_zone_exist?
  @hosted_zone_id = nil
  hosted_zone = route53.list_hosted_zones.hosted_zones.find do |zone|
    if zone.name == "#{hosted_zone_domain}."
      @hosted_zone_id = zone.id
      next true
    end
  end
  hosted_zone
end

#mx_rset_exist?Boolean

Returns:

  • (Boolean)


124
125
126
127
128
129
130
131
# File 'lib/certman/resource/route53.rb', line 124

def mx_rset_exist?
  res = route53.test_dns_answer(
    hosted_zone_id: @hosted_zone_id,
    record_name: "#{email_domain}.",
    record_type: 'MX'
  )
  !res.record_data.empty?
end

#route53Object



142
143
144
# File 'lib/certman/resource/route53.rb', line 142

def route53
  @route53 ||= Aws::Route53::Client.new
end

#txt_rset_exist?Boolean

Returns:

  • (Boolean)


115
116
117
118
119
120
121
122
# File 'lib/certman/resource/route53.rb', line 115

def txt_rset_exist?
  res = route53.test_dns_answer(
    hosted_zone_id: @hosted_zone_id,
    record_name: "_amazonses.#{email_domain}.",
    record_type: 'TXT'
  )
  !res.record_data.empty?
end