]> git.donarmstrong.com Git - infobot.git/blob - src/Modules/dns.pl
415444d5535a41b78efa213e24fa13a2c688e186
[infobot.git] / src / Modules / dns.pl
1 #
2 #     dns.pl: host lookups
3 #     Author: Tim Riker <Tim@Rikers.org>
4 #     Source: extracted from UserExtra.pl
5 #  Licensing: Artistic License (as perl itself)
6 #    Version: v0.1
7 #
8 #  Copyright (c) 2005 Tim Riker
9 #
10
11 package dns;
12
13 use strict;
14
15 sub dns::dns {
16         my $dns = shift;
17         my($match, $x, $y, $result, $pid);
18
19         if ($dns =~ /(\d+\.\d+\.\d+\.\d+)/) {
20                 use Socket;
21
22                 &::status("DNS query by IP address: $dns");
23
24                 $y = pack('C4', split(/\./, $dns));
25                 $x = (gethostbyaddr($y, &AF_INET));
26
27                 if ($x !~ /^\s*$/) {
28                         $result = "$dns is $x" unless ($x =~ /^\s*$/);
29                 } else {
30                         $result = "I can't find the address $dns in DNS";
31                 }
32
33         } else {
34
35                 &::status("DNS query by name: $dns");
36                 $x = join('.',unpack('C4',(gethostbyname($dns))[4]));
37
38                 if ($x !~ /^\s*$/) {
39                         $result = "$dns is $x";
40                 } else {
41                         $result = "I can't find $dns in DNS";
42                 }
43         }
44
45         return($result);
46 }
47
48 sub dns::query {
49         &::performStrictReply(&dns(@_));
50         return;
51 }
52
53 1;
54 # vim: ts=2 sw=2