zonesync 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 799ab804db56a8f9b6882b1dd64ebdcad5f88310bb25ca6261ab997ecb9934d9
4
- data.tar.gz: 3410be337d22be94eaae226aadf34d064f9f66289306023dce0d4d26ecaa31b2
3
+ metadata.gz: 8092e718a86bb6aecf07937b02b5d7e2dfc3afb130b0e34d5caaa2e5ca7454d3
4
+ data.tar.gz: 6f5f7c405a4a5eb13dfc2caf6276bdde907a48b3226ad356efc2793768b2d304
5
5
  SHA512:
6
- metadata.gz: 06c7e0f79883aaa040aa9d98b61793495adcc48ce565f1072d14cf22c98e81aea2877d4e4917371f72d26d6b952a1f8daed443e71c51d32003464b9b850a61e2
7
- data.tar.gz: 1112ee6ef2d185e6d21cea7284035960e71d9dc6b23dc21a8768c08da4b831c1780452fbb1d93e2436ded427c4559b70643a3c7eeca3050a0ee10741090a0fa6
6
+ metadata.gz: 02da529d99feab4932cd07da8426308dbecf93cc5f1cfb5465241b097cbc46207f93ff74bb85d50332de03dec950338897078f063ffed539b58fbb3a891b7fc5
7
+ data.tar.gz: 3b4c687eb3f84e5f6c096ab101da99cec73c2064c218f8551d76c301f67edb707e82c58c5e06587c114b5ca8f34af4216977521f5d16ef2f315ceaaf82d4f8a7
@@ -9,25 +9,10 @@ module Zonesync
9
9
 
10
10
  def diffable_records
11
11
  DNS::Zonefile.load(read).records.map do |record|
12
- rdata = case record
13
- when DNS::Zonefile::A, DNS::Zonefile::AAAA
14
- record.address
15
- when DNS::Zonefile::CNAME
16
- record.domainname
17
- when DNS::Zonefile::MX
18
- record.domainname
19
- when DNS::Zonefile::TXT
20
- record.data
21
- else
22
- next
23
- end
24
- Record.new(
25
- record.host,
26
- record.class.name.split("::").last,
27
- record.ttl,
28
- rdata,
29
- )
30
- end.compact
12
+ Record.from_dns_zonefile_record(record)
13
+ end.select do |record|
14
+ %w[A AAAA CNAME MX TXT SPF NAPTR PTR].include?(record.type)
15
+ end
31
16
  end
32
17
 
33
18
  def read record
@@ -1,5 +1,30 @@
1
1
  module Zonesync
2
2
  class Record < Struct.new(:name, :type, :ttl, :rdata)
3
+ def self.from_dns_zonefile_record record
4
+ type = record.class.name.split("::").last
5
+ rdata = case type
6
+ when "SOA"
7
+ def record.host = origin
8
+ "" # it just gets ignored anyways
9
+ when "A", "AAAA"
10
+ record.address
11
+ when "CNAME", "NS", "PTR"
12
+ record.domainname
13
+ when "MX"
14
+ "#{record.priority} #{record.domainname}"
15
+ when "TXT", "SPF", "NAPTR"
16
+ record.data
17
+ else
18
+ raise NotImplementedError.new(record.class).to_s
19
+ end
20
+
21
+ new(
22
+ record.host,
23
+ type,
24
+ record.ttl,
25
+ rdata,
26
+ )
27
+ end
3
28
  end
4
29
  end
5
30
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zonesync
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/lib/zonesync.rb CHANGED
@@ -11,7 +11,10 @@ module Zonesync
11
11
  local = Provider.from({ provider: "Filesystem", path: zonefile })
12
12
  remote = Provider.from(credentials)
13
13
  operations = Diff.call(from: remote, to: local)
14
- operations.each { |method, args| puts [method, *args].inspect }
14
+ operations.each do |method, args|
15
+ puts [method, args].inspect
16
+ remote.send(method, args)
17
+ end
15
18
  end
16
19
  end
17
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zonesync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel