#!/usr/bin/perl print "Content-type:text/html\n\n"; open(LOG,">>logi") or die "Nie moge otworzyc logow $!\n"; # maksymalna ilosc trafien ktora mozemy przyjac $MAX = 20; # patterny ktore odrzucamy na wstepie $bad = "(root|adm|mail|games|operator|news|halt|daemon|shutdown|Nobody|nobody|gopher)"; # katalog i plik, ktory w domowym katalogu robi za homepage $wwwdir = "/public_html/index.html"; $HOST = "wizard.ae.krakow.pl"; # procedury sub dologging{ print LOG scalar(localtime),"\t"; if ($ENV{REMOTE_IDENT}){ print LOG $ENV{REMOTE_IDENT}; } else { print LOG "unknown"; } print LOG "\@$ENV{REMOTE_ADDR} $ENV{REMOTE_PORT}\t$ENV{SCRIPT_FILENAME} $ENV{QUERY_STRING}\n"; } sub header{ print "\n"; } sub end{ print ""; } sub form { print "Find user "; print "

You can type full name, for example:
Jan Kowalski (jan kowalski will give you the same result)
or you can type only part of it, for example:
Kowal
or even:
walski
Don't use polish letters.

Find user
Name
"; } sub find { $nazwisko = shift @_; while (($login,$passwd,$uid,$gid,$a,$b,$gecos,$dir,$shell) = getpwent){ $gecos =~ s/(.*?),.*/$1/; if ($gecos =~ /.*$nazwisko.*/i){ $wynik[++$#wynik]=$gecos.":".$login."\n"; } } return @wynik; } sub nouser{ header(); print "

No such user.

"; end(); } sub toomany{ header(); print "

Too many hits. Please be more specific.

"; end(); } # szukamy czy user ma homepage sub search { $who = shift @_; chop $who; ($a,$b,$c,$d,$e,$f,$g,$dir) = getpwnam($who); if (-r ($homepage = "$dir"."$wwwdir")){ $r = "YES"; } else{ $r = "no"; } return $r; } #### main program if (!$ENV{QUERY_STRING}){ dologging(); form(); } else { # sa argumenty wiec glowna akcja dologging(); $arg = $ENV{QUERY_STRING}; ($a,$pattern) = split("=",$arg); # if ($pattern =~ /$bad/) { nouser(); exit 0;} $pattern =~ s/\++/ /; if (!$pattern) { nouser(); exit 0;} @result = find($pattern); if (!@result){ nouser(); exit 0; } elsif(@result > $MAX){ toomany(); exit 0; } else{ header(); print ""; print ""; print ""; print ""; print ""; foreach $row (@result){ ($fullname,$username) = split (":",$row); if ($username =~ /$bad/) { next;} $address = "$username\@$HOST"; print ""; print ""; $link = search($username); print ""; } print "

Full name

E-mail address

Home page

$fullname$address$link
"; end(); } }