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 CHANGED
@@ -93,3 +93,7 @@
93
93
  * Parser fix: TXT, SRV, MX parse algorithm rewrited
94
94
  * Parser rules definition optimized
95
95
  * test zone contents updated
96
+
97
+ === 0.3.15 / 2013-03-06
98
+
99
+ * Parser fix: \n causes parsing error
data/lib/bind9mgr.rb CHANGED
@@ -6,7 +6,7 @@ require File.join( File.dirname(__FILE__), 'resource_record' )
6
6
  require File.join( File.dirname(__FILE__), 'parser' )
7
7
 
8
8
  module Bind9mgr
9
- VERSION = '0.3.14'
9
+ VERSION = '0.3.15'
10
10
 
11
11
  ZONES_BIND_SUBDIR = 'primary'
12
12
 
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
- [ [:origin, :last_token_in_a_row, Proc.new{ |t| set_origin t }],
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| rdata = [t] + @tokens.shift(@tokens.index(')'))
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] != '(') && (@tokens.first != ')')
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.gsub(/;.*$/, '').split(/[ \t\r]/)
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{$ORIGIN cloud.ru.
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bind9mgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.14
4
+ version: 0.3.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: