Leser: 21
virtual('tools/mx_lookup.cgi');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DNS MX Lookup</title> </head> <body bgcolor="#bcc43e" text="#000000" link="#000000" vlink="#fc0000" alink="#fc0000"> <h2>DNS MX Lookup</h2> <p>Mit dieser Anwendung können Sie die Mail Exchanger sowie Namensserver ermitteln.</p> <div align="left"> <table border="0" style="background-color:#bcc43e"> <tr> <td style="padding:0px;text-align:left;"> <form action="$ENV{'SCRIPT_NAME'}" method="get"> <b>Domain eingeben:</b> <input type="text" name="domain" /> <input type="submit" value="Daten Senden" /> </form> </td> </tr> </table> EOFHTML # Hauptfunktion my $domain = param('domain'); if($domain) { if($domain =~ /^([a-zA-Z0-9]{1,}([\.]?|[-]?))*[a-zA-Z0-9]{1,}\.{1}[a-zA-Z]{2,6}$/) { my $res = new Net::DNS::Resolver; my @mx = mx($res,$domain); if(@mx) { print "<b><p>".scalar @mx." Mail Exchanger für Domain $domain gefunden.</b></p>\n\n"; print "<table border=\"0\">\n<tr>\n<td><b>Server</b></td>\n<td><b>IP-Adresse</b></td>\n<td><b>Echter Hostname</b></td>\n<td><b>Preference</b></td>\n</tr>\n"; foreach my $mxr(@mx) { my $server = $mxr->exchange; my $ip = get_ip($res,$server); my $host = gethostbyaddr(inet_aton($ip),AF_INET); my $pref = $mxr->preference; print "<tr>\n"; print "<td>".$server."</td>\n"; print "<td>".$ip."</td>\n"; print "<td>".$host."</td>\n"; print "<td>".$pref."</td>\n"; print "</tr>\n"; } print "</table>\n\n"; } else { print "<p>Für die Domain $domain wurden keine Mail Exchanger gefunden.<br />\n"; print "Grund: <i>".$res->errorstring."</i></p>\n\n"; } my $nsd = $res->query($domain,"NS"); if($nsd) { my @ns = $nsd->answer; @ns = reverse(@ns); print "<b><p>Namensserver der Domain $domain</b>:</p>\n\n"; print "<table border=\"0\">\n<tr>\n<td><b>Server</b></td>\n<td><b>IP-Adresse</b></td>\n<td><b>Echter Hostname</b></td>\n</tr>\n"; foreach my $nsr(@ns) { my $server = $nsr->nsdname; my $ip = get_ip($res,$server); my $host = gethostbyaddr(inet_aton($ip),AF_INET); print "<tr>\n"; print "<td>".$server."</td>\n"; print "<td>".$ip."</td>\n"; print "<td>".$host."</td>\n"; print "</tr>\n"; } print "</table>\n"; } else { print "<p>Für die Domain $domain konnten keine Namensserver ermittelt werden.<br />\n"; print "Grund: <i>".$res->errorstring."</i></p>\n"; } } else { print "<p><b>$domain</b> ist kein gültiger Domainname!</p>\n"; } } else { print "<p> </p>\n"; } print <<"EOFHTML"; </div> </body> EOFHTML print "</html>"; # get_ip() # # Die zu einem Servernamen gehoerende IP-Adresse ermitteln # # Parameter: 1. Net::DNS::Resolver-Objekt # 2. Servername # # Rueckgabe: Je nach Kontext ein Skalar oder eine Liste mit # der oder den IP-Adressen, ansonsten false. sub get_ip { my ($res,$server) = @_; my @answer = $res->query($server,"A")->answer; if(@answer) { if(wantarray) { my @ips; foreach my $answers(@answer) { push(@ips,$answers->address); } return @ips; } return $answer[0]->address; } return; }
Quoteoder das das Ergebnis nicht im neuen Tab geöffnet wird,