zonesync 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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