notify.sh.in
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:21k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. #    $Id: notify.sh.in,v 1.40 2008/07/21 19:30:52 faxguy Exp $
  3. #
  4. # ============================================
  5. #
  6. # A NOTE ON CUSTOMIZING this script:
  7. #
  8. # You are welcome (even encouraged) to customize this script to suit the
  9. # needs of the deployment.  However, be advised that this script is
  10. # considered part of the package distribution and is subject to being
  11. # overwritten by subsequent upgrades.  Please consider copying this file
  12. # to something like "etc/notify-custom", modifying that copy of the file,
  13. # and then setting "NotifyCmd: etc/notify-custom" in your faxq config
  14. # file to prevent your customizations from being overwritten during an
  15. # upgrade process.
  16. #
  17. # ============================================
  18. #
  19. # HylaFAX Facsimile Software
  20. #
  21. # Copyright (c) 1990-1996 Sam Leffler
  22. # Copyright (c) 1991-1996 Silicon Graphics, Inc.
  23. # HylaFAX is a trademark of Silicon Graphics
  24. # Permission to use, copy, modify, distribute, and sell this software and 
  25. # its documentation for any purpose is hereby granted without fee, provided
  26. # that (i) the above copyright notices and this permission notice appear in
  27. # all copies of the software and related documentation, and (ii) the names of
  28. # Sam Leffler and Silicon Graphics may not be used in any advertising or
  29. # publicity relating to the software without the specific, prior written
  30. # permission of Sam Leffler and Silicon Graphics.
  31. # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  32. # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  33. # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  34. # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  35. # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  36. # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  37. # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  38. # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  39. # OF THIS SOFTWARE.
  40. #
  41. #   2004/02/28  Frank Brock
  42. #
  43. # The notify shell now behaves in a manner like faxrcvd.  
  44. # It is now written in shell with a little embedded awk as needed.
  45. . bin/common-functions
  46. #
  47. # notify qfile why jobtime [nextTry]
  48. #
  49. # Return mail to the submitter of a job when notification is needed.
  50. #
  51. if [ $# != 3 ] && [ $# != 4 ]; then
  52.     echo "Usage: $0 qfile why jobtime [nextTry]"
  53.     hfExit 1
  54. fi
  55. #
  56. # If you want to change the presentation of the e-mail notification
  57. # then this is the place to change that.  We put it here, up-front,
  58. # because this is most likely what most customizations will deal with.
  59. #
  60. notify_mail()
  61. {
  62.     MAILSUBJECT="$1"
  63.     MAILTO="$2"
  64.    (echo "MIME-Version: 1.0"
  65.     echo "Content-Type: Multipart/Mixed; Boundary="$MIMEBOUNDARY""
  66.     echo "Content-Transfer-Encoding: 7bit"
  67.     echo "To: $MAILTO"
  68.     echo "From: $FROMADDR"
  69.     printf "Subject: "
  70.     ( echo "$MAILSUBJECT" ) | LANG=C $AWK -f bin/rfc2047-encode.awk -v charset="$CHARSET"; echo
  71.     echo ""
  72.     echo "This is a multi-part message in MIME format."
  73.     echo ""
  74.     echo "--$MIMEBOUNDARY"
  75.     echo "Mime-Version: 1.0"
  76.     echo "Content-Type: text/plain; charset=$CHARSET"
  77.     echo "Content-Transfer-Encoding: quoted-printable"
  78.     echo ""
  79.     (
  80.     if [ -z "$THISJOBTYPE" ]; then
  81. printf "$jobtag $DICTTO $number"
  82.     else
  83. eval printf "$DICTYOURJOBTO"
  84.     fi
  85.     if [ "$WHY" = "done" ]; then
  86. echo "$DICTCOMPLETEDSUCCESSFULLY"
  87. echo ""
  88.     else
  89. case "$WHY" in
  90.     failed)
  91. printf " $DICTFAILEDBECAUSEn    "
  92. echo "$FAXSTATUSMSG";;
  93.     rejected)
  94. printf " $DICTREJECTEDBECAUSEn    "
  95. echo "$FAXSTATUSMSG";;
  96.     blocked)
  97. printf " $DICTDELAYEDBECAUSEn    "
  98. echo "$FAXSTATUSMSG"
  99. echo ""
  100. echo "$DICTASSOONASPOSSIBLE";;
  101.     requeued)
  102. printf " $DICTWASNOTSENTn    "
  103. echo "$FAXSTATUSMSG"
  104. echo ""
  105. echo "$DICTWILLBERETRIED $NEXT.";;
  106.     killed|removed)
  107. echo " $DICTWASDELETED";;
  108.     timedout)
  109. echo " $DICTTIMEDOUT";;
  110.     format_failed)
  111. echo " $DICTCONVERSION1"
  112. echo "$DICTCONVERSION2"
  113. echo ""
  114. echo "$FAXSTATUSMSG"
  115. echo ""
  116. echo "$DICTCONVERSION3";;
  117.     no_formatter)
  118. echo " $DICTNOFORMATTER1"
  119. echo "$DICTNOFORMATTER2";;
  120.     poll_*)
  121. printf "$DICTPOLLINGFAILED"
  122. if [ "$WHY" = "poll_rejected" ] ; then
  123.     echo "$DICTREMOTEREJECTED"
  124. elif [ "$WHY" = "poll_no_document" ] ; then
  125.     echo "$DICTNODOCTOPOLL"
  126. elif [ "$WHY" = "poll_failed" ] ; then
  127.     echo "$DICTUNSPECIFIEDPROBLEM"
  128. fi;;
  129.     *)
  130. echo " $DICTUNKNOWNREASON1"
  131. echo "$DICTUNKNOWNREASON2"
  132. echo "$DICTUNKNOWNREASON3"
  133. echo ""
  134. echo "why: $WHY"
  135. echo "jobTime: $JTIME"
  136. echo "nextTry: $NEXT"
  137. echo  ""
  138. echo "$DICTUNKNOWNREASON4";;
  139. esac
  140. echo ""
  141. echo "    ---- $DICTUNSENTJOBSTATUS ----"
  142. echo ""
  143.     fi
  144.     echo "$DICTDESTINATION| $number" | printFormatted $ITEMSIZE
  145.     echo "$DICTSENDER| $sender" | printFormatted $ITEMSIZE
  146.     echo "$DICTMAILADDR| $mailaddr" | printFormatted $ITEMSIZE
  147.     if [ "$jobtype" = "facsimile" ] ; then
  148. if [ "$npages" -gt 0 ]; then
  149.     echo "$DICTPAGES| $npages" | printFormatted $ITEMSIZE
  150. fi
  151. if [ -n "$faxstatus" ] && [ -n "$dirnum" ]; then
  152.     echo  "$DICTDIRNUM| $dirnum ($DICTDIRNEXTPAGE)" | printFormatted $ITEMSIZE
  153. fi
  154. if [ -n "$csi" ]; then
  155.     echo "$DICTRECEIVER| $csi" | printFormatted $ITEMSIZE
  156. fi
  157.         if [ "$RETURNTECHINFO" = "yes" ] && [ "$totdials" -gt 0 ]; then
  158.     case "$resolution" in
  159. 196) echo "$DICTQUALITY| $DICTFINE" | printFormatted $ITEMSIZE;;
  160. 98) echo "$DICTQUALITY| $DICTNORMAL" | printFormatted $ITEMSIZE;;
  161. *) echo "$DICTRES| $resolution (lpi)" | printFormatted $ITEMSIZE;;
  162.             esac
  163.             echo "$DICTPAGEWIDTH| $pagewidth (mm)" | printFormatted $ITEMSIZE
  164.             echo "$DICTPAGELENGTH| $pagelength (mm)" | printFormatted $ITEMSIZE
  165.             echo "$DICTSIGNALRATE| $signalrate" | printFormatted $ITEMSIZE
  166.             echo "$DICTDATAFORMAT| $dataformat" | printFormatted $ITEMSIZE
  167.     if [ -n "$equipment" ]; then
  168. echo "$DICTREMOTEEQUIPMENT| $equipment" | printFormatted $ITEMSIZE
  169.     fi
  170.     if [ -n "$station" ]; then
  171. echo "$DICTREMOTESTATION| $station" | printFormatted $ITEMSIZE
  172.     fi
  173.         fi
  174.     fi
  175.     if [ "$RETURNTECHINFO" = "yes" ] ; then
  176.         if [ "$tottries" != "1" ] ; then 
  177.             echo "$DICTDIALOGS| $tottries ($DICTREMOTEEXCHANGES)" | printFormatted $ITEMSIZE
  178.         fi
  179.         if [ "$totdials" != "1" ] ; then 
  180.             echo "$DICTCALLS| $totdials ($DICTTOTALCALLS)" | printFormatted $ITEMSIZE
  181.         fi
  182. if [ "$ndials" != "0" ]; then
  183.     echo "$DICTDIALS| $ndials ($DICTFAILEDCALLS)" | printFormatted $ITEMSIZE
  184. fi
  185. echo "$DICTMODEM| $modemused" | printFormatted $ITEMSIZE
  186. if [ -n "$faxstatus" ]; then
  187.     echo "$DICTSTATUS| $FAXSTATUSMSG" | printFormatted $ITEMSIZE
  188. fi
  189.         echo "$DICTSUBMITTEDFROM| $client" | printFormatted $ITEMSIZE
  190.         echo "$DICTJOBID| $jobid" | printFormatted $ITEMSIZE
  191.         echo "$DICTGROUPID| $groupid" | printFormatted $ITEMSIZE
  192. if [ -n "$commid" ]; then
  193.             echo "$DICTCOMMID| c$commid" | printFormatted $ITEMSIZE
  194. fi
  195. if [ -n "$JTIME" ]; then
  196.     printf "n$DICTPROCESSINGTIME %s.n" "$JTIME"
  197. fi
  198.     fi
  199.     if [ "$jobtype" = "facsimile" ]; then
  200. if [ $nfiles -gt 0 ] && [ "$RETURNTECHINFO" = "yes" ] ; then
  201.     echo ""
  202.     echo "    ---- $DICTDOCSSUBMITTED ----"
  203.     echo ""
  204.             eval echo "$DICTDOCSTEXT1"
  205.             eval echo "$DICTDOCSTEXT2"
  206.             eval echo "$DICTDOCSTEXT3"
  207.             eval echo "$DICTDOCSTEXT4"
  208.             echo ""
  209.             printf "%-20s %8s %sn" "$DICTFILENAME" "$DICTSIZE" "$DICTTYPE"
  210.             for i in `local_seq 1 $nfiles`; do
  211.                 name="files_$i"
  212.                 eval filename=`echo "$"$name`
  213.                 if [ -f $filename ] ; then
  214.                         set - `wc -c "$filename"`
  215.                     FILESIZE=$1
  216.                     type="filetype_$i"
  217.                     eval filetype=`echo "$"$type`
  218.                     #
  219.                     # Because Ghostscript accepts PDF identically to PostScript
  220.                     # and because HylaFAX has historically handled PDF named as
  221.                     # "postscript" we have to double-check the PostScript filetype.
  222.                     #
  223.                     if [ "$filetype" = "PostScript" ]; then
  224.                         if [ "`fileType $filename`" != "PostScript" ]; then
  225.                             filetype=PDF
  226.                         fi
  227.                     fi
  228.                     printf "%-20s %8d %sn" "$filename" "$FILESIZE" "$filetype"
  229.                 fi
  230.             done
  231.         fi
  232.     elif [ "$jobtype" = "pager" ] && [ "$WHY" != "done" ]; then
  233.         if [ $npins -ne 0 ] ; then
  234.     echo ""
  235.     echo "    ---- $DICTUNSENTPAGES ----"
  236.     echo ""
  237.             for i in `local_seq 1 $npins`; do
  238.                 name="files_$i"
  239.                 eval pin=`echo "$"$name`
  240.                 printf "%15sn" "$DICTPIN" $pin
  241.             done
  242.         fi
  243.         if [ $nfiles -ne 0 ] && [ -s $files_0 ] ; then
  244.     echo ""
  245.     echo "    ---- $DICTMESSAGETEXT ----"
  246.     echo ""
  247.             cat $files_0
  248.         fi
  249.     fi
  250.     ) | LANG=C $AWK -f bin/qp-encode.awk
  251.     if [ -n "$faxstatus" ] && [ "$RETURNTRANSCRIPT" = "yes" ] ; then
  252. (
  253.  # use -e in echo to interpret escape characters in faxstatus
  254.  echo ""
  255.  echo "$DICTADDITIONALINFO"
  256.  echo ""
  257.  # we need to change the 'n' in the strings to real newlines
  258.  echo "     $ERRMSG" | sed -e 's/\n/n/g'
  259.  echo ""
  260.  echo "    ---- $DICTLOGFOLLOWS2 ----"
  261.  echo ""
  262. ) | LANG=C $AWK -f bin/qp-encode.awk
  263.         COMFILE="log/c$commid"
  264.         if [ -f "$COMFILE" ] ; then
  265.     echo ""
  266.     echo "--$MIMEBOUNDARY"
  267.     echo "Content-Type: text/plain; charset=US-ASCII; name=c$commid"
  268.     echo "Content-Description: FAX session log"
  269.     echo "Content-Transfer-Encoding: 7bit"
  270.     echo "Content-Disposition: inline"
  271.     echo ""
  272.             # dump the comfile to output except for '-- data' lines
  273.             cat $COMFILE | $SED -e '/-- data/d' 
  274. -e '/start.*timer/d' -e '/stop.*timer/d'
  275.         else 
  276.     (
  277.              printf "$DICTNOLOGAVAIL"
  278.              if [ -n "$commid" ] ; then  # non 0 len commid value
  279.                     printf "($DICTCOMMID c$commid)"
  280.              fi
  281.              echo "."
  282.     ) | LANG=C $AWK -f bin/qp-encode.awk
  283.         fi
  284.     fi
  285.     for type in $RETURNFILETYPE; do 
  286. if [ $nfiles -gt 0 ] ; then
  287.     for i in `local_seq 1 $nfiles`; do 
  288. name="files_$i"
  289. eval filename=`echo "$"$name`
  290. if [ -s $filename ] ; then # file is > 0 size
  291.     ftype="filetype_$i"
  292.     eval FROMFMT=`echo "$"$ftype`
  293.     #
  294.     # Because Ghostscript accepts PDF identically to PostScript
  295.     # and because HylaFAX has historically handled PDF named as
  296.     # "postscript" we have to double-check the PostScript filetype.
  297.     #
  298.     if [ "$FROMFMT" = "PostScript" ]; then
  299. if [ "`fileType $filename`" != "PostScript" ]; then
  300.     FROMFMT=PDF
  301. fi
  302.     fi
  303.     FILEEXTEN="$type"
  304.     if [ "$FILEEXTEN" = "original" ]; then
  305. case "$FROMFMT" in
  306.     "TIFF") FILEEXTEN=tif;;
  307.     "PostScript") FILEEXTEN=ps;;
  308.     "PDF") FILEEXTEN=pdf;;
  309. esac
  310.     fi
  311.     MIMETYPE="application/octet-stream"
  312.     case "$FILEEXTEN" in
  313. tif) MIMETYPE="image/tiff";;
  314. ps) MIMETYPE="application/postscript";;
  315. pdf) MIMETYPE="application/pdf";;
  316.     esac
  317.     echo ""
  318.     echo "--$MIMEBOUNDARY"
  319.     echo "Content-Type: $MIMETYPE; name="$number-$i.$FILEEXTEN""
  320.     echo "Content-Description: FAX document"
  321.     echo "Content-Transfer-Encoding: $ENCODING"
  322.     echo "Content-Disposition: attachment; filename="$number-$i.$FILEEXTEN""
  323.     echo ""
  324.     case "$FILEEXTEN" in
  325. tif) putTifEncodedImage "$filename" "$FROMFMT";;
  326. ps) putPsEncodedImage "$filename" "$FROMFMT";;
  327. pdf) putPdfEncodedImage "$filename" "$FROMFMT";;
  328. *) encode "$filename";;
  329.     esac
  330.         fi
  331.     done
  332. fi
  333.     done
  334.     # put out a terminating MIME boundary
  335.     echo ""
  336.     echo "--$MIMEBOUNDARY--"
  337.    ) 2>$ERRORSTO | $SENDMAIL -f$FROMADDR -oi -t
  338. }
  339. test -f etc/setup.cache || {
  340.     SPOOL=`pwd`
  341.     cat<<EOF
  342. FATAL ERROR: $SPOOL/etc/setup.cache is missing!
  343. The file $SPOOL/etc/setup.cache is not present.  This
  344. probably means the machine has not been setup using the faxsetup(@MANNUM1_8@)
  345. command.  Read the documentation on setting up HylaFAX before you
  346. startup a server system.
  347. EOF
  348.     hfExit 1
  349. }
  350. # need to parse out the command line here.  some may be needed
  351. # in the FaxNotify.
  352. QFILE=$1
  353. WHY=$2
  354. JTIME=$3
  355. NEXT=${4:-'??:??'}
  356. # These settings may not be present in setup.cache if user upgraded and
  357. # didn't re-run faxsetup; we set them before calling setup.cache for
  358. # backward compatibility.
  359. ENCODING=base64
  360. MIMENCODE=mimencode
  361. TIFF2PDF=bin/tiff2pdf
  362. TTYCMD=tty
  363. CHARSET=UTF-8 # this really gets set in dictionary
  364. . etc/setup.cache
  365. local_seq() {
  366. if [ $1 -gt $2 ]; then
  367. return
  368. fi
  369. COUNT=$1
  370. while [ $COUNT -le $2 ]
  371. do
  372. echo $COUNT
  373. COUNT=`expr $COUNT + 1`
  374. done
  375. }
  376. INFO=$SBIN/faxinfo
  377. TIFFINFO=tiffinfo
  378. FAX2PS=$TIFFBIN/fax2ps
  379. TIFF2PS=tiff2ps
  380. PS2PDF=ps2pdf
  381. PDF2PS=pdf2ps
  382. PS2FAX=bin/ps2fax
  383. PDF2FAX=bin/pdf2fax
  384. TOADDR=FaxMaster
  385. FROMADDR=fax
  386. NOTIFY_FAXMASTER=never
  387. RETURNFILETYPE=
  388. MIMEBOUNDARY="NextPart$$"
  389. RETURNTECHINFO=yes
  390. case $WHY in
  391.     failed|requeued|poll_rejected|poll_no_document|poll_failed)
  392. RETURNTRANSCRIPT=yes;;
  393.     *)
  394. RETURNTRANSCRIPT=no;;
  395. esac
  396. #
  397. # Redirect errors to a tty, if possible, rather than
  398. # dev-nulling them or allowing them to creep into
  399. # the mail.
  400. #
  401. if $TTYCMD >/dev/null 2>&1; then
  402.     ERRORSTO=`$TTYCMD`
  403. else
  404.     ERRORSTO=/dev/null
  405. fi
  406. adjustNotifyFaxMaster()
  407. {
  408. #  Determine what NOTIFY_FAXMASTER should be set to based
  409. #  on the current value of NOTIFY_FAXMASTER and on other
  410. #  attributes set about this notification.
  411. #  NOTIFY_FAXMASTER can be set to
  412. #    yes - send everything
  413. #    no - send nothing
  414. #    errors - send only failed type faxes that are not from busy, no answer or no carrier
  415. #    always - send everything
  416. #    never - send nothing
  417. #
  418. # known $WHY values we can test to set NOTIFY_FAXMASTER are
  419. # "done" "failed" "rejected" "blocked" "requeued" "removed" "killed" "timedout"
  420. # "format_failed" "no_formatter" "poll_rejected" "poll_no_document" "poll_failed"
  421.     case $NOTIFY_FAXMASTER in
  422.         never|no) NOTIFY_FAXMASTER=no;;
  423.         always|yes) NOTIFY_FAXMASTER=yes;;
  424.         errors) 
  425.             case $WHY in
  426.                 timedout|rejected|format_failed|no_formatter|poll_rejected|poll_no_document)
  427.     NOTIFY_FAXMASTER=yes;;
  428. "done"|blocked|removed|killed)
  429.     NOTIFY_FAXMASTER=no;;
  430.                 *)
  431.                     if (match "$faxstatus" "Busy signal") || (match "$faxstatus" "No answer") || (match "$faxstatus" "No carrier"); then
  432.                         NOTIFY_FAXMASTER=no
  433.                     else 
  434.                         NOTIFY_FAXMASTER=yes
  435.                     fi;;
  436.             esac;;
  437.         *) NOTIFY_FAXMASTER=no;;
  438.     esac
  439. }
  440. setCustomValues()
  441. {
  442.     #
  443.     # Apply customizations.  All customizable variables should
  444.     # be set to their non-customized defaults prior to this.
  445.     #
  446.     if [ -f etc/FaxNotify ]; then
  447.         # source notify preferences
  448.         . etc/FaxNotify
  449.     fi
  450.     #
  451.     # Language settings...
  452.     #
  453.     . bin/dictionary
  454.     if [ -f etc/FaxDictionary ]; then
  455. . etc/FaxDictionary
  456.     fi
  457.     #
  458.     #  Customize error message.
  459.     #
  460.     if [ -n "$errorcode" ]; then
  461. eval ERRMSG="$"`echo $errorcode`
  462. if [ -z "$ERRMSG" ]; then
  463.     ERRMSG="$faxstatus"
  464. fi
  465.     else
  466. ERRMSG="$faxstatus"
  467.     fi
  468.     setItemSize
  469. }
  470. fileType()
  471. # determine the type of file passed using the unix 'file' command
  472. # with the '-i' option (mime type output)
  473. {
  474.     FILENAME=$1
  475.     if [ -f "$FILENAME" ] ; then
  476. FILETYPE=`file $FILENAME`
  477.         if (match "$FILETYPE" "postscript") ; then 
  478.             echo "PostScript"
  479.         elif (match "$FILETYPE" "tiff") ; then 
  480.             echo "TIFF"
  481.         elif (match "$FILETYPE" "pdf") ; then 
  482.             echo "PDF"
  483.         else
  484.             echo "$DICTUNKNOWNDOCTYPE"
  485.         fi
  486.     else
  487.         echo "$DICTNOFILEEXISTS"
  488.     fi
  489. }
  490. putPdfEncodedImage()
  491. # Convert the source file from the CONVERTFROM type into a pdf file and 
  492. # then do a mimeEndode of the file
  493. {
  494.     SOURCEFILE=$1
  495.     CONVERTFROM=$2
  496.     OUTFILE="tmp/conv2pdf$$.out" ;
  497.     if [ "$CONVERTFROM" = "PDF" ] ; then
  498.         encode "$SOURCEFILE"
  499.         return # all done here
  500.     elif [ "$CONVERTFROM" = "TIFF" ] ; then
  501.         CONVERTCMD="$TIFF2PDF -o $OUTFILE $SOURCEFILE" 
  502.     elif [ "$CONVERTFROM" = "PostScript" ] ; then
  503.         CONVERTCMD="$PS2PDF $SOURCEFILE $OUTFILE" 
  504.     else
  505.         return # unknow convert from format
  506.     fi
  507.     $CONVERTCMD > $ERRORSTO 2>&1
  508.     encode "$OUTFILE"
  509.     $RM -f $OUTFILE > $ERRORSTO 2>&1
  510. }
  511. putPsEncodedImage()
  512. # Convert the source file from the CONVERTFROM type into a ps file and 
  513. # then do a mimeEndode of the file
  514. {
  515.     SOURCEFILE=$1
  516.     CONVERTFROM=$2
  517.     OUTFILE="tmp/conv2ps$$.out" ;
  518.     if [ "$CONVERTFROM" = "PostScript" ] ; then
  519.         encode "$SOURCEFILE"
  520.         return # all done here
  521.     elif [ "$CONVERTFROM" = "TIFF" ] ; then
  522.         #  tiff2ps -a for all pages, 
  523.         CONVERTCMD="$TIFF2PS -a  $SOURCEFILE > $OUTFILE" 
  524.     elif [ "$CONVERTFROM" = "PDF" ] ; then
  525.         CONVERTCMD="$PDF2PS $SOURCEFILE $OUTFILE" 
  526.     else
  527.         return # unknow convert from format
  528.     fi
  529.     $CONVERTCMD > $ERRORSTO 2>&1
  530.     encode "$OUTFILE"
  531.     $RM -f $OUTFILE > $ERRORSTO 2>&1
  532. }
  533. putTifEncodedImage()
  534. # Convert the source file from the CONVERTFROM type into a tif file and 
  535. # then do a mimeEndode of the file
  536. {
  537.     SOURCEFILE=$1
  538.     CONVERTFROM=$2
  539.     OUTFILE="tmp/conv2tif$$.out" ;
  540.     if [ $CONVERTFROM = "TIFF" ] ; then 
  541.         encode "$SOURCEFILE"
  542.         return # all done here
  543.     elif [ $CONVERTFROM = "PDF" ] ; then 
  544.         CONVERTCMD="$PDF2FAX -r $resolution -o $OUTFILE $SOURCEFILE" 
  545.     elif [ $CONVERTFROM = "PostScript" ] ; then 
  546.         CONVERTCMD="$PS2FAX -r $resolution -o $OUTFILE $SOURCEFILE" 
  547.     else
  548.         return # unknow convert from format
  549.     fi
  550.     $CONVERTCMD > $ERRORSTO 2>&1
  551.     encode "$OUTFILE"
  552.     $RM -f $OUTFILE > $ERRORSTO 2>&1
  553. }
  554. match()
  555. #  look for substring in fullsting.  substring can be a regular expression or plain string
  556. #  if the substring is found anywhere in the full string, true(0) is returned.
  557. {
  558.     FULLSTR="$1"
  559.     SUBSTR="$2"
  560.     echo "$FULLSTR" | $GREP -i "$SUBSTR" > /dev/null 2>&1
  561.     if [ $? -eq 0 ] ; then
  562.         return 0
  563.     else
  564.         return 1
  565.     fi
  566. }
  567. ##########
  568. ##  MAIN
  569. ##########
  570. SetupPrivateTmp
  571. #  exports used for debug tracing
  572. #export -f putTifEncodedImage
  573. #export -f putPdfEncodedImage
  574. #export -f parseQfile
  575. #export -f match
  576. # sh -x
  577. # we parse the q file fisrt in case any of the varialbe setting 
  578. # operations may want to know about the details of the fax
  579. parseQfile  
  580. #process the FaxNotify script after parse q file in case the admin wants to 
  581. # set any values based on what is in the q file
  582. setCustomValues 
  583. # adjust faxmaster notify based on some rules and what is found 
  584. # possibly in the q file.
  585. adjustNotifyFaxMaster 
  586. THISJOBTYPE=""
  587. if [ -z "$jobtag" ] ; then
  588.     THISJOBTYPE=`eval echo "$"DICT$jobtype`
  589.     jobtag="`eval echo $DICTJOB`"
  590. fi
  591. if [ "$doneop" = "default" ] ; then
  592.     doneop="remove"
  593. fi
  594. if [ "$jobtype" = "pager" ] ; then
  595.     number=$pagernum
  596. fi
  597. DESTINATION="$receiver"
  598. if [ -n "$receiver" ] && [ -n "$company" ]; then
  599.     DESTINATION="$receiver $DICTAT "
  600. fi
  601. DESTINATION="$DESTINATION$company"
  602. if [ -n "$DESTINATION" ]; then
  603.     DESTINATION="$DESTINATION ($number)"
  604. else
  605.     DESTINATION="$number"
  606. fi
  607. if [ -z "$faxstatus" ] ; then # 0 string len
  608.     FAXSTATUSMSG="<$DICTNOREASON>"
  609. else
  610.     # we need to change the 'n' in the strings to real newlines
  611.     FAXSTATUSMSG=`echo "$ERRMSG" | sed -e 's/\n/n/g'`
  612. fi
  613. case "$WHY" in
  614.     "done")
  615. notify_mail "$jobtag $DICTTO $DESTINATION $DICTCOMPLETED" "$mailaddr";;
  616.     failed)
  617. notify_mail "$jobtag $DICTTO $DESTINATION $DICTFAILED" "$mailaddr";;
  618.     rejected)
  619. notify_mail "$jobtag $DICTTO $DESTINATION $DICTFAILED" "$mailaddr";;
  620.     blocked)
  621. notify_mail "$jobtag $DICTTO $DESTINATION $DICTBLOCKED" "$mailaddr";;
  622.     requeued)
  623. notify_mail "$jobtag $DICTTO $DESTINATION $DICTREQUEUED" "$mailaddr";;
  624.     removed|killed)
  625. notify_mail "$jobtag $DICTTO $DESTINATION $DICTREMOVEDFROMQUEUE" "$mailaddr";;
  626.     timedout)
  627. notify_mail "$jobtag $DICTTO $DESTINATION $DICTFAILED" "$mailaddr";;
  628.     format_failed)
  629. notify_mail "$jobtag to $DESTINATION $DICTFAILED" "$mailaddr";;
  630.     no_formatter)
  631. notify_mail "$jobtag $DICTTO $DESTINATION $DICTFAILED" "$mailaddr";;
  632.     poll_*)
  633. notify_mail "$DICTNOTICEABOUT $jobtag" "$mailaddr";;
  634.     *)
  635. notify_mail "$DICTNOTICEABOUT $jobtag" "$mailaddr";;
  636. esac
  637. if [ "$NOTIFY_FAXMASTER" = "yes" ]; then
  638.     # make sure that FAXMASTER gets all information in email by forcing some RETURN values
  639.     # and then reset them later
  640.     origRETURNTRANSCRIPT=$RETURNTRANSCRIPT
  641.     origRETURNTECHINFO=$RETURNTECHINFO
  642.     origRETURNFILETYPE=$RETURNFILETYPE
  643.     RETURNTRANSCRIPT="yes"
  644.     RETURNTECHINFO="yes"
  645.     RETURNFILETYPE=""
  646.     if [ -z "$jobtag" ] ; then
  647. jobtag="$jobtype job $jobid"
  648.     fi
  649.     notify_mail "$jobtag to $number $WHY" "$TOADDR"
  650.     RETURNTRANSCRIPT=$origRETURNTRANSCRIPT
  651.     RETURNTECHINFO=$origRETURNTECHINFO
  652.     RETURNFILETYPE=$origRETURNFILETYPE
  653. fi