FormValidator::Simple::Plugin::NetAddr::IP - IP Address validation


FormValidator-Simple-Plugin-NetAddr-IP documentation Contained in the FormValidator-Simple-Plugin-NetAddr-IP distribution.

Index


Code Index:

NAME

Top

FormValidator::Simple::Plugin::NetAddr::IP - IP Address validation

SYNOPSIS

Top

  use FormValidator::Simple qw/NetAddr::IP/;

  my $result = FormValidator::Simple->check( $req => [
      ip       => [ 'NOT_BLANK', 'NETADDR_IPV4HOST' ],
  ] );

DESCRIPTION

Top

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.

VALIDATION COMMANDS

Top

NETADDR_IP4HOST

Checks for a single IPv4 address. Address supplied must be in dotted quad or CIDR format. Does not accept DNS names.

NETADDR_IP4NET

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.

SEE ALSO

Top

FormValidator::Simple

NetAddr::IP

Agent::TCLI::Package::Net for which this module was needed.

AUTHOR

Top

Eric Hacker <hacker at cpan.org>

BUGS

Top

None known at this time.

LICENSE

Top

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!