spf 0.0.18 → 0.0.19
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/spf/model.rb +17 -4
- data/lib/spf/version.rb +1 -1
- data/spf.gemspec +1 -1
- metadata +1 -1
data/lib/spf/model.rb
CHANGED
@@ -128,6 +128,8 @@ class SPF::Term
|
|
128
128
|
error(SPF::TermIPv4AddressExpectedError.new(
|
129
129
|
"Missing or invalid required IPv4 address in '#{@text}'"))
|
130
130
|
end
|
131
|
+
@ip_address = @parse_text.dup unless @ip_address
|
132
|
+
|
131
133
|
end
|
132
134
|
|
133
135
|
def parse_ipv4_prefix_length(required = false)
|
@@ -151,7 +153,11 @@ class SPF::Term
|
|
151
153
|
def parse_ipv4_network(required = false)
|
152
154
|
self.parse_ipv4_address(required)
|
153
155
|
self.parse_ipv4_prefix_length
|
154
|
-
|
156
|
+
begin
|
157
|
+
@ip_network = IP.new("#{@ip_address}/#{@ipv4_prefix_length}") if @ip_address and @ipv4_prefix_length
|
158
|
+
rescue ArgumentError
|
159
|
+
@ip_network = @ip_address
|
160
|
+
end
|
155
161
|
end
|
156
162
|
|
157
163
|
def parse_ipv6_address(required = false)
|
@@ -161,6 +167,7 @@ class SPF::Term
|
|
161
167
|
error(SPF::TermIPv6AddressExpected.new(
|
162
168
|
"Missing required IPv6 address in '#{@text}'"))
|
163
169
|
end
|
170
|
+
@ip_address = @parse_text.dup unless @ip_address
|
164
171
|
end
|
165
172
|
|
166
173
|
def parse_ipv6_prefix_length(required = false)
|
@@ -184,7 +191,11 @@ class SPF::Term
|
|
184
191
|
def parse_ipv6_network(required = false)
|
185
192
|
self.parse_ipv6_address(required)
|
186
193
|
self.parse_ipv6_prefix_length
|
187
|
-
|
194
|
+
begin
|
195
|
+
@ip_network = IP.new("#{@ip_address}/#{@ipv6_prefix_length}") if @ip_address and @ipv6_prefix_length
|
196
|
+
rescue ArgumentError
|
197
|
+
@ip_network = @ip_address
|
198
|
+
end
|
188
199
|
end
|
189
200
|
|
190
201
|
def parse_ipv4_ipv6_prefix_lengths
|
@@ -429,11 +440,12 @@ class SPF::Mech < SPF::Term
|
|
429
440
|
|
430
441
|
def parse_params(required = true)
|
431
442
|
self.parse_ipv4_network(required)
|
432
|
-
@ip_netblocks << @ip_network
|
443
|
+
@ip_netblocks << @ip_network if IP === @ip_network
|
433
444
|
end
|
434
445
|
|
435
446
|
def params
|
436
447
|
return nil unless @ip_network
|
448
|
+
return @ip_network if String === @ip_network
|
437
449
|
result = @ip_network.to_addr
|
438
450
|
if @ip_network.pfxlen != @default_ipv4_prefix_length
|
439
451
|
result += "/#{@ip_network.pfxlen}"
|
@@ -457,11 +469,12 @@ class SPF::Mech < SPF::Term
|
|
457
469
|
|
458
470
|
def parse_params(required = true)
|
459
471
|
self.parse_ipv6_network(required)
|
460
|
-
@ip_netblocks << @ip_network
|
472
|
+
@ip_netblocks << @ip_network if IP === @ip_network
|
461
473
|
end
|
462
474
|
|
463
475
|
def params
|
464
476
|
return nil unless @ip_network
|
477
|
+
result @ip_network if String === @ip_network
|
465
478
|
params = @ip_network.to_addr
|
466
479
|
params += '/' + @ip_network.pfxlen.to_s if
|
467
480
|
@ip_network.pfxlen != self.default_ipv6_prefix_length
|
data/lib/spf/version.rb
CHANGED
data/spf.gemspec
CHANGED