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 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: