MT#5967 Perform trusted source ip/net validation.

agranig/dummydel
Andreas Granig 12 years ago
parent 5be3f87cad
commit f7de0b6564

@ -1,10 +1,12 @@
package NGCP::Panel::Form::Subscriber::TrustedSource;
use Sipwise::Base;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use Data::Validate::IP qw/is_ipv4 is_ipv6/;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
@ -54,5 +56,26 @@ has_block 'actions' => (
render_list => [qw/save/],
);
sub validate_src_ip {
my ($self, $field) = @_;
my ($ip, $net) = split /\//, $field->value;
if(is_ipv4($ip)) {
return 1 unless(defined $net);
unless($net->is_int && $net >= 0 && $net <= 32) {
$field->add_error("Invalid IPv4 network portion, must be 0 <= net <= 32");
}
} elsif(is_ipv6($ip)) {
return 1 unless(defined $net);
unless($net->is_int && $net >= 0 && $net <= 128) {
$field->add_error("Invalid IPv4 network portion, must be 0 <= net <= 128");
}
} else {
$field->add_error("Invalid IPv4 or IPv6 address, must be valid address with optional /net suffix.");
}
return 1;
}
1;
# vim: set tabstop=4 expandtab:

Loading…
Cancel
Save