radd 1.3.0 → 1.4.0
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/README.md +33 -6
- data/lib/radd/cli.rb +10 -3
- data/lib/radd/config.rb +5 -1
- data/lib/radd/nameserver.rb +6 -7
- data/lib/radd/version.rb +1 -1
- data/lib/radd.rb +4 -0
- 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: f9fddd23ad9d4e45fcfef31f6e5d976b13511fc6089a3f77267395ff8d62bfb6
|
|
4
|
+
data.tar.gz: 530c66e7a340a9709de98025c4cc697b50d1358371d7ef7e351cd756a30611f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f0a3ff47b7c18794df7a34972dacc6ec4434c9dc1b749797655518e79d5509fbc4d01326d34906c3904c22498663cce5224d4214b593cf91588398c3c29ab6cf
|
|
7
|
+
data.tar.gz: 431664ea22d21ba782c577c940746bfd43083855054cf60befb9b6414d52d3ba281524448eb8639b19a77549440749f43a0528564c6fa0e22992146eaf00175b
|
data/README.md
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
|
-
radd
|
|
2
|
-
====
|
|
1
|
+
# radd
|
|
3
2
|
|
|
4
3
|
Minimal dynamic DNS service
|
|
5
4
|
|
|
6
|
-
rake radd:db:create
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
## Installation
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
```
|
|
9
|
+
gem install radd
|
|
10
|
+
```
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Configuration
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
# radd.yml
|
|
16
|
+
ip: 10.1.2.3
|
|
17
|
+
http: 127.0.0.1:3000
|
|
18
|
+
dns: 0.0.0.0:53
|
|
19
|
+
domain: example.com
|
|
20
|
+
mname: ns.example.com
|
|
21
|
+
rname: hostmaster.example.com
|
|
22
|
+
db: radd.sqlite3
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
radd COMMAND [--config FILE]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
You must specify one of the following commands:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
setup Create the database
|
|
35
|
+
add Add new record
|
|
36
|
+
delete Delete record
|
|
37
|
+
list List available records
|
|
38
|
+
start Run the server
|
|
39
|
+
```
|
data/lib/radd/cli.rb
CHANGED
|
@@ -21,11 +21,17 @@ module Radd::Cli
|
|
|
21
21
|
|
|
22
22
|
def run
|
|
23
23
|
command = ARGV.shift
|
|
24
|
-
|
|
24
|
+
if COMMANDS.include?(command)
|
|
25
|
+
send(command)
|
|
26
|
+
elsif command.nil?
|
|
27
|
+
help
|
|
28
|
+
exit 1
|
|
29
|
+
elsif '--help' == command
|
|
30
|
+
help
|
|
31
|
+
else
|
|
25
32
|
puts "Unknown command #{command}"
|
|
26
|
-
exit
|
|
33
|
+
exit 1
|
|
27
34
|
end
|
|
28
|
-
send(command)
|
|
29
35
|
end
|
|
30
36
|
|
|
31
37
|
def help
|
|
@@ -37,6 +43,7 @@ module Radd::Cli
|
|
|
37
43
|
|
|
38
44
|
setup Create the database
|
|
39
45
|
add Add new record
|
|
46
|
+
delete Delete record
|
|
40
47
|
list List available records
|
|
41
48
|
start Run the server
|
|
42
49
|
|
data/lib/radd/config.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
module Radd
|
|
2
2
|
|
|
3
3
|
class << self
|
|
4
|
-
attr_reader :domain, :ip, :db, :http_host, :http_port, :dns_host, :dns_port, :ttl
|
|
4
|
+
attr_reader :domain, :ip, :db, :http_host, :http_port, :dns_host, :dns_port, :ttl,
|
|
5
|
+
:mname, :rname
|
|
5
6
|
|
|
6
7
|
def configure!(file, skip_models: false, skip_db: false)
|
|
7
8
|
file_path = Pathname.new(file || 'radd.yml')
|
|
@@ -20,6 +21,9 @@ module Radd
|
|
|
20
21
|
@dns_port = uri.port || 53
|
|
21
22
|
raise ConfigurationError, 'invalid TTL' if config['ttl'] && config['ttl'] < 1
|
|
22
23
|
@ttl = config['ttl'] || 300
|
|
24
|
+
raise ConfigurationError, 'master name missing' unless config['mname']
|
|
25
|
+
@mname = config['mname']
|
|
26
|
+
@rname = config['rname'] || "hostmaster.#{domain}"
|
|
23
27
|
db_path = Pathname.new(config['db'] || 'radd.sqlite3')
|
|
24
28
|
db_path = Radd.root + db_path unless db_path.absolute?
|
|
25
29
|
@db = db_path
|
data/lib/radd/nameserver.rb
CHANGED
|
@@ -5,14 +5,13 @@ class Radd::Nameserver < Async::DNS::Server
|
|
|
5
5
|
|
|
6
6
|
def process(name, resource_class, transaction)
|
|
7
7
|
name = name.downcase
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
case resource_class
|
|
9
|
+
when Resolv::DNS::Resource::IN::A
|
|
10
|
+
ip = Radd.domain == name ? Radd.ip : Radd.query(name)
|
|
11
|
+
return transaction.respond!(ip, ttl: Radd.ttl) if ip
|
|
12
|
+
when Resolv::DNS::Resource::IN::SOA
|
|
13
|
+
return transaction.respond!(Radd.mname, Radd.rname, Radd.serial, 10800, 1800, 604800, 1800)
|
|
14
14
|
end
|
|
15
|
-
return transaction.respond!(ip, ttl: Radd.ttl) if ip
|
|
16
15
|
transaction.fail!(:NXDomain)
|
|
17
16
|
end
|
|
18
17
|
end
|
data/lib/radd/version.rb
CHANGED
data/lib/radd.rb
CHANGED