zonesync 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/zonesync/provider.rb +9 -1
- data/lib/zonesync/version.rb +1 -1
- data/lib/zonesync.rb +6 -6
- data/zonesync.gemspec +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4483586b922fcb40130de86a415fdf440dd46afa556dfa45e87e0d6d398f52d7
|
4
|
+
data.tar.gz: 88cbb6f82331655a9f78d49ee9b4013c2011bd94c3bb04831b6ebd58b4b968e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bdd45b0a0d43e91856f488a53f8880c3946f6ab566f9e13a54209a76b295ca76f3f6fb1e62e607594d0abea3963ddefd9576c593e804832bd2580e3b51e18fc
|
7
|
+
data.tar.gz: d5afd17873627c461936dfd62038bd471fa7c83296981daca019ba9b2614c269cfa68b865d69a54dfd543c6b9a5d9c537bfe88c12cdca4885898b7db433bfa6a
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# Zonesync
|
2
|
+
|
3
|
+
[![CI Status](https://github.com/botandrose/zonesync/workflows/CI/badge.svg?branch=master)](https://github.com/botandrose/zonesync/actions?query=workflow%3ACI+branch%3Amaster)
|
2
4
|
|
3
5
|
Sync your DNS host with your DNS zone file, making it easy to version your zone file and sync changes.
|
4
6
|
|
data/lib/zonesync/provider.rb
CHANGED
@@ -8,13 +8,21 @@ module Zonesync
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def diffable_records
|
11
|
-
|
11
|
+
zonefile.records.map do |record|
|
12
12
|
Record.from_dns_zonefile_record(record)
|
13
13
|
end.select do |record|
|
14
14
|
%w[A AAAA CNAME MX TXT SPF NAPTR PTR].include?(record.type)
|
15
15
|
end.sort
|
16
16
|
end
|
17
17
|
|
18
|
+
private def zonefile
|
19
|
+
body = read
|
20
|
+
if body !~ /\sSOA\s/ # insert dummy SOA to trick parser if needed
|
21
|
+
body.sub!(/\n([^$])/, "\n@ 1 SOA example.com example.com ( 2000010101 1 1 1 1 )\n\\1")
|
22
|
+
end
|
23
|
+
DNS::Zonefile.load(body)
|
24
|
+
end
|
25
|
+
|
18
26
|
def read record
|
19
27
|
raise NotImplementedError
|
20
28
|
end
|
data/lib/zonesync/version.rb
CHANGED
data/lib/zonesync.rb
CHANGED
@@ -3,17 +3,17 @@ require "zonesync/diff"
|
|
3
3
|
|
4
4
|
module Zonesync
|
5
5
|
def self.call zonefile:, credentials:
|
6
|
-
Sync.new(zonefile, credentials).call
|
6
|
+
Sync.new({ provider: "Filesystem", path: zonefile }, credentials).call
|
7
7
|
end
|
8
8
|
|
9
|
-
class Sync < Struct.new(:
|
9
|
+
class Sync < Struct.new(:source, :destination)
|
10
10
|
def call
|
11
|
-
|
12
|
-
|
13
|
-
operations = Diff.call(from:
|
11
|
+
source = Provider.from(self.source)
|
12
|
+
destination = Provider.from(self.destination)
|
13
|
+
operations = Diff.call(from: destination, to: source)
|
14
14
|
operations.each do |method, args|
|
15
15
|
puts [method, args].inspect
|
16
|
-
|
16
|
+
destination.send(method, args)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/zonesync.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency "dns-zonefile", "~>1.0"
|
31
31
|
spec.add_dependency "diff-lcs", "~>1.4"
|
32
32
|
|
33
|
+
spec.add_development_dependency "rake"
|
33
34
|
spec.add_development_dependency "rspec"
|
34
35
|
spec.add_development_dependency "webmock"
|
35
36
|
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.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Geisel
|
@@ -39,6 +39,20 @@ dependencies:
|
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '1.4'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: rspec
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|