Personal tools
HylaFAX The world's most advanced open source fax server

As400script2

Revision as of 14:41, 20 December 2005 by Darren (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
#!/bin/bash

# Captures the spool File
# Don't forget to change the domain names to ones that will for you, since these won't!
cat - > /tmp/as.$$

# Declare Variable
# Paths to temporary files
FILE_PDF=/tmp/as4$$.pdf 
FILE_AS400=/tmp/as.$$ 
FILE_PS=/tmp/ps.$$ 

# Path to e-mail server program
SENDMAIL="/usr/sbin/sendmail" 
MIMENCODE=mimencode 

# Variable defaults
UNAME=QUSER 	#IBM Defaults I chose to use while testing
FNAME=OTHER 	#IBM Defaults I chose to use while testing
COMMENT='Please Contact Sender if any Pages are Missing.' # Default Comment for the cover page


# Pedro's original script did not work for me, so I used getopt to capture the options passed from LPRng to the "printer"
# Go to the LPRng website to find out what all the letters mean, or uncomment the ECHO $TEMP2 line in the e-mail body

# Grabs all of the options, you need to uncomment this to see all of the data passed
# TEMP2=`getopt -o 
A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R:T:S:U:V:W:X:Y:Z:a:b:cd:e:f:g:h:i:j:k:l: m:n:o:p:q:r:t:s:u:v:w:x:y:z \
         -- "$@"`
# Grabs only the options I wanted, username without domain and the document type
TEMP=`getopt -a -o N:n:  -- "$@"` 
eval set -- "$TEMP" 
while true ; do
         case "$1" in
                 -n)     USER="$2"; shift 2 ;;
                 -N)     FNAME="$2"; shift 2 ;;
                 *) shift; break ;;
         esac
done

# I Inherited this as400 and was not willing to setup the rest of the 
network using the same user name scheme
# The case statement is how I corrected this, I also put user specifc 
comments here.

	case "$USER" in
		ROB)            UNAME=rsherman ;;
		JACKIE)         UNAME=jmoore ; COMMENT='Please be Aware that the 
following Invoice(s) were processed today towards your account and payment 
will be due upon agreed terms.';;
         *)			UNAME=$USER ;;
	esac


# Here is where the spool file is converted to PostScript and the 
# Header with the same name as stored in the variable field
# $FNAME is applied.  Please look at the ACKFORM example before attempting
# to create a header file
/usr/bin/enscript --fancy-header=$FNAME  $FILE_AS400 -p $FILE_PS

# Where you pick the faxnumber
FAXNUMBER=`sed -ne '/'Fax'/{s/^.*'Fax' : *//g;s/[()]//g;s/[^0-9]\{1,\}.*^M$//g;p;q;}'` < /tmp/as.$$

# Converts the Postscript file to pdf in preparation of e-mailing it back to the user
ps2pdf $FILE_PS $FILE_PDF


# Begining of the e-mail structure
        (MIMEBOUNDARY="NextPart$$"
          echo "Mime-Version: 1.0"
          echo "Content-Type: Multipart/Mixed; Boundary=\"$MIMEBOUNDARY\""
          echo "Content-Transfer-Encoding: 7bit"
          echo "To: $UNAME@yourhost.yourdomain"
          echo "From: Fax Server<fax>"
          echo "Subject: Outgoing fax job to $FAXNUMBER submitted"
          echo ""
          echo "--$MIMEBOUNDARY";
          echo ""
          echo `date`
          echo ""
          echo "Your request has been queued for delivery."
          echo "There will be an E-Mail confirming delivery of your"
          echo "fax to $FAXNUMBER."
          echo ""
          echo ""
          echo "If you do not receive a confirmation in one hour, notify the system administrator."
          echo "Attached is a PDF File containing the contents of your fax."
          echo ""
#	  echo	"$TEMP2" # uncomment this line to see all of the LPRng options 
passed
          echo "--$MIMEBOUNDARY";
	 echo "Content-Type: application/pdf; name=\"$FNAME.pdf\""
         echo "Content-Description: FAX document"
         echo "Content-Transfer-Encoding: base64"
         echo "Content-Disposition: attachment; 
	   filename=\"$FNAME.pdf\""
	 echo "Content-Description: FAX document"
         echo "Content-Transfer-Encoding: base64"
         echo "Content-Disposition: attachment; 
	   filename=\"$FNAME.pdf\""
         echo ""
  
#Embeds the PDF in the e-mail and removes it from the temp directory

         $MIMENCODE $FILE_PDF 2>/dev/null
         $RM -f $FILE_PDF 2>/dev/null
	 echo "";
         echo "--$MIMEBOUNDARY--";
         echo "";
         ) | 2>&1 $SENDMAIL -ffax -oi $UNAME@yourhost.yourdomain

# If there is no fax number this keeps the script from hanging or worse
         if [ "$FAXNUMBER" = "" ] ; then
         echo     $UNAME
         else

# I have the fax being submitted with the default cover page and the comments section being passed through
         sendfax  -D -R -f $UNAME@yourhost.yourdomain -c "$COMMENT" -d $FAXNUMBER  $FILE_PS
         fi

# Cleaning up after myself again
rm -f /tmp/as.$$ $FILE_PDF $FILE_PS




Powered by MediaWiki
Attribution-ShareAlike 2.5

Project hosted by iFAX Solutions