#!/usr/bin/perl use vars qw(%config %category %left %right %form %supercat); local %form = &get_form_data; use strict; local %config; require "/var/www/htdocs/GiftsGallery/cgi-bin/config.cgi"; require "$config{'cgidirectory'}/menu.cgi"; #-########################################################################### #eCommerce Classifieds v 1.0 #Copyright 2001-2003 by CGI Technologies. All rights reserved. This copyright #notice must remain intact. By installing this software you agree to the following #terms and conditions. If you do not agree to these terms and conditions, you #must delete this software immediately. This script may not be copied or #modified in any way without permission in writing from CGI Technologies. #This Software Product is licensed (not sold) to you, and CGI Technologies #owns all copyright, trade secret, patent and other proprietary rights in the #Software Product. The term "Software Product" includes all copies of the #CGI Technologies script and its documentation.You are hereby granted a #nonexclusive license to use the Software Product on a single domain. You may #make one copy of the Software Product's computer program for back-up #purposes only. You may not: (1) copy (other than once for back-up purposes), #distribute, rent, lease or sublicense all or any portion of the Software Product; #(3) reverse engineer, decompile or dissemble the Software Product. You agree #to keep confidential and use your best efforts to prevent and protect the #contents of the Software Product from unauthorized disclosure or use. Transfer #of the Software Product is prohibited. Your license is automatically terminated #if you transfer the Software Product. For 90 days from the date of registration, #we warrant that the media (for example, ZIP archive) on which the #Software Product is contained will be free from defects in materials and #workmanship. This warranty does not cover damage caused by improper use or #neglect. We do not warrant the contents of the Software Product or that it will #be error free. The Software Product is furnished "As Is" and without warranty #as to the performance or results you may obtain by using the Software Product. #The entire risk as to the results and performance of the Software Product is #assumed by you. The warranties in this agreement replace all other warranties, #express or implied, including any warranties of merchantability or fitness for a #particular pupose. We disclaim and exclue all other warranties. In no event will #our liability of any kind include any special, incidental or consequential #damages, including lost profits, even if we have knowledge of the potential loss #or damage. We will not be liable for any loss or damage caused by delay in #furnishing a Software Product or any other performance under this Agreement. #Our entire liability and your exclusive remedies for our liability of any kind #(including liability for negligence except liability for personal injury caused #solely by our negligence) for the Software Product covered by this Agreement #and all other performance or nonperformance by us under or related to this #Agreement are limited to the remedies specified by this Agreement. This #Agreement is effective until terminated. You may terminate it at any time by #destroying the Software Product, including all computer programs and #documentation, and erasing any copies residing on computer equipment or #storage media. This Agreement also will terminate if you do not comply #with any terms or conditions of this Agreement. Upon such termination you #agree to destroy the Software Product and erase all copies residing on computer #equipment or storage media. The Software Product is provided to the #Government only with restricted rights and limited rights. Use, duplication, or #disclosure by the Government is subject to restrictions set forth in FAR Sections #52-227-14 and 52-227-19 or DFARS Section 52.227-7013(C)(1)(ii), as #applicable. You are responsible for installation, management and operation of #the Software Product. #-########################################################################### my $sessionid = &getcookies; my $cookietime = &makecookietime; umask(000); mkdir("$config{'basepath'}loggedin", 0777) unless (-d "$config{'basepath'}loggedin"); my $sessiontime =time; if ($sessionid eq '') { $sessiontime = (time + 1) until (!(-f "$config{'basepath'}loggedin/$sessiontime.dat")); &setcookies($sessiontime); my $logintime = (($config{'autologout'} * 60) + time); &oops('We are unable to create session id. This could be a write permissions problem. Please note this error message and contact the site administrator.') unless (open (NEW, ">$config{'basepath'}loggedin/$sessiontime.dat")); print NEW "$logintime\n\n"; close NEW; } print "Content-type: text/html\n\n"; umask(000); mkdir("$config{'basepath'}adlists", 0777) unless (-d "$config{'basepath'}adlists"); mkdir("$config{'basepath'}expired", 0777) unless (-d "$config{'basepath'}expired"); my ($logintime, $name) = &read_loggedin_file($sessionid); umask(000); mkdir("$config{'basepath'}loggedin", 0777) unless (-d "$config{'basepath'}loggedin"); opendir THEDIR, "$config{'basepath'}loggedin" or &oops("Logged in list could not be opened."); readdir THEDIR; my @allfiles = readdir THEDIR; closedir THEDIR; my $file; foreach $file (@allfiles) { open FILE, "$config{'basepath'}loggedin/$file"; my ($logintime, $name) = ; close FILE; chomp ($logintime, $name); unlink ("$config{'basepath'}loggedin/$file") if ($logintime < time); } if (-f "$config{'basepath'}loggedin/$sessionid.dat") { open FILE, "$config{'basepath'}loggedin/$sessionid.dat"; my ($logintime, $name) = ; close FILE; chomp ($logintime, $name); my $logintime = (($config{'autologout'} * 60) + time); open (NEW, ">$config{'basepath'}loggedin/$sessionid.dat"); print NEW "$logintime\n$name\n"; close NEW; } open FILE, "$config{'basepath'}loggedin/$sessionid.dat"; my ($logintime, $name) = ; close FILE; chomp ($logintime, $name); print $config{'header'}; if ($name ne '') { print "
"; print "If you are not $name, click here to log out." unless ($form{'action'} eq 'logout'); print "
"; } # #-############################################# #if ($form{'action'} eq 'new') { require "$config{'cgidirectory'}/images.cgi"; &upload; } if ($form{'action'} eq 'new') { require "$config{'cgidirectory'}/new.cgi"; &new; } elsif ($form{'action'} eq 'modify_photo') { require "$config{'cgidirectory'}/images.cgi"; &modify_photo; } elsif ($form{'action'} eq 'modify_photo2') { require "$config{'cgidirectory'}/images.cgi"; &modify_photo2; } elsif ($form{'action'} eq 'delpic') { require "$config{'cgidirectory'}/images.cgi"; &delpic; } elsif ($form{'picture'}) { require "$config{'cgidirectory'}/new.cgi"; &new; } elsif ($form{'pictureurl'}) { require "$config{'cgidirectory'}/new.cgi"; &new; } elsif (lc($form{'action'}) eq 'uploaddone') { require "$config{'cgidirectory'}/new.cgi"; &new; } elsif ($form{'action'} eq 'user_del_ad') { require "$config{'cgidirectory'}/ads.cgi"; &user_del_ad; } elsif ($form{'action'} eq 'repost') { require "$config{'cgidirectory'}/new.cgi"; &new; } elsif ($form{'action'} eq 'expiredads2') { require "$config{'cgidirectory'}/ads.cgi"; &expiredads2; } elsif ($form{'action'} eq 'delexpired') { require "$config{'cgidirectory'}/ads.cgi"; &delexpired; } elsif ($form{'action'} eq 'dispall') { require "$config{'cgidirectory'}/ads.cgi"; &dispall; } elsif ($form{'action'} eq 'procnew') { require "$config{'cgidirectory'}/new.cgi"; &procnew; } elsif ($form{'action'} eq 'reg') { require "$config{'cgidirectory'}/account.cgi"; ® } elsif ($form{'action'} eq 'purgeexpired') { require "$config{'cgidirectory'}/admin.cgi"; &purgeexpired; } elsif ($form{'action'} eq 'account') { require "$config{'cgidirectory'}/account.cgi"; &account; } elsif ($form{'action'} eq 'delete_account') { require "$config{'cgidirectory'}/account.cgi"; &delete_account; } elsif ($form{'action'} eq 'myads') { require "$config{'cgidirectory'}/ads.cgi"; &myads; } elsif ($form{'action'} eq 'expiredads') { require "$config{'cgidirectory'}/ads.cgi"; &expiredads; } elsif ($form{'action'} eq 'procreg') { require "$config{'cgidirectory'}/account.cgi"; &procreg; } elsif ($form{'action'} eq 'creg') { require "$config{'cgidirectory'}/account.cgi"; &creg; } elsif ($form{'action'} eq 'proccreg') { require "$config{'cgidirectory'}/account.cgi"; &proccreg; } elsif ($form{'action'} eq 'create_match') { require "$config{'cgidirectory'}/notify.cgi"; &create_match; } elsif ($form{'action'} eq 'login') { require "$config{'cgidirectory'}/login.cgi"; &login; } elsif ($form{'action'} eq 'login2') { require "$config{'cgidirectory'}/login.cgi"; &login2; } elsif ($form{'action'} eq 'login3') { require "$config{'cgidirectory'}/login.cgi"; &login3; } elsif ($form{'action'} eq 'loginhelp') { require "$config{'cgidirectory'}/login.cgi"; &loginhelp; } elsif ($form{'action'} eq 'send_to_friend') { require "$config{'cgidirectory'}/friend.cgi"; &send_to_friend; } elsif ($form{'action'} eq 'send_to_friend2') { require "$config{'cgidirectory'}/friend.cgi"; &send_to_friend2; } elsif ($form{'action'} eq 'logout') { require "$config{'cgidirectory'}/login.cgi"; &logout; } elsif ($form{'action'} eq 'favorites') { require "$config{'cgidirectory'}/favorites.cgi"; &favorites; } elsif ($form{'action'} eq 'favorites2') { require "$config{'cgidirectory'}/favorites.cgi"; &favorites2; } elsif ($form{'action'} eq 'viewfavorites') { require "$config{'cgidirectory'}/favorites.cgi"; &viewfavorites; } elsif ($form{'action'} eq 'delete_fav') { require "$config{'cgidirectory'}/favorites.cgi"; &delete_fav; } elsif ($form{'action'} eq 'closed') { require "$config{'cgidirectory'}/ads.cgi"; &viewclosed1; } elsif ($form{'action'} eq 'closed2') { require "$config{'cgidirectory'}/ads.cgi"; &viewclosed2; } elsif ($form{'action'} eq 'closed3') { require "$config{'cgidirectory'}/ads.cgi"; &viewclosed3; } elsif ($form{'action'} eq 'admin') { require "$config{'cgidirectory'}/admin.cgi"; &admin; } elsif ($form{'action'} eq 'adminview') { require "$config{'cgidirectory'}/admin.cgi"; &adminview; } elsif ($form{'action'} eq 'payment') { require "$config{'cgidirectory'}/admin.cgi"; &payment; } elsif ($form{'action'} eq 'paymentexpire') { require "$config{'cgidirectory'}/admin.cgi"; &paymentexpire; } elsif ($form{'action'} eq 'vregusers') { require "$config{'cgidirectory'}/admin.cgi"; &vregusers; } elsif ($form{'action'} eq 'deleteuser') { require "$config{'cgidirectory'}/admin.cgi"; &deleteuser; } elsif ($form{'action'} eq 'deleteuser2') { require "$config{'cgidirectory'}/admin.cgi"; &deleteuser2; } elsif ($form{'action'} eq 'admin_moditem') { require "$config{'cgidirectory'}/admin.cgi"; &admin_moditem; } elsif ($form{'action'} eq 'admin_moditemb') { require "$config{'cgidirectory'}/admin.cgi"; &admin_moditemb; } elsif ($form{'action'} eq 'admin_moditem2') { require "$config{'cgidirectory'}/admin.cgi"; &admin_moditem2; } elsif ($form{'action'} eq 'advsearch') { require "$config{'cgidirectory'}/admin.cgi"; &advsearch; } elsif ($form{'action'} eq 'finduser') { require "$config{'cgidirectory'}/admin.cgi"; &finduser; } elsif ($form{'action'} eq 'banemail') { require "$config{'cgidirectory'}/admin.cgi"; &banemail; } elsif ($form{'action'} eq 'banemail2') { require "$config{'cgidirectory'}/admin.cgi"; &banemail2; } elsif ($form{'action'} eq 'contact') { require "$config{'cgidirectory'}/mail.cgi"; &contact; } elsif ($form{'action'} eq 'contact2') { require "$config{'cgidirectory'}/mail.cgi"; &contact2; } elsif ($form{'action'} eq 'unbanemail') { require "$config{'cgidirectory'}/admin.cgi"; &unbanemail; } elsif ($form{'action'} eq 'unbanemail2') { require "$config{'cgidirectory'}/admin.cgi"; &unbanemail2; } elsif ($form{'action'} eq 'emailusers') { require "$config{'cgidirectory'}/admin.cgi"; &emailusers; } elsif ($form{'action'} eq 'procadmin') { require "$config{'cgidirectory'}/admin.cgi"; &procadmin; } elsif ($form{'action'} eq 'mlist') { require "$config{'cgidirectory'}/admin.cgi"; &maillist; } elsif ($form{'action'} eq 'search1') { require "$config{'cgidirectory'}/search.cgi"; &start_search; } elsif ($form{'action'} eq 'search') { require "$config{'cgidirectory'}/search.cgi"; &procsearch; } elsif ($form{'item'} eq int($form{'item'}) and $category{$form{'category'}}) { require "$config{'cgidirectory'}/display.cgi"; &dispitem; } elsif ($category{$form{'category'}}) { require "$config{'cgidirectory'}/display.cgi"; &displist; } elsif ($form{'action'} eq 'lp') { require "$config{'cgidirectory'}/account.cgi"; &lp; } elsif ($form{'action'} eq 'lp2') { require "$config{'cgidirectory'}/account.cgi"; &lp2; } elsif ($form{'action'} eq 'lp3') { require "$config{'cgidirectory'}/account.cgi"; &lp3; } elsif ($form{'action'} eq 'seller_moditem') { require "$config{'cgidirectory'}/edit.cgi"; &seller_moditem; } elsif ($form{'action'} eq 'seller_moditem2') { require "$config{'cgidirectory'}/edit.cgi"; &seller_moditem2; } elsif ($form{'action'} eq 'thanks') { require "$config{'cgidirectory'}/clickbank.cgi"; &thanks; } elsif ($form{'action'} eq 'upgrade') { require "$config{'cgidirectory'}/clickbank.cgi"; &upgrade; } elsif ($form{'action'} eq 'thanks2') { require "$config{'cgidirectory'}/mcards.cgi"; &thanks2; } elsif ($form{'action'} eq 'upgrade2') { require "$config{'cgidirectory'}/mcards.cgi"; &upgrade2; } elsif ($form{'action'} eq 'thanks3') { require "$config{'cgidirectory'}/2checkout.cgi"; &thanks3; } elsif ($form{'action'} eq 'upgrade3') { require "$config{'cgidirectory'}/2checkout.cgi"; &upgrade3; } elsif ($form{'action'} eq 'menu') { require "$config{'cgidirectory'}/menu.cgi"; &menu; } else { require "$config{'cgidirectory'}/display.cgi"; &dispcat; } &menu; print $config{'footer'}; EXITSCRIPT: check_index(); eval { if ($ENV{'WINDIR'}) { ($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); } else { ($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); } }; if ($@) { print "Error - the following files couldn't be opened: $@\n"; print "Please, make sure that the files exist and/or access rights and paths are configured correctly."; exit; } sub closeit { my ($cat,$item) = @_; if ($cat ne 'expired') { my ($title, $desc, $image, $url, $price, $date, $user) = &read_item_file($cat,$item); my ($password, $email, $add1, $add2, $add3, $add4, $add5, $add6, $phone, $tokens) = &read_reg_file($user); &sendemail($email, $config{'admin_address'}, "AD EXPIRED: $title", "Ad number $item is now closed.\r\nYou may repost your ad by using the closed ad manager at http://$config{'scripturl'}$ENV{'SCRIPT_NAME'}?action=expiredads.\r\n\nThanks for using $config{'sitename'}!"); umask(000); mkdir("$config{'basepath'}expired", 0777) unless (-d "$config{'basepath'}expired"); print "Please notify the site admin that this ad cannot be copied to the closed directory even though it is closed.\n" unless &movefile("$config{'basepath'}$cat/$item.dat", "$config{'basepath'}expired/$cat$item.dat"); } else { print "Please notify the site administrator that this ad cannot be removed even though it is closed.\n" unless unlink("$config{'basepath'}$cat/$item.dat"); } } sub sendemail { my ($to,$from,$subject,$message) = @_; my $trash; if ($config{'mailhost'}) { eval('use IO::Socket; 1;') or &oops("IO::Socket could not be loaded by the script. Perl version $]. IO::Socket may not be included with versions of perl prior to 5.00404."); my $remote; $remote = IO::Socket::INET->new("$config{'mailhost'}:smtp(25)"); $remote->autoflush(); print $remote "HELO\r\n"; $trash = <$remote>; print $remote "MAIL From:<$config{'admin_address'}>\r\n"; $trash = <$remote>; print $remote "RCPT To:<$to>\r\n"; $trash = <$remote>; print $remote "DATA\r\n"; $trash = <$remote>; print $remote "From: <$from>\r\nSubject: $subject\r\n\r\n"; print $remote $message; print $remote "\r\n.\r\n"; $trash = <$remote>; print $remote "QUIT\r\n"; } else { open MAIL, "|$config{'mailprog'}"; print MAIL "To: $to\nFrom: $from\nSubject: $subject\n$message\n"; close MAIL; } } sub get_form_data { my $temp; my $buffer; my @data; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); foreach $temp (split(/&|=/,$buffer)) { $temp =~ tr/+/ /; $temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; $temp =~ s/ {2,5}/ /g; $temp =~ s/\"/\"\;/g; push @data, $temp; } foreach $temp (split(/&|=/,$ENV{'QUERY_STRING'})) { $temp =~ tr/+/ /; $temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; $temp =~ s/ {2,5}/ /g; $temp =~ s/\"/\"\;/g; push @data, $temp; } return @data; } sub randompass { srand(time ^ $$); my @passset = ('a'..'k', 'm'..'n', 'p'..'z', '2'..'9'); my $randpass = ""; for (my $i=0; $i<8; $i++) { $randpass .= $passset[int(rand($#passset + 1))]; } return $randpass; } sub oops { print "

