#!/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 "\n"; $dom=$FORM{'domain'}; process(); } else { print "

Domain $FORM{'domain'} not found , looking for similar entries ..

\n"; print "
DOMAINIP addressSoftwareName Server(s)
\n"; foreach $dom (sort (keys %DOMHASH)){ if ( $dom =~ /$FORM{'domain'}/gi ) { $count++; process(); } } } print "
DOMAINIP addressSoftwareName Server(s)
\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 "\n"; print "\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); }