diff options
-rw-r--r-- | plugins-scripts/t/utils.t | 21 | ||||
-rw-r--r-- | plugins-scripts/utils.pm.in | 11 |
2 files changed, 27 insertions, 5 deletions
diff --git a/plugins-scripts/t/utils.t b/plugins-scripts/t/utils.t index 469988c9..4df5606b 100644 --- a/plugins-scripts/t/utils.t +++ b/plugins-scripts/t/utils.t @@ -4,8 +4,10 @@ # # $Id$ # +# Run with perl t/utils.t -#use strict; +use warnings; +use strict; use Test::More; use NPTest; @@ -19,16 +21,29 @@ my $hostname_checks = { "host-hyphened.com" => 1, "rubbish" => 1, "-start.com" => 0, - "endsindot." => 0, + "nonfqdn-but-endsindot." => 1, + "fqdn.and.endsindot." => 1, "lots.of.dots.dot.org" => 1, + "endingwithdoubledots.." => 0, + "toomany..dots" => 0, + ".start.with.dot" => 0, "10.20.30.40" => 1, "10.20.30.40.50" => 0, "10.20.30" => 0, + "10.20.30.40." => 1, # This is considered a hostname because of trailing dot. It probably won't exist though... + "888." => 1, # This is because it could be a domain + "host.888." => 1, + "where.did.that.!.come.from." => 0, + "no.underscores_.com" => 0, }; -plan tests => scalar keys %$hostname_checks; +plan tests => ((scalar keys %$hostname_checks) + 4); foreach my $h (sort keys %$hostname_checks) { is (utils::is_hostname($h), $hostname_checks->{$h}, "$h should return ".$hostname_checks->{$h}); } +is(utils::is_hostname(), 0, "No parameter errors"); +is(utils::is_hostname(""), 0, "Empty string errors"); +is(utils::is_hostname(0), 0, "0 also errors"); +is(utils::is_hostname(1), 0, "1 also errors"); diff --git a/plugins-scripts/utils.pm.in b/plugins-scripts/utils.pm.in index e2458359..8449b544 100644 --- a/plugins-scripts/utils.pm.in +++ b/plugins-scripts/utils.pm.in @@ -53,9 +53,16 @@ sub usage { sub is_hostname { my $host1 = shift; - if ($host1 && $host1 =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z0-9][-a-zA-Z0-9]+(\.[a-zA-Z0-9][-a-zA-Z0-9]+)*)$/) { + return 0 unless defined $host1; + if ($host1 =~ m/^[\d\.]+$/ && $host1 !~ /\.$/) { + if ($host1 =~ m/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) { + return 1; + } else { + return 0; + } + } elsif ($host1 =~ m/^[a-zA-Z0-9][-a-zA-Z0-9]+(\.[a-zA-Z0-9][-a-zA-Z0-9]+)*\.?$/) { return 1; - }else{ + } else { return 0; } } |