HylaFAX The world's
most advanced open source fax server
|
|
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
[hylafax-users] Handy Faxrcvd Script
Notes are below script text.
#! /bin/sh
#
$Id:
faxrcvd.sh,v 1.1.1.1 1998/10/12 20:47:48 root Exp $
#
# HylaFAX Facsimile Software
#
# Copyright (c) 1990-1996 Sam Leffler
# Copyright (c) 1991-1996 Silicon Graphics, Inc.
# HylaFAX is a trademark of Silicon Graphics
#
# Permission to use, copy, modify, distribute, and sell this software and
# its documentation for any purpose is hereby granted without fee,
provided
# that (i) the above copyright notices and this permission notice appear
in
# all copies of the software and related documentation, and (ii) the
names of
# Sam Leffler and Silicon Graphics may not be used in any advertising
or
# publicity relating to the software without the specific, prior
written
# permission of Sam Leffler and Silicon Graphics.
#
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY
KIND,
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
#
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
KIND,
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS,
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
OF
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
#
#
#
#######################################
# LEAVE THIS AT TOP OF THE FILE!!!
# Automatically Print to the CUPS printing system to the printer
PrinterPG
# There is a weekly CRON job defined to cleanup the print queue
jobs
###/usr/bin/tiff2ps -a1 $1 | /usr/bin/lpr -PHaywardFax
# HAD TO ADD FLAGS TO SET WIDTH AND HEIGHT OF IMAGES
# OTHERWISE SOME FAXES DIDN"T PRINT PROPERLY and the TSID header
info
# wouldn't print out. Laser printers have a maximum printable area
and
# some sender's faxes are set to A4 paper size!!!
/usr/bin/tiff2ps -a -1 -h10.675 -w8.25 $1 | /usr/bin/lpr -PHaywardFax
#######################################
# faxrcvd file devID commID error-msg
#
if [ $# != 4 ]; then
echo "Usage: $0 file devID commID
error-msg"
exit 1
fi
test -f etc/setup.cache || {
SPOOL=`pwd`
cat<<EOF
FATAL ERROR: $SPOOL/etc/setup.cache is missing!
The file $SPOOL/etc/setup.cache is not present. This
probably means the machine has not been setup using the
faxsetup(1M)
command. Read the documentation on setting up HylaFAX before
you
startup a server system.
EOF
exit 1
}
. etc/setup.cache
##########################
##### Set Variables ######
##########################
INFO=$SBIN/faxinfo
FAX2PS=$TIFFBIN/fax2ps
TOADDR=FaxMaster
HOSTNAME=`hostname`
#
XXX no good way to find FQDN
PORT=4559
#
XXX no good way to lookup service
FILE="$1"
DEVICE="$2"
COMMID="$3"
MSG="$4"
# Parse out the fax tif filename alone, strip the log folder name
FILENAME=`echo $1 | awk -F\/ '{print $2}'`
# If you don't have a matchfile, lookups will not occur
MATCHFILE=/home/neomail/fax/nametofax.txt
# If you want to do the WEB link stuff, set to YES, else original links
previal
WEBNOTIFY=YES
WEBSITE="
http://linux-2"
WEBFOLDER=/home/neomail/fax
WEBCGIFILE=/cgi-bin/viewfaxfolder.cgi
WEBFAXPATH=/fax
##########################
####### START MAIN #######
##########################
# Check the sender's TSI and setup to dispatch
# facsimile received from well-known senders.
#
SENDER="`$INFO $FILE | $AWK -F: '/Sender/ { print
$2 }' 2>/dev/null`"
#############################################################
############## ALTERNATE SENDER RETRIEVAL METHOD
############
#############################################################
# I WROTE MY OWN SCRIPT TO GET THE SENDER INFO FROM
THE JOB CONVERSATION -
# ON FAILED JOBS THE FILE DOES NOT EXIST
SENDER2=`cat log/c$COMMID | awk -F\" ''/FTSI/'
{print $2}' | \
sed -e 's/[
]*//g' | \
awk 'getline
{print $0}'`
##### This doesn't work well for my modem...
#####SENDER2=`cat log/c$COMMID | awk -F\"
''/FTSI/' {print $2}' | \
##### sed -e 's/[ ]*//g'`
# If SENDER2 returns nothing, use SENDER
instead. Else, if BOTH are
# blank change value to UNSPECIFIED.
if [ "`echo $SENDER2 | sed -e 's/[ ]*//g'`"
= "" ]; then
if [
"`echo $SENDER | sed -e 's/[ ]*//g'`" = "" ];
then
SENDER2="-
UNSPECIFIED -"
else
#
Strip out spaced from SENDER so same format to later
#
compare with text database for email details.
SENDER2="`echo
$SENDER | sed -e 's/[
]*//g'`"
fi
fi
# Now use the resulting SENDER2 variable and compare
it to the compare
# file that is formatted "CUSTOMER
NAME;555-111-1234" in each line entry.
# The filename is based on MATCHFILE such as
/var/spool/fax/bin/namefax
# Only do this is the MATCHFILE has been set up.
if [ -f $MATCHFILE ]; then
# Initialize MATCH
MATCH=""
# Compare SENDER2 with each
line in MATCHFILE
# Note:
The AWK just finds the LINE with the search text - this does
# not
guarantee a correct match. You may have multiple numbers on
# the
right of the semicolon.
MATCH="`cat
$MATCHFILE | awk -F\; '/'$SENDER2'/ { print $1 }' \
2>/dev/null`"
# If there is a match then
change SENDER2 to the matching text
# so it
will show in the subject line instead of the telno.
if [ "$MATCH" !=
"" ]; then
SENDER2=$MATCH
fi
fi
#############################################################
########## END ALTERNATE SENDER RETRIEVAL METHOD
############
#############################################################
if [ -f $FILE ]; then
# A fax was received, since a TIF file came in.
#######################################
# COPY FAX FILE TO WEB FOLDER. ALSO, MODIFIED SCRIPTS BELOW
TO SHOW HTTP:
# REFERENCE FTP REFERENCE BECAUSE FTP REFERENCES DONT WORK
PROPERLY.
if [ $WEBNOTIFY ]; then
# Copy the fax files to the
destination folder in the Apache server
# Copy the TIF file there
first
cp $1 $WEBFOLDER
# Copy the
LOG file there next
cp log/c$3
$WEBFOLDER
# Set the
permissions so they can be read. Folder must be writable!
chmod 755
$WEBFOLDER/*
fi
################################
SENDTO=
if [ -f etc/FaxDispatch ]; then
.
etc/FaxDispatch
#
NB: FaxDispatch sets SENDTO based on $SENDER
fi
(echo "To: $TOADDR"
echo "From: The HylaFAX Receive Agent
<fax>"
if [ "$MSG" ]; then
echo "Subject:
(Partial) Facsimile received from $SENDER2";
else
echo "Subject:
Facsimile received from $SENDER2";
fi
echo ""
if [ $WEBNOTIFY ]; then
echo "The following fax may or may not be yours... view it to
see."
echo
""
echo
"$FILE ($WEBSITE$WEBFAXPATH/$FILENAME):"; $INFO -n $FILE
else
echo
"$FILE
(
ftp://$HOSTNAME:$PORT/$FILE):";
$INFO -n $FILE
fi
echo "ReceivedOn: $DEVICE"
if [ "$MSG" ]; then
echo
""
echo
"The full document was not received because:"
echo
""
echo
" $MSG"
echo
""
echo
" ---- Transcript of session follows
----"
echo
""
if [ -f
log/c$COMMID ]; then
$SED -e '/-- data/d' \
-e '/start.*timer/d' -e '/stop.*timer/d' \
log/c$COMMID
elif [ -n "$COMMID" ]; then
echo " No transcript available (CommID c$COMMID)."
else
echo " No transcript available."
fi
else
if [ $WEBNOTIFY ]; then
#echo "$FILE ($WEBSITE$WEBFAXPATH/c$COMMID):"; $INFO -n $FILE
echo "$FILE ($WEBSITE$WEBFAXPATH/c$COMMID):"
echo
echo "To manage fax logs and tifs on the web server,"
echo "click here: ($WEBSITE/$WEBCGIFILE)";
else
echo "CommID: c$COMMID (
ftp://$HOSTNAME:$PORT/log/c$COMMID)"
fi
fi
if [ -n "$SENDTO" ]; then
echo ""
echo "The facsimile was automatically dispatched to: $SENDTO."
fi
) | 2>&1 $SENDMAIL -ffax -oi $TOADDR
if [ -n "$SENDTO" ]; then
(MIMEBOUNDARY="NextPart$$"
echo "Mime-Version: 1.0"
echo "Content-Type: Multipart/Mixed; Boundary=\"$MIMEBOUNDARY\""
echo "Content-Transfer-Encoding: 7bit"
echo "To: $SENDTO"
echo "From: The HylaFAX Receive Agent <fax>"
if [ "$MSG" ]; then
echo "Subject: (Partial) Facsimile received from $SENDER2";
else
echo "Subject: Facsimile received from $SENDER2";
fi
echo ""
echo "--$MIMEBOUNDARY"
echo "Content-Type: text/plain; charset=us-ascii"
echo "Content-Transfer-Encoding: 7bit"
echo ""
if [ $WEBNOTIFY ]; then
echo "The following fax may or may not be yours... view it to see."
echo ""
echo "$FILE ($WEBSITE$WEBFAXPATH/$FILENAME):"; $INFO -n $FILE
else
echo "$FILE (
ftp://$HOSTNAME:$PORT/$FILE):"; $INFO -n $FILE
fi
echo "ReceivedOn: $DEVICE"
if [ "$MSG" ]; then
echo ""
echo "The full document was not received because:"
echo ""
echo " $MSG"
echo ""
echo " ---- Transcript of session follows ----"
echo ""
if [ -f log/c$COMMID ]; then
$SED -e '/-- data/d' \
-e '/start.*timer/d' -e '/stop.*timer/d' \
log/c$COMMID
elif [ -n "$COMMID" ]; then
echo " No transcript available (CommID c$COMMID)."
else
echo " No transcript available."
fi
else
if [ $WEBNOTIFY ]; then
#echo "$FILE ($WEBSITE$WEBFAXPATH/c$COMMID):"; $INFO -n $FILE
echo "$FILE ($WEBSITE$WEBFAXPATH/c$COMMID):"
echo
echo "To manage fax logs and tifs on the web server,"
echo "click here: ($WEBSITE/$WEBCGIFILE)";
else
echo "CommID: c$COMMID (
ftp://$HOSTNAME:$PORT/log/c$COMMID)"
fi
fi
echo ""
echo "--$MIMEBOUNDARY"
echo "Content-Type: application/postscript"
echo "Content-Description: FAX document"
echo "Content-Transfer-Encoding: 7bit"
echo ""
$FAX2PS $FILE 2>/dev/null
echo ""
echo "--$MIMEBOUNDARY--"
) | 2>&1 $SENDMAIL -ffax -oi $SENDTO
fi
else
#
# Generate notification mail for a failed attempt.
#
SENDER="`$INFO $FILE | $AWK -F: '/Sender/ { print $2 }' 2>/dev/null`"
(echo "To: $TOADDR"
echo "From: The HylaFAX Receive Agent <fax>"
echo "Subject: Facsimile FAILED from $SENDER2";
echo ""
echo "An attempt to receive facsimile on $DEVICE failed because:"
echo ""
echo " $MSG"
echo ""
echo ""
echo " ---- Transcript of session follows ----"
echo ""
if [ -f log/c$COMMID ]; then
$SED -e '/-- data/d' \
-e '/start.*timer/d' -e '/stop.*timer/d' \
log/c$COMMID
elif [ -n "$COMMID" ]; then
echo " No transcript available (CommID c$COMMID)."
else
echo " No transcript available."
fi
) | 2>&1 $SENDMAIL -ffax -oi $TOADDR
fi
====== SNIP ========================================================================
I'm new to the list, but I figured *someone* might appreciate and benefit from the scripting changes I have made to MY faxrcvd script.
FYI: I am running Mandrake Linux 8.0, Postfix, Apache on a Celeron 600mhz. box with 128 mb ram. Seems like an overkill, but our two fax modems (Multitech 1932zdx w/ fax patch #54) are very busy receiving sometimes. I found that the P133 w/64 mb tram I had been using had trouble performing the TIFF2PS conversions properly, sometimes corrupting them. Not good. That problem went away with this box, so I will stick with it. The print jobs pump out real fast with it which is good. FYI: Multitech is a GREAT company, really supports their products. They will send out free PROM updates to their modems - they updated 10 modems I had at work at no charge for this fax fix.
The following features I scripted may not be written real efficiently, but at least they work :>
1. Better TSID ID
I saw that in some cases I got no TSID in the message - that the default SENDER variable was based upon info stored in the actual resulting TIF file and not the log. Since there is no TIF file on a failed fax, I devised an alternate SENDER2 variable which is parsed from the cxxxx log file, then I compare the two, and if one is blank the other takes priority. I this way I can see who is having problems faxing me.
2. Display Company Name instead of Fax Number
I added some comparison testing to "Match" the TSID against a simple semicolon (;) delimited text file to a company name so the reception email displays the company name instead of the TSID. This way I can see who the fax is from rather than the fax number usually in there. If both variables are null I display - UNSPECIFIED -.
3. Web Fax Viewing
The default FTP pointers in the email messages didn't work for me so I wanted to set up a web-based fax retrieval system. I as the sysadmin want to be able to review and reprint faxes that are automatically printed via CUPS to an HP laserjet here, and this was the easiest way for me to do it. For my personal server I wanted to be able to retrieve faxes from anywhere I might be, so web based fax access made sense.
I set up Apache on my Mandrake Linux 8.0 system and set up the script to copy the fax TIF and Cxxx log files to the web folder. The script emails me a fax reception message that includes web links to cgi scripts which simply display the fax or log, respectively, or delete the copies in that folder.
Hope I have been of help!
Mark Tilles
____________________ HylaFAX(tm) Users Mailing List _______________________
To unsub: mail -s unsubscribe hylafax-users-request@hylafax.org < /dev/null