pdns-remotebackend 0.0.5 → 0.0.6
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.
- data/README.md +31 -7
- data/lib/pdns/remotebackend/version.rb +1 -1
- data/lib/pdns/remotebackend.rb +33 -34
- metadata +11 -11
data/README.md
CHANGED
@@ -51,16 +51,40 @@ To start a pipe or unix server, do
|
|
51
51
|
|
52
52
|
In addition to stubs for remotebackend, the Pdns::Remotebackend::Handler has following helpers for making records
|
53
53
|
|
54
|
-
|
54
|
+
# Generates a hash of resource record
|
55
|
+
#
|
56
|
+
# @param [String] qname name of record
|
57
|
+
# @param [String] qtype type of record
|
58
|
+
# @param [String] content record contents
|
59
|
+
# @param [Integer] prio Record priority
|
60
|
+
# @param [Integer] ttl Record TTL
|
61
|
+
# @param [Integer] auth Whether we are authoritative for the record or not
|
62
|
+
# @return [Hash] A resource record hash
|
63
|
+
def record_prio_ttl(qname,qtype,content,prio,ttl,auth=1)
|
55
64
|
{:qtype => qtype, :qname => qname, :content => content, :priority => prio, :ttl => ttl, :auth => auth}
|
56
65
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
66
|
+
|
67
|
+
# Generates a hash of resource record
|
68
|
+
#
|
69
|
+
# @param [String] qname name of record
|
70
|
+
# @param [String] qtype type of record
|
71
|
+
# @param [String] content record contents
|
72
|
+
# @param [Integer] prio Record priority
|
73
|
+
# @param [Integer] auth Whether we are authoritative for the record or not
|
74
|
+
# @return [Hash] A resource record hash
|
75
|
+
def record_prio(qname,qtype,content,prio,auth=1)
|
76
|
+
record_prio_ttl(qname,qtype,content,prio,@ttl,auth)
|
60
77
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
78
|
+
|
79
|
+
# Generates a hash of resource record
|
80
|
+
#
|
81
|
+
# @param [String] qname name of record
|
82
|
+
# @param [String] qtype type of record
|
83
|
+
# @param [String] content record contents
|
84
|
+
# @param [Integer] auth Whether we are authoritative for the record or not
|
85
|
+
# @return [Hash] A resource record hash
|
86
|
+
def record(qname,qtype,content,auth=1)
|
87
|
+
record_prio_ttl(qname,qtype,content,0,@ttl,auth)
|
64
88
|
end
|
65
89
|
|
66
90
|
## Contributing
|
data/lib/pdns/remotebackend.rb
CHANGED
@@ -146,56 +146,55 @@ module Pdns
|
|
146
146
|
#
|
147
147
|
# @param [Socket] reader Socket to read from'
|
148
148
|
# @param [Socket] writer Socket to write to
|
149
|
-
protected
|
150
149
|
def mainloop(reader,writer)
|
151
150
|
h = @handler.new
|
152
151
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
res = false
|
169
|
-
else
|
170
|
-
h.send(method,args)
|
171
|
-
end
|
172
|
-
|
173
|
-
writer.puts ({:result => h.result, :log => h.log}).to_json
|
174
|
-
rescue JSON::ParserError
|
175
|
-
writer.puts ({:result => false, :log => "Cannot parse input #{line}"}).to_json
|
176
|
-
next
|
152
|
+
reader.each_line do |line|
|
153
|
+
# expect json
|
154
|
+
input = {}
|
155
|
+
line = line.strip
|
156
|
+
next if line.empty?
|
157
|
+
begin
|
158
|
+
input = JSON.parse(line)
|
159
|
+
method = "do_#{input["method"].downcase}"
|
160
|
+
args = input["parameters"] || {}
|
161
|
+
h.result = false
|
162
|
+
h.log = []
|
163
|
+
if h.respond_to?(method.to_sym) == false
|
164
|
+
res = false
|
165
|
+
else
|
166
|
+
h.send(method,args)
|
177
167
|
end
|
168
|
+
writer.puts ({:result => h.result, :log => h.log}).to_json
|
169
|
+
rescue JSON::ParserError
|
170
|
+
writer.puts ({:result => false, :log => "Cannot parse input #{line}"}).to_json
|
171
|
+
next
|
178
172
|
end
|
179
|
-
|
180
|
-
end
|
173
|
+
end
|
181
174
|
end
|
182
175
|
end
|
183
176
|
|
184
177
|
class Pipe < Connector
|
185
178
|
def run
|
186
|
-
|
179
|
+
begin
|
180
|
+
mainloop STDIN,STDOUT
|
181
|
+
rescue SystemExit, Interrupt
|
182
|
+
end
|
187
183
|
end
|
188
184
|
end
|
189
185
|
|
190
186
|
class Unix < Connector
|
191
187
|
def run
|
192
|
-
@path = options[:path] || "/tmp/remotebackend.sock"
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
188
|
+
@path = @options[:path] || "/tmp/remotebackend.sock"
|
189
|
+
begin
|
190
|
+
Socket.unix_server_loop(@path) do |sock, client_addrinfo|
|
191
|
+
begin
|
192
|
+
mainloop sock, sock
|
193
|
+
ensure
|
194
|
+
sock.close
|
195
|
+
end
|
198
196
|
end
|
197
|
+
rescue SystemExit, Interrupt
|
199
198
|
end
|
200
199
|
end
|
201
200
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdns-remotebackend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-07-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &6941400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *6941400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &6940980 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *6940980
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yard
|
38
|
-
requirement: &
|
38
|
+
requirement: &6940560 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *6940560
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: redcarpet
|
49
|
-
requirement: &
|
49
|
+
requirement: &6940140 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *6940140
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: json
|
60
|
-
requirement: &
|
60
|
+
requirement: &6939720 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *6939720
|
69
69
|
description: This gem provides a base class and helpers for writing remotebackend
|
70
70
|
servers for pipe/unix/. It is intended to make using remotebackend easier. For http
|
71
71
|
support, see pdns-remotebackend-http.
|