| FormValidator-Simple-Plugin-NetAddr-IP documentation | Contained in the FormValidator-Simple-Plugin-NetAddr-IP distribution. |
FormValidator::Simple::Plugin::NetAddr::IP - IP Address validation
use FormValidator::Simple qw/NetAddr::IP/;
my $result = FormValidator::Simple->check( $req => [
ip => [ 'NOT_BLANK', 'NETADDR_IPV4HOST' ],
] );
This module adds IP Address validation commands to FormValidator::Simple. It uses NetAddr::IP to do the validation. There are other modules that may do IP Address validation with less overhead, but NetAddr::IP was already being used in the project that this was written for.
Checks for a single IPv4 address. Address supplied must be in dotted quad or CIDR format. Does not accept DNS names.
Checks for a IPv4 network block. Address supplied must be in dotted quad or CIDR format. Does not accept DNS names. A /32 is accepted as a network.
Eric Hacker <hacker at cpan.org>
None known at this time.
Copyright (c) 2007, Alcatel Lucent, All rights resevred.
This package is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
| FormValidator-Simple-Plugin-NetAddr-IP documentation | Contained in the FormValidator-Simple-Plugin-NetAddr-IP distribution. |
package FormValidator::Simple::Plugin::NetAddr::IP; use strict; use NetAddr::IP; use FormValidator::Simple::Constants; our $VERSION = '0.01'; our @CARP_NOT = qw(NetAddr::IP);
sub NETADDR_IP4HOST { my ($self, $params, $args) = @_; my $data = $params->[0]; my $ip = $self->_getaddr($data); return FALSE unless ( ref($ip) eq 'NetAddr::IP' ); return ( $ip->version == 4 && $ip->masklen == 32 ) ? TRUE : FALSE; }
sub NETADDR_IP4NET { my ($self, $params, $args) = @_; my $data = $params->[0]; my $ip = $self->_getaddr($data); return FALSE unless ( ref($ip) eq 'NetAddr::IP' ); return ( $ip->version == 4 && $ip->masklen <= 32 ) ? TRUE : FALSE; } sub _getaddr { my ($self, $data) = @_; # Do not allow DNS resolution or partial addresses # even though NetAddr would do it. # Speeds things up quite a bit. return FALSE if $data =~ qr([\\a-zA-Z]); return FALSE unless $data =~ qr(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}); my $ip = NetAddr::IP->new($data); return ($ip); } 1; #__END__ # Below is stub documentation for your module. You'd better edit it!