#!/usr/bin/perl use CGI qw(:standard); use myPOP3; if(param('tb')) {printToolbar();exit;} checkLogin(); $account = param("a") || err(); $p_act = param("act") || ""; $p1 = '?'; $pwd = param("pwd") || $p1; readPref('./db'); if(($PREF[2] eq $p1)) { if($pwd eq $p1) { askPwd(); exit; } else { $PREF[2] = $pwd; } } print "Content-type: text/html\n\n"; print "\n"; printScript2(); print "\n
\n"; deleteMsg($p_act) if ($p_act =~ /^del\|/); $pop = myPOP3->new($PREF[0]) || print "Connection error.\n"; $count = $pop->login($PREF[1], $PREF[2]); $scr = ''; if(!$count) {print "Login incorrect.\n";} else{ $count = $count * 1; print " Messages: $count\n"; if($count>0){ $tmp = $pop->list(); %sizes = %$tmp; print "\n"; print "\n"; for($i=1;$i<=$count;$i++){ $m = $pop->top($i); %HEAD = undef; &parseHeader($m); local($subj) = $HEAD{'Subject'}; if(length($subj)>50){ $subj = substr($subj,0,40) . '...'; } local($mdate) = formatDate($HEAD{'Date'}); $_ = $HEAD{'From'}; local($mfrom) = $_; $mfrom = $1 if /(.*)\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; } print "
 $scrSubjectSizeFromDate
$matt$subj" . $sizes{$i} . "" . encodeHTML($mfrom) . "$mdate
\n"; } } $pop->quit; print ""; print ""; print "
"; print '
'; print "
"; print "\n
\n\n"; exit; #---------------------------------------------------- sub printToolbar(){ print "Content-type: text/html\n\n"; print "\n"; printScript(); print<
Send messageReply messageForward messageDelete message
TOOL } sub printScript(){ print<<__END; __END } sub printScript2(){ print<<__END; __END } sub deleteMsg(){ return if !@_; local($pop, $count, @s); $pop = myPOP3->new($PREF[0]); $count = $pop->login($PREF[1], $PREF[2]); if($count){ @s = split(/\|/, $_[0]); foreach (@s){ $pop->delete($1) if /^(\d+)$/; } } $pop->quit; } sub parseHeader(){ local($a)=$_[0]; local($prev)=undef; foreach (@$a){ if ( /^([a-zA-Z-]+)\:\s*(.*)/ ) {$HEAD{$1} = $2; $prev=$1;} elsif($prev){ if (/^\s*(.+)/) {$HEAD{$prev} .= "\n$1";} else {$prev=undef;} } } } sub formatDate(){ return "" if !$_[0]; $_[0] =~ s/^(\D*)//; $_[0] = substr($_[0], 0, rindex($_[0], ':')); return $_[0]; } sub encodeHTML(){ $_[0] ||= ""; $_[0] =~ s//>/g; return $_[0]; } sub checkLogin(){ $_ = $ENV{'HTTP_COOKIE'}; $user = $1 if /user=(\w+)/; err('Access denied.') if !$user; } sub readPref(){ err() if !@_; open(PAGE, "$_[0]/$user.dbx") || err('Error open DB.'); local(@db) = ; close(PAGE); local($i)=1; foreach (@db){ if ($i eq $account) {@PREF=split(/\|/, $_);last;} $i++; } err() if !@PREF; } sub err(){ $_[0] ||= " "; print "Content-type: text/html\n\n"; print " $_[0]"; exit; } sub askPwd(){ print<<__END2; Content-type: text/html
Password:
__END2 }