HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

[hylafax-users] PDF attachement on a diet



Hello.

My HylaFax users have manifested to need to receive PDF attachements of their sent faxes.

I took a notify.awk by Cedric (that I took from this list) and installed it. It works fine, but the resulting PDF attachements are 73 bytes. Always...

/var/log/messages give no errors at all. Permissions on the awk file are 774 root (anything else did not work)

Are there other files that I have to change permissions on? If yes, which?

I am running Hylafax 4.1.6 on a redhat 9 box. Everything installed standard and updated.

Best regards.

Duke



--------------------------------------------
paste from my notify.awk
--------------------------------------------
#! /bin/sh
# $Id: notify.awk,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.
#
# 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.
#


#
# Awk support program for notify shell script.  This
# stuff is broken out into a separate file to avoid
# overflowing the exec arg list on some systems like SCO.
#

function printItem(fmt, tag, value)
{
   printf "%14s: " fmt "\n", tag, value;
}

function printBanner(banner)
{
   print "";
   print "    ---- " banner " ----";
   print "";
}

function docType(s)
{
   if (match(s, "\.cover"))
	return "PostScript cover page";
   else if (match(s, "\.ps"))
	return "PostScript";
   else if (match(s, "\.tif"))
	return "TIFF";
   else if (match(s, "\.pcl"))
	return "PCL";
   else
	return "Unknown document type";
}

#
# Construct a return-to-sender message.
#
function returnToSender()
{
# printBanner("Unsent job status");
printBanner("Etat du fax non émis");
printItem("%s", "Destination", number);
printItem("%s", "JobID", jobid);
printItem("%s", "GroupID", groupid);
# printItem("%s", "Sender", sender);
printItem("%s", "Emetteur", sender);
# printItem("%s", "Mailaddr", mailaddr);
printItem("%s", "Addr. mail", mailaddr);
if (commid != "")
printItem("%s", "CommID", commid);
if (modem != "any")
printItem("%s", "Modem", modem);
printItem("%s", "Soumis depuis", client);
if (jobType == "facsimile") {
printItem("%u (mm)", "Largeur page", pagewidth);
printItem("%.0f (mm)", "Hauteur page", pagelength);
printItem("%.0f (lpi)", "Résolution", resolution);
}
printItem("%s", "Status", status == "" ? " (nothing available)" : status);
printItem("%u (échanges avec l'équipement distant)", "Dialogues", tottries);
printItem("%u (numérotations consécutives vers la destination)", "Numérotations", ndials);
# printItem("%u (total phone calls placed)", "Calls", totdials);
printItem("%u (total appels tentés)", "Appels", totdials);
if (jobType == "facsimile") {
# printItem("%u (pages transmitted)", "Pages", npages);
printItem("%u (pages transmises)", "Pages", npages);
printItem("%u (total pages à transmettre)", "TotPages", totpages);
printItem("%u (tentatives envoi page courante)", "Tentatives", ntries);
# printItem("%u (repertoire prochaine page)", "Dirnum", dirnum);
# if (nfiles > 0) {
# printBanner("Documents soumis à transmission");
# print "Les documents suivants ont été soumis à la transmission et sont";
# print "disponibles sur le serveur jusqu à ce qu ils soient automatiquement";
# print "supprimés lorsque ce fax est purgé (" doneop "d). Les documents peuvent aussi être supprimés manuellement";
# print "en utilisant la commande faxrm; consulter faxrm(1) pour information.";
# print ""
# printf "%-20s %8s %s\n", "Fichier", "Taille", "Type";
# for (i = 0; i < nfiles; i++) {
# "wc -c " files[i] | getline;
# printf "%-20s %8d %s\n", files[i], $1, docType(files[i]);
# close("wc -c " files[i]);
# }
# }
} else if (jobType == "pager") {
if (npins != 0) {
printBanner("Pages en échec de transmission");
for (i = 0; i < npins; i++)
printf "%15s\n", "PIN " pins[i];
}
if (nfiles != 0) {
printBanner("Message text");
while ((getline <files[0]) > 0)
print $0;
close(files[0]);
}
}
}


function returnTranscript()
{
   printBanner("Rapport de session ci-dessous");
   comFile = "log/c" commid;
   if ((getline <comFile) > 0) {
	do {
	    if (index($0, "-- data") == 0)
		print $0
	} while ((getline <comFile) > 0);
	close(comFile);
   } else {
	printf "    Aucun rapport disponible";
	if (commid != "")
	    printf "(CommID c" commid ")";
	print ".";
   }
}

