#!/usr/local/bin/perl
######################################################################
+#########
# #
# FAX.PL (Fist release) #
# Scripting and testing by M. de Kok #
# Code is free for personal use... #
# #
# For info and/or support mail: mdekok@adicted.to #
# #
# M.de kok #
# Lingestraat 4 #
# 6826 AL, GLD. #
# Arnhem, Netherlands #
# +31620377240 #
# ICQ #9712917 #
# #
# Script @ work at: http://adicted.to/fax4free
+#
# #
######################################################################
+#########
# use the Net::SMTP module.. (can be installed using PPM or VPM)
use Net::SMTP;
# Meta tags
$tags = '<META NAME="Author" CONTENT="M. de Kok)"><meta name="keywords
+" content="JavaScript, JavaScripts, Java, Script, Scripts, SQL, datab
+ase, db, clickhere, Internet Services,'.
' Free, Repository, How-To, How, To, Guides, Documentation, Resources,
+ Marco de Kok, Sign Up!, Cool Notify, Hot List, DIRECTORIES, ASP, CGI
+, Databases, HTML/DHTML, Intranets, Java,'.
' JavaScript, Perl, What\'s Cool, What\'s New, REFERENCE, TRAINING CEN
+TER, JOURNAL, Users Choice, Profiles, Free Scripts, Online Events, AB
+OUT US, Who We Are, What We Do, News About Us,'.
' Advertising Info, email, developers, scripts, examples, free, refere
+nce, menu, help, editor, search, forwarding, forwarding service, emai
+l, email forwarding, library, database, samples,'.
' plan, directory, adicted, adicted.to, to, .to, adiction, adicts, pro
+gramming, journal, script, creating, web, pages, creating, commercial
+, web, site, design, learn, javascript, programming,'.
' languages, scripts"><meta name="description" content="Free URL and e
+mail forwardings, perlscript downloads and examples."><META NAME="dis
+tribution" CONTENT="global"><META NAME="resource-type"'.
' CONTENT="document"><META NAME="language" CONTENT="en"><META NAME="RO
+BOTS" CONTENT="ALL">';
# get data from form
&parse_form;
# organize data
$r_name=$TAG{r_name};
$r_adrs=$TAG{r_adrs};
$r_number=$TAG{r_number};
$f_mail=$TAG{f_mail};
$subject=$TAG{subject};
$body=$TAG{body};
$job_done=$TAG{job_done};
# Create Date Stamp
my($date,$min,$hour,$day,$month,$year,$weekday,$ampm,$zero,@weekdays,
+@months);
(undef, $min, $hour, $day, $month, $year, $weekday) = localtime(time)
+;
@weekdays = ("Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday");
@months = ("January","February","March","April","May","June","July",
"August","September","October","November","December");
# Dates correct through 2097 :)
if ($year > 97) { $year += 1900; } else { $year += 2000; }
# Fix Time
if ($hour > 12) { $hour -= 12; $ampm = "PM"; } else { $ampm = "AM"; }
if ($hour == 0) { $hour = 12; }
if ($min < 10) { $zero = "0"; } else { $zero = ""; }
$time = "$hour:$zero$min $ampm";
$date = "$weekdays[$weekday], $months[$month] $day, $year";
if ($job_done eq "on") { &mail_entry }
$job_done="on";
# print HTML
print '<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><
+html><head>';
print <<"__HTML__"
$tags
<title>fax4free</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2
+">
<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
function MM_popupMsg(theMsg) { //v2.0
alert(theMsg);
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" background="bindertile.gif">
<form method="post" action="http://adicted.to/cgi-bin/fax.pl" name="fa
+x_form">
<input type=hidden name=job_done value="$job_done">
<table width="75%" border="0" align="center" name="main" background=
+"background.gif">
<tr>
<td>
<div align="center">
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="
+5"><b>Cover
Page</b></font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="
+-1" color="#FF0000"><i>$message</i></font></p>
<hr id="hr_1" size="2">
<p align="right"><font face="Verdana, Arial, Helvetica, sans
+-serif" size="-2" color="#000000">Page
1 of 2</font></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="
+-1" color="#000000"><i><b>FACSIMILE
TRANSMISSION</b></i></font></p>
<p align="left"><font face="Verdana, Arial, Helvetica, sans-
+serif" size="-1" color="#000000"><i><b>
Please deliver this facsimile to:</b></i></font></p>
<table width="73%" border="0">
<tr>
<td width="34%"><b><font face="Verdana, Arial, Helvetica
+, sans-serif" color="#000000" size="-1"><strong><font color="#FF0000"
+>*</font></strong>Recipients
name:</font></b></td>
<td width="66%" align="left" valign="bottom"><b><font fa
+ce="Verdana, Arial, Helvetica, sans-serif" color="#3333FF" size="-1">
+
<input type="text" name="r_name" size="25" maxlength="
+60">
</font></b></td>
</tr>
<tr>
<td width="34%"><b><font face="Verdana, Arial, Helvetica
+, sans-serif" color="#FF0000" size="-1"><strong>*</strong></font><fon
+t face="Verdana, Arial, Helvetica, sans-serif" size="-1" color="#0000
+00">Recipients
address:</font></b></td>
<td width="66%" align="left" valign="bottom"><b><font fa
+ce="Verdana, Arial, Helvetica, sans-serif" size="-1" color="#3333FF">
+
<input type="text" name="r_adrs" size="25" maxlength="
+60">
</font></b></td>
</tr>
<tr>
<td width="34%"><b><font face="Verdana, Arial, Helvetica
+, sans-serif" color="#FF0000" size="-1"><strong>*</strong></font><fon
+t face="Verdana, Arial, Helvetica, sans-serif" size="-1" color="#0000
+00">Recipients
number: </font></b> </td>
<td width="66%" align="left" valign="bottom">
<input type="text" name="r_number">
<img src="help.gif" width="75" height="15" alt="Help"
+name="helpred" onMouseDown="MM_openBrWindow('http://adicted.to/fax4fr
+ee/country_list.txt','list','scrollbars=yes,resizable=yes,width=250,h
+eight=500');
MM_popupMsg('example number: +310263445566 where +31 is the country co
+de (Netherlands) and 026 the area code. Enter +31 like: 31 and 026 li
+ke 26! The number to enter in this example should be: 31263445566')">
+</td>
</tr>
</table>
<p align="left"><font size="-1" face="Verdana, Arial, Helvet
+ica, sans-serif" color="#000000"><i><b>From:</b></i></font></p>
<table width="58%" border="0">
<tr>
<td width="34%"><b><font face="Verdana, Arial, Helvetica
+, sans-serif" color="#000000" size="-1"><strong><font color="#FF0000"
+>*</font></strong>Your
email address:</font></b><b><font face="Verdana, Arial
+, Helvetica, sans-serif" color="#3333FF" size="-1">
</font></b></td>
<td width="66%" align="left" valign="bottom"><b><font fa
+ce="Verdana, Arial, Helvetica, sans-serif" color="#3333FF">
<input type="text" name="f_mail" maxlength="60">
</font></b></td>
</tr>
</table>
<p align="left"><b><i><font face="Verdana, Arial, Helvetica,
+ sans-serif" size="-1" color="#000000">Date:</font></i></b></p>
<table width="57%" border="0">
<tr>
<td width="34%"><font face="Verdana, Arial, Helvetica, s
+ans-serif" size="-1" color="#000000"><b>$time</b></font></td>
<td width="66%">
<div align="right"><font face="Verdana, Arial, Helveti
+ca, sans-serif" size="-1" color="#000000"><b>$date</b></font></div>
</td>
</tr>
</table>
<p align="left"><b><i><font face="Verdana, Arial, Helvetica,
+ sans-serif" size="-1" color="#000000">Subject:</font></i></b></p>
<table width="59%" border="0">
<tr>
<td width="32%"><b><font face="Verdana, Arial, Helvetica
+, sans-serif" color="#000000" size="-1">Subject
of this fax:</font></b></td>
<td width="68%" align="left" valign="bottom">
<input type="text" name="subject">
</td>
</tr>
</table>
<p> </p>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="
+5"><b>Body</b></font></p>
<p align="left"><b><font face="Verdana, Arial, Helvetica, sa
+ns-serif" color="#FF0000" size="-1"><strong>*<font size="-2">Requied
fields </font></strong></font></b> </p>
<hr size="2">
<p align="right"><font face="Verdana, Arial, Helvetica, sans
+-serif" size="-2" color="#000000">Page
2 of 2</font></p>
<p align="right"> </p>
<p align="left"><b><i><font face="Verdana, Arial, Helvetica,
+ sans-serif" size="-1" color="#000000">Body:</font></i></b></p>
<p align="center">
<textarea name="body" cols="50" wrap="PHYSICAL" rows="15">
fax4free = a Adicted.to/service</textarea>
</p>
<p align="left"> </p>
<p align="center"> </p>
<p>
<input type="submit" name="Submit" value="Go Fax!">
<input type="reset" name="Submit2" value="Reset">
</p>
<p>
<p align="left"><b><font face="Verdana, Arial, Helvetica, sa
+ns-serif" size="-1" color="#3333FF">
</font></b></p>
<p>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
__HTML__
;
exit;
# SUBS
sub parse_form {
if ($ENV{'QUERY_METHOD'} eq "GET") {
&error("GET");
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# Split the name-value pairs
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
# Stop people from using subshells to execute commands
# Not a big deal when using sendmail, but very important
# when using UCB mail (aka mailx).
# $value =~ s/~!/ ~!/g;
# Uncomment for debugging purposes
# print "Setting $name to $value<P>";
$TAG{$name} = $value;
}
}
sub mail_entry {
# check address syntax
if ($f_mail =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $f_mail !~ /^.+\@(
+\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) {
&error("mail_syntax");
}
if ($subject eq "") { $subject = "Fax4Free is a service from adicted.t
+o" }
# Mail data to counter and user
$smtp = Net::SMTP->new('adicted.to', Hello => 'SpankzMail.Rulez', Tim
+eout => 30, Debug => 0);
$smtp->mail('postmaster@adicted.to');
$smtp->to('counter@adicted.to');
$smtp->recipient($f_mail);
$smtp->data();
$smtp->datasend("To: $f_mail\n");
$smtp->datasend("From: auto\@adicted.to\n");
$smtp->datasend("X-mailer: SpankZMailService v. 0.01t\n");
$smtp->datasend("Mime-Version: 1.0\n");
$smtp->datasend("Content-type: text/plain\n");
$smtp->datasend("Subject: $subject\n\n");
$smtp->datasend("__________________________\n\n");
$smtp->datasend("Fax send to: $r_name, $r_adrs\n");
$smtp->datasend("To fax number: $r_number\n");
$smtp->datasend("______________________________\nBody:\n\n");
$smtp->datasend("$body\n\n");
$smtp->datasend("______________________________\n\n");
$smtp->datasend("Your fax request has been accepted\n");
$smtp->datasend("for delivery on $r_number... The logs for this\n"
+);
$smtp->datasend("facsimile wil be send to you soon by tpcadmin\@in
+fo.tpc.in");
$smtp->quit;
# compose message for delivery on tcp...
$info1 = $r_name;
$info2 = $r_adrs;
$info1 =~ s/ /_/g;
$info2 =~ s/ /_/g;
$r_info1 = $info1;
$r_info2 = $info2;
$compose = "remote-printer." . $r_info1 . "/" . $r_info2 . "\@" . $r_n
+umber . ".iddd.tpc.int";
# deliver request @ tcp
$smtp = Net::SMTP->new('adicted.to', Hello => 'SpankzMail.Rulez', Time
+out => 30, Debug => 0);
$smtp->mail('postmaster@adicted.to');
$smtp->to('counter@adicted.to');
$smtp->recipient($compose);
$smtp->data();
$smtp->datasend("To: TCP\n");
$smtp->datasend("From: $f_mail\n");
$smtp->datasend("X-mailer: SpankZMailService v. 0.01t\n");
$smtp->datasend("Mime-Version: 1.0\n");
$smtp->datasend("Content-type: text/plain\n");
$smtp->datasend("Subject: $subject\n\n");
$smtp->datasend("$body\n\n");
$smtp->quit;
$message="Your facsimile has been added for delivery!";
$job_done="";
}
sub error {
my %ERR;
$ERR{"not_ready"} = "Sorry, but this part of the service is under co
+nstruction right now.
your fax request however has been accepted for delivery on $numbe
+r...";
$ERR{"mail_syntax"} = "[ $email ] is not an valide address!";
$ERR{"GET"} = "The script must be called with the POST method.";
$ERR{"debug"} = "compose = $compose";
$ERR{"no_data"} = "All fields must by completed!";
my $emsg = $ERR{$_[0]};
if (!$emsg) {
$emsg = "The script has suffered an unknown error.";
}
print "Content-type: text/html", "\n\n";
print "<html><body>\n";
print "<h1>Fax Error</h1>\n";
print "$emsg";
print "</body></html>";
exit;
}
In reply to Fax4Free
by Dark1
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.