aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins-scripts/t/utils.t21
-rw-r--r--plugins-scripts/utils.pm.in11
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;
}
}