$_[0]

If you believe this is a server problem you may contact the site administrator.

\n"; &menu; print $config{'footer'}; die "Error: $_[0]\n"; } sub movefile { my ($firstfile, $secondfile) = @_; return 0 unless open(FIRSTFILE,$firstfile); my @lines=; close FIRSTFILE; return 0 unless open(SECONDFILE,">$secondfile"); my $line; foreach $line (@lines) { print SECONDFILE $line; } close SECONDFILE; return 0 unless unlink($firstfile); return 1; } sub read_reg_file { my $alias = shift; return '' unless $alias; # verify the user exists $alias = ucfirst(lc($alias)); return '' unless -r "$config{'basepath'}people/$alias.dat" and -T "$config{'basepath'}people/$alias.dat"; open FILE, "$config{'basepath'}people/$alias.dat"; my @past_rfts=; my $password = $past_rfts[0]; my $email = $past_rfts[1]; my $add1 = $past_rfts[2]; my $add2 = $past_rfts[3]; my $add3 = $past_rfts[4]; my $add4 = $past_rfts[5]; my $add5 = $past_rfts[6]; my $add6 = $past_rfts[7]; my $phone = $past_rfts[8]; my $tokens = $past_rfts[9]; chomp ($password,$email,$add1,$add2,$add3,$add4,$add5,$add6,$phone,$tokens); return ($password,$email,$add1,$add2,$add3,$add4,$add5,$add6,$phone,$tokens); } sub read_item_file { my ($cat, $item) = @_; return '' unless ($cat) and ($item); &oops('The category must consist of alphanumeric characters only.') if $cat =~ /\W/; return '' unless $category{$cat}; &oops('The ad number must consist of alphanumeric characters only.') if $item =~ /\D/; return '' unless 0|| open FILE, "$config{'basepath'}$cat/$item.dat"; my ($title, $desc, $image, $url, $price, $date, $user) = ; close FILE; chomp ($title, $desc, $image, $url, $price, $date, $user); return ($title, $desc, $image, $url, $price, $date, $user); } sub pagebreak{ my $begin = "
"; my $next = "Next >"; my $nonext = "Next >"; my $previous = "< Back"; my $noprevious = "< Back"; my $end = "
"; my $urlfragment; foreach(keys %form){ next if($_ eq 'pb' || $_ eq 'page'); my $f = $form{$_}; $f=~s/(\W)/'%'.unpack("H2", $1)/eg; $urlfragment.='&' if $urlfragment; $urlfragment.="$_=$f"; } my($pcount, $pagebreak) = @_; print $begin; if($form{page} > 0){ print " $previous " } else{ print " $noprevious " } print "|"; #for(0..$form{page}-1){ print " @{[$_+1]} " } #print " ", int($form{page})+1, " "; #for($form{page}+1..$pcount){ print " @{[$_+1]} " } #if($pcount>0){ print " All " } #print "|"; if($form{page} < $pcount){ print " $next " } else{ print " $nonext " } print $end; } sub backto{ my $Separator = " : "; my $Item = "Item"; my $Home = "Top"; my (@backs, $backto, $path, $thispath, $current); if($_[0] eq ''){$_[0] = $form{category}} $thispath=$_[0]; if($category{$_[0]} ne ''){ $thispath=$category{$form{category}}; while($thispath=~s/^//){ if($supercat{$1} ne ''){$thispath.=":$1"} } # $current=$category{$_[0]};## } @backs=split(/\:/, $thispath); foreach (0..($#backs-1)){ if($supercat{$backs[$_]} ne ''){ $path.=":$backs[$_]"; $backto.="$Separator$supercat{$backs[$_]}"; } } $path.=":$backs[-1]"; if($supercat{$backs[-1]} ne '' && $category{$_[0]} ne ''){ if($form{item} ne ''){ # ITEM $backto.="$Separator$supercat{$backs[-1]}$Separator$category{$_[0]}"; }else{ # ITEMLIST $backto.="$Separator$supercat{$backs[-1]}$Separator$category{$_[0]}"; } }elsif($supercat{$backs[-1]} ne ''){ # SUBCATEGORIES $backto.="$Separator$supercat{$backs[-1]}"; } if($backto ne ''){return "$Home$backto"} else{return ''} } sub autoclose { my $key; my $file; foreach $key (sort keys %category) { umask(000); # UNIX file permission junk mkdir("$config{'basepath'}$key", 0777) unless (-d "$config{'basepath'}$key"); opendir DIR, "$config{'basepath'}$key" or &oops("Category directory $key could not be opened."); readdir DIR;readdir DIR; my @allfiles = sort { $a <=> $b } readdir DIR; closedir DIR; foreach $file (@allfiles) { $file =~ s/^$config{'basepath'}$key\///; $file =~ s/\.dat$//; my ($title, $desc, $image, $url, $price, $date, $user) = &read_item_file($key,$file); if (time > $file) { &closeit($key,$file); }}}} sub check_index{ require "$config{'cgidirectory'}/index.cgi"; &oops("Cannot find $config{'cgidirectory'}/index.cgi") if !-e "$config{'cgidirectory'}/index.cgi"; open(RESUME, "$config{basepath}resume.dat"); $_ = ; chomp; my($resumetime,$resumedir,$resumefile,$resumedbsize) = split /\t/; close(RESUME); $resumedir = '' if $category{$resumedir} eq ''; $resumefile = '' if $resumedir eq ''; $resumefile = '' if !-e "$config{basepath}$resumedir/$resumefile.dat"; exit if $resumedir eq '' && time < $resumetime; exit if time < $resumetime+15; close(STDERR); close(STDOUT); `$^X $config{'cgidirectory'}/index.cgi`; } sub upload { my($password,$email,$add1,$add2,$add3,$add4,$add5,$add6,$phone,$tokens) = &read_reg_file($name); if ($name eq '') { print "
You must login before posting ads.
"; print $config{'login'}; print $config{'footer'}; exit; } print <<"EOF";

