...making Linux just a little more fun! |
By Mark Nielsen |
For my setup, I was using efax, which is not that easy to get along with. For any sane person, I recommend HylaFax or some other alternative (mgetty has some hope).
Please read my other efax article at Linux Focus.
I have a directory, /usr/local/apache2/htdocs/fax, where I put in my Perl script and .htaccess files.
Underneath this directory, I have these directories:
AuthName Test AuthType Basic AuthUserFile /usr/local/apache2/passwords/Passwords order deny,allow require user mark ted
You can change/add passwords with htpasswd.
Next, the last thing is to create a perl script. Here is my very crude Perl script. If I ever do anything else with it, I will convert it to a Python script first as Python is the next wave for programming (I hope). Python, Zope, Apache, Linux, and PostgreSQL are the top choices for my programming environment. Save it as "fax.pl" and perform a "chmod 755 fax.pl" after saving it.
You can download it or just view it below.
#!/usr/bin/perl use CGI; print "Content-type: text/html\n\n\n"; my $Home = "/usr/local/apache2/htdocs/fax"; my $Source = "$Home/source"; my $Archives = "$Home/archives"; my $AB_Archives = "$Home/ab"; my $Display = "$Home/display"; my $Home_Archives = "$Home/home"; `mkdir -p $Source`; `mkdir -p $Archives`; `mkdir -p $Display`; `rsync -av /var/spool/fax/incoming/fax* $Source`; `mkdir -p $AB_Archives`; #------------------------------------ my @Files = <$Source/fax*>; foreach my $File (@Files) { # print "$File\n"; my (@Temp) = split(/\//, $File); my $File_Name = pop @Temp; if (!(-e "$Archives/$File_Name\.pdf")) { print "<br>Processing new fax: $File\n"; my $Command = "tiff2ps $File > $Archives/$File_Name\.ps"; # print "$Command\n"; `$Command`; my $Command = "/usr/bin/ps2pdf $Archives/$File_Name\.ps $Archives/$File_Name\.pdf"; # print "$Command\n"; `$Command`; `cp $Archives/$File_Name\.pdf $Display/$File_Name\.pdf`; } } #--------------------------------------- my $query = new CGI; my $Action = $query->param('action'); my $File = $query->param('file'); $File =~ s/[^a-zA-Z0-9\_\.]//g; if (!(-e "$Display/$File")) {} elsif ($Action eq "archive") { print "<br>Archiving $File\n"; `rm -f $Display/$File`; } elsif ($Action eq "archive2") { print "<br>Archiving $File\n"; `cp $Display/$File $AB_Archives/`; `rm -f $Display/$File`; } elsif ($Action eq "archive_home") { print "<br>Archiving $File\n"; `cp $Display/$File $Home_Archives/`; `rm -f $Display/$File`; } print qq(<hr><a href="archives/">Archives</a> -- might be password protected. <br><a href="home/">Home Archives</a> -- might be password protected. <br><a href="ab/">Audioboomerang Archives</a>\n); my $Table_Entries = ""; my @Files = <$Display/fax*>; foreach my $File (sort @Files) { my (@Temp) = split(/\//, $File); my $File_Name = pop @Temp; my $Link = "<a href='display/$File_Name'>$File_Name</a>"; my $Delete = "<a href='fax.pl?action=archive&file=$File_Name'>archive file</a>"; my $AB ="<a href='fax.pl?action=archive2&file=$File_Name'>archive to AB</a>"; my $Home ="<a href='fax.pl?action=archive_home&file=$File_Name'>archive for Home</a>"; $Table_Entries .= qq(<tr><td>$Link</td><td>$Delete</td><td>$Home</td><td>$AB</td></tr>\n); } print "<table border=1><tr><th>View Fax</th><th>Archive the Fax</th> <th>Archive to AudioBoomerang</th></tr>\n"; print $Table_Entries; print "</table>\n"; if (@Files < 1) {print "<h1> No faxes or they are all archived.</h1>\n";}
I am not sure what other fax setups utilize the web, but from my perspective, I always want to have access to my faxes over the web or to send a fax over the web.