bind9mgr 0.3.14 → 0.3.15
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/History.txt +4 -0
- data/lib/bind9mgr.rb +1 -1
- data/lib/parser.rb +23 -7
- data/spec/parser_spec.rb +4 -1
- metadata +1 -1
data/History.txt
CHANGED
data/lib/bind9mgr.rb
CHANGED
data/lib/parser.rb
CHANGED
@@ -18,7 +18,9 @@ module Bind9mgr
|
|
18
18
|
|
19
19
|
@STATE_RULES =
|
20
20
|
# [current_state, target_state, proc to perform(token will be passe in)
|
21
|
-
[ [:
|
21
|
+
[ [:start, :origin, Proc.new{ |t| t == '$ORIGIN' }],
|
22
|
+
[:start, :ttl, Proc.new{ |t| t == '$TTL' }],
|
23
|
+
[:origin, :last_token_in_a_row, Proc.new{ |t| set_origin t }],
|
22
24
|
[:ttl, :last_token_in_a_row, Proc.new{ |t| set_ttl t }],
|
23
25
|
[:last_token_in_a_row, :start, Proc.new{ |t| t == "\n" ? true : false }],
|
24
26
|
[:owner, :rttl, Proc.new{ |t| t.match(/^\d+$/) ? update_last_rr(nil, t, nil, nil, nil) : false }],
|
@@ -39,14 +41,13 @@ module Bind9mgr
|
|
39
41
|
[:start, :type, Proc.new{ |t| TYPES.include?(t) ? add_rr(nil, nil, nil, t, nil) : false }],
|
40
42
|
[:start, :klass, Proc.new{ |t| KLASSES.include?(t) ? add_rr(nil, nil, t, nil, nil) : false }],
|
41
43
|
[:start, :rttl, Proc.new{ |t| t.match(/^\d+$/) ? add_rr(nil, t, nil, nil, nil) : false }],
|
42
|
-
[:start, :origin, Proc.new{ |t| t == '$ORIGIN' }],
|
43
|
-
[:start, :ttl, Proc.new{ |t| t == '$TTL' }],
|
44
44
|
[:start, :srv, @SHARED_RULES[:srv]],
|
45
45
|
[:start, :txt, @SHARED_RULES[:txt]],
|
46
46
|
[:start, :owner, Proc.new{ |t| add_rr(t, nil, nil, nil, nil) }],
|
47
|
-
[:soa, :last_token_in_a_row, Proc.new{ |t|
|
47
|
+
[:soa, :last_token_in_a_row, Proc.new{ |t|
|
48
|
+
rdata = [t] + @tokens.shift(@tokens.index(')'))
|
48
49
|
rdata.select!{|tt| tt != "\n" }
|
49
|
-
raise ParserError, "Zone parsing error: parentices expected in SOA record.\n#{@content}" if (rdata[2] != '(')
|
50
|
+
raise ParserError, "Zone parsing error: parentices expected in SOA record.\n#{@content}" if (rdata[2] != '(') || (@tokens.first != ')')
|
50
51
|
rdata.delete_at(2)
|
51
52
|
@result.options[:support_email] = rdata[1]
|
52
53
|
@result.options[:serial] = rdata[2]
|
@@ -98,9 +99,14 @@ module Bind9mgr
|
|
98
99
|
private
|
99
100
|
|
100
101
|
def tokenize str
|
102
|
+
str.gsub!(/;.*$/, '')
|
101
103
|
str.squeeze!("\n\t\r")
|
102
|
-
dirty_tokens = str.
|
104
|
+
dirty_tokens = str.split(/[ \t\r]/)
|
105
|
+
|
106
|
+
# puts "-----------------------------------"
|
107
|
+
# puts dirty_tokens[0].inspect
|
103
108
|
|
109
|
+
|
104
110
|
puts dirty_tokens.inspect
|
105
111
|
|
106
112
|
tokens = []
|
@@ -125,7 +131,17 @@ module Bind9mgr
|
|
125
131
|
|
126
132
|
end
|
127
133
|
|
128
|
-
tokens.select{|s|s.length > 0}
|
134
|
+
tokens.select!{|s|s.length > 0}
|
135
|
+
|
136
|
+
if tokens[0] == "\n"
|
137
|
+
tokens.shift
|
138
|
+
end
|
139
|
+
|
140
|
+
# puts "--------------------2222222222222---------------"
|
141
|
+
# puts tokens[0].inspect
|
142
|
+
|
143
|
+
|
144
|
+
tokens
|
129
145
|
end
|
130
146
|
|
131
147
|
def get_options
|
data/spec/parser_spec.rb
CHANGED
@@ -4,7 +4,10 @@ describe Bind9mgr::Parser do
|
|
4
4
|
|
5
5
|
# first rrs are used by index at some tests so dont change their sequence
|
6
6
|
let(:test_zone) do
|
7
|
-
%Q{
|
7
|
+
%Q{; File is under automatic control. Edit with caution.
|
8
|
+
;;; Zone qwertyy.ru. ;;;
|
9
|
+
|
10
|
+
$ORIGIN cloud.ru.
|
8
11
|
$TTL 86400 ; 1 day
|
9
12
|
@ IN SOA cloud.ru. root.cloud.ru. (
|
10
13
|
2011083002 ; serial
|