Place a New Ad


Would you like to include a picture with your ad?
If you don't have a picture you may continue without posting a picture by clicking the button below.


If you have a picture that you would like to upload from your computer, click the 'Browse' button and select the file.
Image to Upload:


EOF } sub price { $_[0] =~ s/\,//g; my @rftamt = split(/\./, $_[0]); $rftamt[0] = "0" if (!($rftamt[0])); $rftamt[0] = int($rftamt[0]); $rftamt[1] = substr($rftamt[1], 0, 2); $rftamt[1] = "00" if (length($rftamt[1]) == 0); $rftamt[1] = "$rftamt[1]0" if (length($rftamt[1]) == 1); return "$rftamt[0].$rftamt[1]"; } sub read_loggedin_file { return '' unless (-d "$config{'basepath'}loggedin/$sessionid.dat"); open FILE, "$config{'basepath'}loggedin/$sessionid.dat"; my ($logintime, $name) = ; close FILE; chomp ($logintime, $name); return ($logintime, $name); } sub getcookies { my ($temp,$temp2); my @data; foreach $temp (split(/; /,$ENV{'HTTP_COOKIE'})) { foreach $temp2 (split(/=/,$temp)) { $temp2 =~ tr/+/ /; $temp2 =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; push @data, $temp2; } } my %cookies = @data; return($cookies{'sessionid'}); } sub makecookietime { my @cookietime; @cookietime = split(/ +/, scalar(gmtime(time+($config{'autologout'} * 86400)))); $cookietime[2] = "0$cookietime[2]" if length($cookietime[2]) == 1; return "$cookietime[0], $cookietime[2]-$cookietime[1]-$cookietime[4] $cookietime[3] GMT"; } sub setcookies { my ($sessiontime) = @_; my $cookietime = &makecookietime; print ("Set-Cookie: sessionid=", ($sessiontime), "; expires=", $cookietime,"; path=/\n"); }