#!/usr/local/bin/perl $mailprog = '/usr/lib/sendmail'; print "Content-type: text/html\n\n"; read (STDIN,$QUERY,$ENV{CONTENT_LENGTH}); do settags($QUERY); do settags($ENV{'PATH_INFO'}); do fixtags(); if ( $tags{'from'} =~ m/\@/ && $tags{body} ne "" ) { do mail(); } else { do form(); } do cgiFoot(); sub cgiFoot { print <
MailIt by Z. Turk.
EOM } sub mail { print "MailIt Response\n"; print "

MailIt Response

\n"; $Anon = 1 if $tags{'anon'}; # Now send mail to $tags{'to'} open (MAIL, "|$mailprog $tags{'to'}") || die "Can't open $mailprog!\n"; $mail = ""; $mail .= "From: $tags{'from'}\n"; $mail .= "Subject: $tags{'subject'}\n\n"; $mail .= "$tags{'body'}\n"; $mail .= "------------------------------------------------\n" . "Sent by http://www.fagg.uni-lj.si/cgi-bin/mailit\n" . "for $ENV{'REMOTE_HOST'} at $ENV{'REMOTE_ADDR'} \n" . "using $ENV{'HTTP_USER_AGENT'} \n" unless $Anon==1; print MAIL $mail; close (MAIL); print "This mail was sent:
\n";
        print "To: $tags{'to'}\n";
	print $mail;

        print "
\n"; } # ------------------------------------------------------------ sub form { $ENV{'PATH_INFO'} =~ s/ /\%20/g; $ENV{'PATH_INFO'} =~ s/\r/\%0D/g; $ENV{'PATH_INFO'} =~ s/\n/\%0A/g; $Anon = 1 if $tags{'anon'}; print < Mail form

Mail Form: $tags{'subject'}

EOM

        if ($tags{'from'} eq "") {
                print "   From:  - write your email address here";
        } else {
                print "   From: $tags{'from'}";
        }
        print "\n";

        if ($tags{'to'} eq "") {
                print "     To: ";
        } else {
                print "     To: $tags{'to'}";
        }
        print "\n";

        if ($tags{'subject'} eq "") {
                print "Subject: ";
        } else {
                print "Subject: $tags{'subject'}";
        }
        print "
\n"; print "Message: "; if ($tags{'body'} eq "") { print ""; } else { print "$tags{'body'}"; } print "
\n"; print < Anonymously

EOM print "ANONYMOUS !!!\n" if $Anon == 1; } # ------------------------------------------------------------ sub settags { local($_) = @_; s|^/||; if (/=/) { @terms = split('&'); foreach $term (@terms) { ($tag,$val) = split('=',$term,2); # may override previous value $tags{$tag} = $val; # print "\$tag { $tag } = $val\n"; } } # No '=', so the whole string must be a query: else { $tags{'isindex'} = $_; } } sub fixtags { foreach $tag (keys(%tags)) { $tags{$tag} =~ s/\+/ /g; $tags{$tag} =~ s/%([\da-f]{1,2})/pack(C,hex($1))/eig; } }