#! @SCRIPT_SH@ # # notify qfile why jobtime [nextTry] # # Return mail to the submitter of a job when notification is needed. # # This is a rewrite of the notify.sh. # This version uses the "template" capabilityes to send the e-mails. # FaxQueuer only calls notify if the job requested notification, # So if we are called, we *will* send an email (barring any errors) # # etc/FaxNotify controls *what* we e-mail # - TEMPLATE=subdir # - RETURNFILETYPE=raw|PDF|PS|TIFF # # It send the e-mail to $mailaddr, which is the mailaddr of the job. # The e-mail template used is selectec from: # - etc/templates/$TEMPLATE/notify-$WHY-page.txt (only for pager jobs) # - etc/templates/$TEMPLATE/notify-$WHY.txt # If it is a pager job, and notify-$WHY-page.txt does *not* exist, it # will use the notify-$WHY.txt template. # # It honours the RETURNFILETYPE variable that can be set by FaxNotify. # If it is set, it will return *all* the submitted documents as attachments # with the e-mail, converted to the RETURNFILETYPE. # Multiple file types may be specified by separating them with # whitespace; in that case a separate attachment for each filetype # will be created. . bin/common-functions if [ $# != 3 ] && [ $# != 4 ]; then echo "Usage: $0 qfile why jobtime [nextTry]" hfExit 1 fi test -f etc/setup.cache || { SPOOL=`pwd` cat</dev/null 2>&1; then ERRORSTO=`$TTYCMD` else ERRORSTO=/dev/null fi ########## ## MAIN ########## SetupPrivateTmp # we parse the q file fisrt in case any of the varialbe setting # operations may want to know about the details of the fax parseQfile if [ "$doneop" = "default" ] ; then doneop="remove" fi if [ "$jobtype" = "pager" ] ; then number=$pagernum fi if [ -n "$receiver" ]; then DESTINATION="$receiver ($number)" else DESTINATION="$number" fi if [ -n "$jobtag" ]; then JOBINFO="$jobtag ($jobid)" else JOBINFO="$jobid" fi COMMID=$commid SENDTO="" export COMMID SENDTO FROMADDR TOADDR DESTINATION WHY JTIME NEXT JOBINFO # Faxmaster notify is just a simple notification, never with docs do_faxmaster() { template="etc/templates/$TEMPLATE/notify-faxmaster.txt" SENDTO="$TOADDR" if [ -f etc/templates/$TEMPLATE/hook.sh ] then # Any hooks that the templates need . etc/templates/$TEMPLATE/hook.sh fi #We don't need eval here, because not attachment args here CreateMailMessage "$template" 2>$ERRORSTO | $SENDMAIL -f"$FROMADDR" -oi "$SENDTO" } # This does the grunt work of building the notify email do_notify() { if [ -f etc/templates/$TEMPLATE/hook.sh ] then # Any hooks that the templates need . etc/templates/$TEMPLATE/hook.sh fi if [ -n "$RETURNFILETYPE" ]; then for ft in $RETURNFILETYPE do ATTACH_ARGS="$ATTACH_ARGS "`BuildAttachArgs $ft` done fi template="etc/templates/$TEMPLATE/notify-$WHY.txt" if [ "$jobtype" != "facsimile" ] && [ -f etc/templates/$TEMPLATE/notify-$WHY-page.txt ]; then template="etc/templates/$TEMPLATE/notify-$WHY-page.txt" fi eval CreateMailMessage "$template" $ATTACH_ARGS \ 2>$ERRORSTO | $SENDMAIL -f"$FROMADDR" -oi "$SENDTO" } # # Apply customizations. All customizable variables should # be set to their non-customized defaults prior to this. # if [ -f etc/FaxNotify ]; then # source notify preferences . etc/FaxNotify fi ## We process the NOTIFY_FAXMASTER first, because we want ## this to go without the attachemnts, if they are used ## Faxmaster goes to $TOADDR, but templates always use SENDTO SENDTO="$TOADDR" case "$NOTIFY_FAXMASTER:$WHY" in "always:"*) do_faxmaster;; "yes:"*) do_faxmaster;; "errors:success") ;; # Not errors "errors:blocked") ;; # Not errors "errors:"*) do_faxmaster;; # errors *) ;; # Do nothing; esac # We use SENDTO in the templates, but $mailaddr is the job # param. We set this *after* FaxNotify is sourced, because # some admins seem to play with mailaddr expecting it to change # the destination of the nofify email SENDTO="$mailaddr" export SENDTO case "$WHY:$notify" in *":always") do_notify;; # They've asked for it "requeued:when done+requeued") do_notify;; # Requeued "requeued:when requeued") do_notify;; # Requeued "requeued:when done") ;; # Do nothing; "requeued:none") ;; # Do nothing; "blocked:"*) ;; # Blocked "done:when done+requeued") do_notify;; # Done "done:when requeued") ;; # Do nothing "done:when done") do_notify;; # Done "done:none") ;; # Do nothing # Anything else is a "failure", which always runs notification *) do_notify;; esac CleanupPrivateTmp