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 +4 -4
- data/lib/zonesync/provider.rb +4 -19
- data/lib/zonesync/record.rb +25 -0
- data/lib/zonesync/version.rb +1 -1
- data/lib/zonesync.rb +4 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8092e718a86bb6aecf07937b02b5d7e2dfc3afb130b0e34d5caaa2e5ca7454d3
|
|
4
|
+
data.tar.gz: 6f5f7c405a4a5eb13dfc2caf6276bdde907a48b3226ad356efc2793768b2d304
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 02da529d99feab4932cd07da8426308dbecf93cc5f1cfb5465241b097cbc46207f93ff74bb85d50332de03dec950338897078f063ffed539b58fbb3a891b7fc5
|
|
7
|
+
data.tar.gz: 3b4c687eb3f84e5f6c096ab101da99cec73c2064c218f8551d76c301f67edb707e82c58c5e06587c114b5ca8f34af4216977521f5d16ef2f315ceaaf82d4f8a7
|
data/lib/zonesync/provider.rb
CHANGED
|
@@ -9,25 +9,10 @@ module Zonesync
|
|
|
9
9
|
|
|
10
10
|
def diffable_records
|
|
11
11
|
DNS::Zonefile.load(read).records.map do |record|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
data/lib/zonesync/record.rb
CHANGED
|
@@ -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
|
|
data/lib/zonesync/version.rb
CHANGED
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
|
|
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
|