bind9mgr 0.3.14 → 0.3.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|