Hi dude! I have an orrible trouble with this poor cgi: is a client
pop3 web based gateway.The function "connetti()" never been called and
i don't know why!!The functions in the bottom of the script
load,save,restore the state of the session by save the
user,pass,host,id in a file.if you try to execute the script all stop
when you click on the submit button.I'm italian so i apologize for the
bad english.
I hope there is a good soul who help me.
There is the code:
#!/usr/bin/perl -w
use Mail::POP3Client;
use CGI qw(:all);
#use CGIBook::Error;
#use HTML::Template;
local $MAX_FILES =3D 1000;
local $DATA_DIR =3D 'usr/lib/cgi-bin';
my $q =3D new CGI;
my $this_script_name =3D 'popGem.cgi';
my $id =3D get_id($q);
my $action =3D ( $q->param("action") ) || 'start';
my ($q,$id) =3D @_;
my $user_name =3D param('user_name');
my $password =3D param('password');
my $domain_name =3D param('domani_name');
#per ogni messaggio che =E8 presente nella mailbox stampo una riga di
una tabella
#con le informazioni utili: mittente,oggetto,ecc...
my $pop =3D new Mail::POP3Client ( USER =3D> $user_name,
PASSWORD =3D> $password,
HOST =3D> $domain_name,
AUTH_MODE =3D> 'PASS' );
# Loads the current CGI object's default parameters from the saved
state
sub load_state {
my( $q, $id ) =3D @_;
my $saved =3D get_state( $id ) or return;
# Reads a saved CGI object from disk and returns its params as a hash
ref
sub get_state {
my $id =3D shift;
my $session =3D session_filename( $id );
local *FILE;
-e $session or return;
open FILE, $session or die "Cannot open $session: $!";
my $q_saved =3D new CGI( \*FILE ) or
error( $q, "Unable to restore saved state." );
close FILE;
return $q_saved;
}
# Saves the current CGI object to disk
sub save_state {
my $q =3D shift;
my $session =3D session_filename( $id );
local( *FILE, *DIR );
# Avoid DoS attacks by limiting the number of data files
my $num_files =3D 0;
opendir DIR, $DATA_DIR;
$num_files++ while readdir DIR;
closedir DIR;
# Compare the file count against the max
if ( $num_files > $MAX_FILES ) {
error( $q, "We cannot save your request because the directory
" .
"is full. Please try again later" );
}
# Save the current CGI object to disk
open FILE, ">> $session" or return die "Cannot write to $session:
$!";
$q->save( \*FILE );
close FILE;
}
# Separated from other code in case this changes in the future
sub session_filename {
my $id =3D shift;
return "/$DATA_DIR/$id";
}
sub unique_id {
# Use Apache's mod_unique_id if available
return $ENV{UNIQUE_ID} if exists $ENV{UNIQUE_ID};
require Digest::MD5;
my $md5 =3D new Digest::MD5;
my $remote =3D $ENV{REMOTE_ADDR} . $ENV{REMOTE_PORT};
# Note this is intended to be unique, and not unguessable
# It should not be used for generating keys to sensitive data
my $id =3D $md5->md5_base64( time, $$, $remote );
$id =3D~ tr|+/=3D|-_.|; # Make non-word chars URL-friendly
return $id;
}