function printStatus(s)
{
   if (s == "")
	print "<no reason recorded>";
   else
	print s
}

function putHeaders(subject)
{
   print "To: " mailaddr;
  # print "cc: <csanson@xxxxxx>";
   print "Subject: " subject;
   print "MIME-Version: 1.0";
   print "Content-Type: multipart/mixed;";
   print "	boundary=\"----=_NextPart_000_0012_01BF3CD4.528144C0\"";
   print "";
   print "This is a multi-part message in MIME format.";
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0";
   print "Content-Type: text/plain;";
   print "	charset=\"iso-8859-1\"";
   print "Content-Transfer-Encoding: 7bit";
   print "";
#    printf "Your " jobType " job to " number;
   printf "Votre fax vers " number;
}

BEGIN { nfiles = 0;
npins = 0;
pagewidth = 0;
pagelength = 0;
resolution = 0;
jobType = "facsimile";
signalrate = "unknown";
dataformat = "unknown";
doneop = "default";
pagernum = "unknown";
commid = "";
}
/^jobid/ { jobid = $2; }
/^groupid/ { groupid = $2; }
/^state/ { state = $2+0; }
/^doneop/ { doneop = $2; }
/^number/ { number = $2; }
/^external/ { number = $2; } # override unprocessed number
/^sender/ { sender = $2; }
/^mailaddr/ { mailaddr = $2; }
/^jobtag/ { jobtag = $2; }
/^jobtype/ { jobType = $2; }
/^status/ { status = $0; sub("status:", "", status);
if (status ~ /\\$/) {
sub("\\\\$", "\n", status);
while (getline > 0) {
status = status $0;
sub("\\\\$", "\n", status);
if ($0 !~ /\\$/)
break;
}
}
}
/^resolution/ { resolution = $2; }
/^npages/ { npages = $2; }
/^totpages/ { totpages = $2; }
/^dirnum/ { dirnum = $2; }
/^commid/ { commid = $2; }
/^ntries/ { ntries = $2; }
/^ndials/ { ndials = $2; }
/^pagewidth/ { pagewidth = $2; }
/^pagelength/ { pagelength = $2; }
/^signalrate/ { signalrate = $2; }
/^dataformat/ { dataformat = $2; }
/^modem/ { modem = $2; }
/^totdials/ { totdials = $2; }
/^tottries/ { tottries = $2; }
/^client/ { client = $2; }
/^[!]*post/ { files[nfiles++] = $4; }
/^[!]*tiff/ { files[nfiles++] = $4; }
/^[!]*pcl/ { files[nfiles++] = $4; }
/^page:/ { pins[npins++] = $4; }
/^[!]page:/ { pagernum = $4; }
/^data:/ { files[nfiles++] = $4; }
/^poll/ { poll = " -p"; }
END {
if (jobtag == "")
jobtag = jobType " job " jobid;;
if (doneop == "default")
doneop = "remove";
if (jobType == "pager")
number = pagernum;
if (why == "done") {
# putHeaders(jobtag " to " number " completed");
putHeaders("Fax " jobtag " vers " number " envoyé");
#modif du 6/12/99 pour simplifier sujet ! (voir BC/BLX)
# putHeaders( jobtag " envoyé");
# print " was completed successfully.";
print " a été envoyé correctement.";
print "";
if (jobType == "facsimile") {
printItem("%u", "Pages", npages);
if (resolution == 196)
printItem("%s", "Qualitié", "Fine");
else
printItem("%s", "Qualité", "Normale");
printItem("%u (mm)", "Largeur Page", pagewidth);
printItem("%.0f (mm)", "Hauteur Page", pagelength);
printItem("%s", "Vitesse", signalrate);
printItem("%s", "Format données", dataformat);
}
if (tottries != 1)
printItem("%s (échanges avec équipement distant)", "Dialogues", tottries);
if (totdials != 1)
# printItem("%s (total phone calls placed)", "Calls", totdials);
printItem("%s (total appels tentés)", "Appels", totdials);
if (modem != "any")
printItem("%s", "Modem", modem);
printItem("%s", "Soumis depuis", client);
printItem("%s", "JobID", jobid);
printItem("%s", "GroupID", groupid);
printItem("%s", "CommID", "c" commid);
printf "\nTemps total de traitement " jobTime ".\n";
if (status != "") {
print " Informations complémentaires:\n " status;
returnTranscript();
}
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/fax.pdf");
print "";
print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
system("/bin/rm /tmp/fax.pdf");


   } else if (why == "failed") {
	putHeaders("Fax " jobtag " vers " number " échoué");
# modif du 6/12/99 pour simplifier sujet (voir BC/BLX)
#	putHeaders( jobtag " échoué");
	printf " a échoué. Raison de l'échec:\n    ";
	printStatus(status);
#	returnTranscript();
	returnToSender();

print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");


       system("/usr/bin/mimencode /tmp/fax.pdf");
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
       system("/bin/rm /tmp/fax.pdf");

} else if (why == "rejected") {
putHeaders( jobtag " rejeté");
printf " a été rejeté pour la raison suivante:\n ";
printStatus(status);
returnToSender();
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");


       system("/usr/bin/mimencode /tmp/fax.pdf");
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
       system("/bin/rm /tmp/fax.pdf");

} else if (why == "blocked") {
putHeaders( jbtag " bloqué");
printf " est différé à l envoi pour la raison suivante:\n ";
printStatus(status);
print "";
print "Ce fax va être traîté dès que possible."
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");


       system("/usr/bin/mimencode /tmp/fax.pdf");
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
       system("/bin/rm /tmp/fax.pdf");

} else if (why == "requeued") {
putHeaders( jobtag " remis en file d attente");
printf " n'a pas été envoyé pour la raison suivante:\n ";
printStatus(status);
print "";
print "Nouvelle tentative à " nextTry "."
returnTranscript();
} else if (why == "removed" || why == "killed") {
putHeaders( jobtag " retiré de la file d attente");
print " a été retiré de la file d attente.";
if (why == "killed")
returnToSender();
} else if (why == "timedout") {
putHeaders( jobtag " échoué");
print " n a pas pas pu être envoyé avant l échéance prévue.(timeout)";
returnToSender();
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");


       system("/usr/bin/mimencode /tmp/fax.pdf");
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
       system("/bin/rm /tmp/fax.pdf");

} else if (why == "format_failed") {
putHeaders( jobtag " échoué");
print " n a pas été envoyé car la conversion du document"
print "en fax a échoué. Le diagnostic du convertisseur est:\n";
print status "\n";
printf "Vérifiez la validité de vos documents PostScript (police non standard) %s.\n",
"et/ou syntaxe incorrecte";
returnToSender();
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" jobtag ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" jobtag ".pdf\"";
print "";
system("/usr/bin/ps2pdf " files[0] " /tmp/fax.pdf 1>/dev/null 2>/dev/null");


       system("/usr/bin/mimencode /tmp/fax.pdf");
   print "";
   print "------=_NextPart_000_0012_01BF3CD4.528144C0--";
       system("/bin/rm /tmp/fax.pdf");

   } else if (why == "no_formatter") {
	putHeaders("Fax " jobtag " vers " number " échoué");
	print " n a pas pu être envoyé car";
	print "le scrpit de conversion n a pas été trouvé.";
	returnToSender();
   } else if (match(why, "poll_*")) {
	putHeaders("Note à propos de " jobtag);
	printf ", a polling request,\ncould not be completed because ";
	if (why == "poll_rejected")
	    print "the remote side rejected your request.";
	else if (why == "poll_no_document")
	    print "no document was available for retrieval.";
	else if (why == "poll_failed")
	    print "an unspecified problem occurred.";
	print "";
	printf "Processing time was %s.\n", jobTime;
	returnTranscript();
   } else {
	putHeaders("Notice about " jobtag);
	print " had something happen to it."
	print "Unfortunately, the notification script was invoked",
	    "with an unknown reason"
	print "so the rest of this message is for debugging:\n";
	print "why: " why;
	print "jobTime: " jobTime;
	print "nextTry: " nextTry;
	print  "";
	print "This should not happen, please report it to your administrator.";
	returnTranscript();
	returnToSender();
   }
}

_________________________________________________________________
MSN Messenger : discutez en direct avec vos amis ! http://messenger.fr.msn.ca/



____________________ HylaFAX(tm) Users Mailing List _______________________ To subscribe/unsubscribe, click http://lists.hylafax.org/cgi-bin/lsg2.cgi On UNIX: mail -s unsubscribe hylafax-users-request@xxxxxxxxxxx < /dev/null *To learn about commercial HylaFAX(tm) support, mail sales@xxxxxxxxx*




Project hosted by iFAX Solutions