#!/usr/bin/perl --
$DEBUG=1;
#print "\r\n\r\n\r\n";
#foreach $key (keys %ENV){
# print "$key \t $ENV{$key}\n";
#}
$TOTVARS=0; # just a counter
use DB_File;
use Fcntl;
require POSIX;
$loc=POSIX::setlocale(&POSIX::LC_CTYPE,"ISO8859-7");
use locale;
select STDOUT;
$|=1;
tie %DOMHASH,"DB_File","domains.db";
print "Content-type: text/html\r\n\r\n";
print "
GR Domain Search Engine Angelos Karageorgiou\n";
print "\n";
read(STDIN,$buff,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buff);
foreach $pair (@pairs)
{
($var, $val) = split(/=/, $pair);
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$var} = $val;
}
logme();
$FORM{'domain'} =~ s/^www\.//;
if (
( ! $FORM{'domain'} ) ||
( $FORM{'domain'} eq "." )
) {
print " Naughty
\n";
form();
exit(1);
}
$count=0;
#print " Looking for $FORM{'domain'}
\n";
if ( $DOMHASH{$FORM{'domain'}} ) {
$count++;
print "Exact match found
\n";
print " | DOMAIN | IP address | Software | Name Server(s) |
\n";
$dom=$FORM{'domain'};
process();
} else {
print "Domain $FORM{'domain'} not found , looking for similar entries ..
\n";
print " | DOMAIN | IP address | Software | Name Server(s) |
\n";
foreach $dom (sort (keys %DOMHASH)){
if ( $dom =~ /$FORM{'domain'}/gi ) {
$count++;
process();
}
}
}
print "
\n";
untie %DOMHASH;
if ( $count <=0 ) {
print "Domain: $FORM{'domain'} Not found
\n";
}
print "
[ALARM] denotes that either the web server or its DNS server did not respond in the defined TIMEOUT period. Usually 11 secs
Unresolved denotes that the web server's name did not resolve to an ip adress, i.e. the name is registered only
";
form();
1;
###############################################################################
sub form{
$plain=$FORM{'domain'};
$plain =~ s/\.gr$//;
print "
Please specify another domain
\n";
print "\n";
print "
Back to the .GR stats page \n";
}
###############################################################################
sub process(){
($ip,$software,$rest)=split(':',$DOMHASH{$dom});
if ( $ip =~ /Unresolved/i) {
$ref=$dom;
}else {
$ref="$dom";
}
print "| $ref | ";
#print "
$DOMHASH{$dom}
\n";
print "$ip | $software | ";
@servers=split(',', $rest);
foreach $key (@servers) {
print "$key \n";
}
}
###############################################################################
sub logme() {
open(OUT,">>dns_search.log") || die "cannot create file";
print OUT $ENV{'REMOTE_ADDR'} . "\t";
print OUT $ENV{'REMOTE_HOST'} . "\t";
print OUT $ENV{'HTTP_X_FORWARDED_FOR'} . "\t";
print OUT $FORM{'domain'} . "\t";
print OUT $ENV{'HTTP_REFERER'} . "\n";
close(OUT);
}
|