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 +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
|