version 0.0.0 looks good
git-svn-id: svn://127.0.0.1/Perl/DNS::Record::Check/trunk@160 0c1c3402-1be1-de11-8092-0022686faf23
このコミットが含まれているのは:
コミット
d12754068e
|
@ -1,5 +1,4 @@
|
|||
Revision history for DNS-Record-Check
|
||||
|
||||
0.01 Date/time
|
||||
First version, released on an unsuspecting world.
|
||||
|
||||
0.0.0 2010-05-15/
|
||||
-Initial release.
|
||||
|
|
|
@ -3,17 +3,17 @@ use warnings;
|
|||
use ExtUtils::MakeMaker;
|
||||
|
||||
WriteMakefile(
|
||||
NAME => 'DNS::Record::Check',
|
||||
AUTHOR => q{Zane C. Bowers <vvelox@vvelox.net>},
|
||||
VERSION_FROM => 'lib/DNS/Record/Check.pm',
|
||||
ABSTRACT_FROM => 'lib/DNS/Record/Check.pm',
|
||||
($ExtUtils::MakeMaker::VERSION >= 6.3002
|
||||
? ('LICENSE'=> 'perl')
|
||||
: ()),
|
||||
PL_FILES => {},
|
||||
PREREQ_PM => {
|
||||
'Test::More' => 0,
|
||||
},
|
||||
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
|
||||
clean => { FILES => 'DNS-Record-Check-*' },
|
||||
);
|
||||
NAME => 'DNS::Record::Check',
|
||||
AUTHOR => q{Zane C. Bowers <vvelox@vvelox.net>},
|
||||
VERSION_FROM => 'lib/DNS/Record/Check.pm',
|
||||
ABSTRACT_FROM => 'lib/DNS/Record/Check.pm',
|
||||
($ExtUtils::MakeMaker::VERSION >= 6.3002
|
||||
? ('LICENSE'=> 'perl')
|
||||
: ()),
|
||||
PL_FILES => {},
|
||||
PREREQ_PM => {
|
||||
'Test::More' => 0,
|
||||
},
|
||||
dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
|
||||
clean => { FILES => 'DNS-Record-Check-*' },
|
||||
);
|
||||
|
|
|
@ -1,16 +1,7 @@
|
|||
DNS-Record-Check
|
||||
|
||||
The README is used to introduce the module and provide instructions on
|
||||
how to install the module, any machine dependencies it may have (for
|
||||
example C compilers and installed libraries) and any other information
|
||||
that should be provided before the module is installed.
|
||||
|
||||
A README file is required for CPAN modules since CPAN extracts the README
|
||||
file from a module distribution so that people browsing the archive
|
||||
can use it to get an idea of the module's uses. It is usually a good idea
|
||||
to provide version information here so that people can decide whether
|
||||
fixes for the module are worth downloading.
|
||||
|
||||
Provides various methods for checking various DNS
|
||||
records.
|
||||
|
||||
INSTALLATION
|
||||
|
||||
|
@ -42,6 +33,9 @@ You can also look for information at:
|
|||
Search CPAN
|
||||
http://search.cpan.org/dist/DNS-Record-Check/
|
||||
|
||||
SVN info
|
||||
http://eesdp.org/svnweb/index.cgi/pubsvn/browse/Perl/DNS%3A%3ARecord%3A%3ACheck
|
||||
|
||||
|
||||
LICENSE AND COPYRIGHT
|
||||
|
||||
|
|
|
@ -5,47 +5,474 @@ use strict;
|
|||
|
||||
=head1 NAME
|
||||
|
||||
DNS::Record::Check - The great new DNS::Record::Check!
|
||||
DNS::Record::Check - Provides checks for some common DNS records.
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Version 0.01
|
||||
Version 0.0.0
|
||||
|
||||
=cut
|
||||
|
||||
our $VERSION = '0.01';
|
||||
our $VERSION = '0.0.0';
|
||||
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
Quick summary of what the module does.
|
||||
|
||||
Perhaps a little code snippet.
|
||||
|
||||
use DNS::Record::Check;
|
||||
|
||||
my $foo = DNS::Record::Check->new();
|
||||
...
|
||||
|
||||
=head1 EXPORT
|
||||
|
||||
A list of functions that can be exported. You can delete this section
|
||||
if you don't export anything, such as for a purely object-oriented module.
|
||||
|
||||
my $dnsrc=DNS::Record::Check->new;
|
||||
|
||||
if($dnsrc->A($recordValue)){
|
||||
warn($recordValue.' is not a valid a record');
|
||||
}
|
||||
|
||||
=head1 SUBROUTINES/METHODS
|
||||
|
||||
=head2 function1
|
||||
=head2 new
|
||||
|
||||
This initiates the object.
|
||||
|
||||
$dnsrc=DNS::Record::Check->new;
|
||||
|
||||
=cut
|
||||
|
||||
sub function1 {
|
||||
sub new{
|
||||
my $self={};
|
||||
bless $self;
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
=head2 function2
|
||||
=head2 A
|
||||
|
||||
Checks if a A record value is valid.
|
||||
|
||||
my $return=$dnsrc->A($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Not defined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Contains non-numeric or period characters.
|
||||
|
||||
=head4 3
|
||||
|
||||
It has less than four numbers.
|
||||
|
||||
=head4 4
|
||||
|
||||
It has more than four numbers.
|
||||
|
||||
=head4 5
|
||||
|
||||
The number is 0.
|
||||
|
||||
=head4 6
|
||||
|
||||
One of the numbers is greater than 255.
|
||||
|
||||
=head4 7
|
||||
|
||||
The fourth number is zero.
|
||||
|
||||
=cut
|
||||
|
||||
sub function2 {
|
||||
sub A{
|
||||
my $record=$_[1];
|
||||
|
||||
#makes sure the record is defined
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#make sure it does no
|
||||
if (!($record =~ /^[0123456789\.]*$/)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
#checks each byte
|
||||
my @recordSplit=split(/\./, $record);
|
||||
my $int=0;
|
||||
while (defined($recordSplit[$int])) {
|
||||
|
||||
#if we are at 4, it means there are 5 bytes
|
||||
if ($recordSplit[$int] == 4) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
#check if the first byte is equal to zero
|
||||
if ($int == 0) {
|
||||
if ($recordSplit[$int] == 0) {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
#makes sure the byde is not larger than 255
|
||||
if ($recordSplit[$int] > 255) {
|
||||
return 6;
|
||||
}
|
||||
|
||||
#check if the last number is zero
|
||||
if ($int == 3) {
|
||||
if ($recordSplit[$int] == 0) {
|
||||
return 7;
|
||||
}
|
||||
}
|
||||
|
||||
$int++;
|
||||
}
|
||||
|
||||
if ($int < 4) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 AAAA
|
||||
|
||||
Checks if a AAAA record value is valid.
|
||||
|
||||
my $return=$dnsrc->AAAA($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Not defined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Found characters that do not match a AAAA record.
|
||||
|
||||
=head4 3
|
||||
|
||||
Matched more than two semi-colons in a row.
|
||||
|
||||
=cut
|
||||
|
||||
sub AAAA{
|
||||
my $record=$_[1];
|
||||
|
||||
#makes sure the record is defined
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#make sure it does no
|
||||
if (!($record =~ /^[0123456789AaBbCcDdEeFf\:]*$/)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
#make sure it does not have more than two : in a row
|
||||
if ($record =~ /\:\:\:/) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 CNAME
|
||||
|
||||
Checks if a CNAME record value is valid.
|
||||
|
||||
my $return=$dnsrc->CNAME($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Not defined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Non-alphanumeric/period characters found.
|
||||
|
||||
=head4 3
|
||||
|
||||
The host name begins with a period.
|
||||
|
||||
=cut
|
||||
|
||||
sub CNAME{
|
||||
my $record=$_[1];
|
||||
|
||||
#makes sure the record is defined
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#makes sure no Non-alphanumeric/period characters found.
|
||||
if (!($record=~/^[[:alnum:]\.]*$/)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
#makes sure it does not begin with a period
|
||||
if ($record =~ /^\./) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 HINFO
|
||||
|
||||
Check a HINFO record value.
|
||||
|
||||
my $return=$dnsrc->HINFO($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Undefined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Does not start with a leter.
|
||||
|
||||
=head4 3
|
||||
|
||||
Contains values outside of capital letters, numbers, forwdward
|
||||
slash, or a hyphen.
|
||||
|
||||
=head4 4
|
||||
|
||||
Does not end in either a capital letter or number.
|
||||
|
||||
=cut
|
||||
|
||||
sub HINFO{
|
||||
my $record=$_[1];
|
||||
|
||||
#makes sure the record is defined
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#make sure it starts with a capital letter
|
||||
if (!($record =~ /^[A-Z]/)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
#makes sure it only contains the required characters
|
||||
if (!($record =~ /^[A-Z0-1\-\/]$/)) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
#makes sure it ends in either a number or letter
|
||||
if (!($record =~ /[A-Z0-1]$/)) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 MX
|
||||
|
||||
The MX value is not valid.
|
||||
|
||||
my $return=$dnsrc->MX($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Undefined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Non-numeric priority.
|
||||
|
||||
=head4 3
|
||||
|
||||
No hostname.
|
||||
|
||||
=head4 4
|
||||
|
||||
The hostname is not a valid domain name.
|
||||
|
||||
=head4 5
|
||||
|
||||
Additional information was found after a third space.
|
||||
|
||||
=cut
|
||||
|
||||
sub MX{
|
||||
my $record=$_[1];
|
||||
|
||||
#makes sure the record is defined
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#splits the record
|
||||
my @recordSplit=split(/\ /, $record);
|
||||
|
||||
#the priority is not numeric
|
||||
if (!($recordSplit[0] =~ /^[[:digit:]]$/)) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
#no host name
|
||||
if (!defined($recordSplit[1])) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
#the CNAME check just checks if it is a valid host name or not
|
||||
if ($_[0]->CNAME($recordSplit[1])) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
#has extra info
|
||||
if (defined($recordSplit[2])) {
|
||||
return 5;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head2 NS
|
||||
|
||||
Checks if a NS record value is valid.
|
||||
|
||||
my $return=$dnsrc->NS($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
See the return value listing for CNAME.
|
||||
|
||||
=cut
|
||||
|
||||
sub NS{
|
||||
my $record=$_[1];
|
||||
|
||||
return $_[0]->CNAME($record);
|
||||
}
|
||||
|
||||
=head2 PTR
|
||||
|
||||
Checks if a PTR record value is valid.
|
||||
|
||||
my $return=$dnsrc->PTR($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
See the return value listing for CNAME.
|
||||
|
||||
=cut
|
||||
|
||||
sub PTR{
|
||||
my $record=$_[1];
|
||||
|
||||
return $_[0]->CNAME($record);
|
||||
}
|
||||
|
||||
=head2 RP
|
||||
|
||||
Checks if a RP record value is valid.
|
||||
|
||||
my $return=$dnsrc->RP($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Undefined.
|
||||
|
||||
=head4 2
|
||||
|
||||
Invalid email address.
|
||||
|
||||
=head4 3
|
||||
|
||||
Invalid hostname in email address.
|
||||
|
||||
=cut
|
||||
|
||||
sub RP{
|
||||
my $record=$_[1];
|
||||
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
my @recordSplit=split(/\@/, $record);
|
||||
|
||||
if (defined($recordSplit[2])) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (!defined($recordSplit[1])) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if ($recordSplit[0] =~ /[\!\#\$\%\^\&\*\(\)\;\:\<\>\[\]]/) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (!$_[0]->CNAME($recordSplit[1])) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
=head2 TXT
|
||||
|
||||
Checks if a TXT record value is valid.
|
||||
|
||||
my $return=$dnsrc->TXT($value);
|
||||
|
||||
=head3 Return Values
|
||||
|
||||
=head4 0
|
||||
|
||||
Valid.
|
||||
|
||||
=head4 1
|
||||
|
||||
Undefined.
|
||||
|
||||
=cut
|
||||
|
||||
sub TXT{
|
||||
my $record=$_[1];
|
||||
|
||||
if (!defined($record)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
=head1 AUTHOR
|
||||
|
@ -88,6 +515,10 @@ L<http://cpanratings.perl.org/d/DNS-Record-Check>
|
|||
|
||||
L<http://search.cpan.org/dist/DNS-Record-Check/>
|
||||
|
||||
=item * SVN Repo
|
||||
|
||||
L<http://eesdp.org/svnweb/index.cgi/pubsvn/browse/Perl/DNS%3A%3ARecord%3A%3ACheck>
|
||||
|
||||
=back
|
||||
|
||||
|
||||
|
|
読み込み中…
新しいイシューから参照