#!/usr/bin/perl -wT # index.cgi $|=1; use strict; use Mail::POP3Client; use CGI qw(:standard :netscape *table); use CGI::Carp qw(fatalsToBrowser); use Untaint; my $cookie = cookie('WebMail') || 0; my $user = param('username') || 0; my $pass = param('password'); my $server = param('server'); if ((!$user || !$pass || !$server) && !$cookie) { print redirect("pop-login.html"); exit; } if (!$cookie) { $cookie = cookie(-name => 'WebMail', -value => "$user $pass $server", -path => '/' ); print header(-cookie=>$cookie); }else{ print header; ($user, $pass, $server) = split(" ",$cookie); } $server = untaint(qr(.*), $server); $user = untaint(qr(^\w{1,8}$), $user); $pass = untaint(qr(^\w{1,8}$), $pass); system("/bin/rm","-rf","./$user-$server") unless $user !~ /^\w/; my $pop = new Mail::POP3Client(HOST => $server, AUTH_MODE => 'PASS'); $pop->User($user); $pop->Pass($pass); $pop->Connect() || error($pop->Message); my $count = $pop->Count; my %deleted; if (param('delete')) { ($pop->Delete($_) && $deleted{$_}++) foreach (param('mess')); } print start_html({-title=>'Web Email Client Example', -BGCOLOR=>'white'}), p({-align=>'center'}, start_table({-border=>1, -cellpadding=>4, -cellspacing=>4}), Tr, td({-align=>'CENTER',-colspan=>4},[strong("Email Example")]), Tr, th({-align=>'CENTER'},['Delete','From','Subject','Date']), Tr, start_form({-method=>'POST',-action=>'index.cgi'}), hidden({-name=>'delete',-value=>'1'})) ; my $c = 1; for my $i (1..$count-1) { next if exists $deleted{$i}; my @head; foreach($pop->Head($i)) { if(s/^From:\s+//i) { $head[0] = qq(