HylaFAX The world's
most advanced open source fax server
|
|
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
[hylafax-users] Fw: notify.awk
On Mon, 10 May 2004 17:18:23 +0200
"Robert Siedl" <robert.siedl@xxxxxxxxx> wrote:
> Hi Sebastian,
>
> thank you!
>
> Best regards
>
> Robert
>
> ++ Virenanalyse ++
>
> -----Ursprüngliche Nachricht-----
> Von: Sebastian Flothow [mailto:lists@xxxxxxxxxx]
> Gesendet: Montag, 10. Mai 2004 16:39
> An: Robert Siedl
> Cc: hylafax-users@xxxxxxxxxxx
> Betreff: Re: AW: [hylafax-users] Faq
>
>
> Am 10. Mai 2004 um 11:32 Uhr schrieb Robert Siedl:
> > We get, wenn we send a fax, a email with a status message -> FAX was
> > OK or FAX have an Error. But we want by a status email the outgoin fax
>
> > as attachement in pdf file, that we know which fax have we sent to
> > which customer.
>
> Your English is rather strange...
>
> So, you want the Fax sent back to the submitter in the status message
> after the job is done, right?
> This has been requested several times; in February, Marco Nicastro
> posted a modified version of notify.awk to accomplish this, and there
> were some posts regarding it in March. Just search the list archive for
> "Emailing a copy of sent fax (PDF) back to user", that should turn up
> all relevant posts.
>
>
> Sebastian
>
> --
> Sebastian Flothow
Hi, i send
> sebastian@xxxxxxxxxx
>
> Because it reverses the logical flow of conversation.
> > Why is top posting frowned upon?
>
> Ikarus GuardNT hat dieses eMail auf Viren und Trojaner untersucht.
> Nichts Verdächtiges gefunden.
>
> keine Anlagen gefunden
> -------------------------------------------------------
>
> Ikarus GuardNT hat dieses eMail auf Viren und Trojaner untersucht.
> Nichts Verdächtiges gefunden.
>
> keine Anlagen gefunden
> -------------------------------------------------------
>
>
>
> ____________________ 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*
>
Hi,
i see your message, i have the script in this message,
it send a mail back with confirmation + pdf file of the
fax sent, if it will be different.
But my problem occurs when i send a fax with cover page,
in pdf confirmation error.
Very Thanks for any help!!
++ Marcos Paulo ++
#! /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.
#
#
# Modified to send pdf attachment with notification email. Also archives all faxes,
# success and failure in seperate dir's in pdf format.
# PDF's are stored in /var/spool/hylafax/pdfs and /var/spool/hylafax/pdfs/failed
#
# Also statement for smbfax/winbind users to strip domain for mail delivery
#
#
#
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");
printItem("%s", "Destination", number);
printItem("%s", "JobID", jobid);
printItem("%s", "GroupID", groupid);
printItem("%s", "Sender", sender);
printItem("%s", "Mailaddr", mailaddr);
if (commid != "")
printItem("%s", "CommID", commid);
if (modem != "any")
printItem("%s", "Modem", modem);
printItem("%s", "Submitted From", client);
if (jobType == "facsimile") {
printItem("%u (mm)", "Page Width", pagewidth);
printItem("%.0f (mm)", "Page length", pagelength);
printItem("%.0f (lpi)", "Resolution", resolution);
}
printItem("%s", "Status", status == "" ? " (nothing available)" :status);
printItem("%u (exchanges with remote device)", "Dialogues", tottries);
printItem("%u (consecutive failed calls to destination)", "Dials",ndials);
printItem("%u (total phone calls placed)", "Calls", totdials);
if (jobType == "facsimile") {
printItem("%u (pages transmitted)", "Pages", npages);
printItem("%u (total pages to transmit))", "TotPages", totpages);
printItem("%u (attempts to send current page)", "Attempts", ntries);
} else if (jobType == "pager") {
if (npins != 0) {
printBanner("Unsent pages submitted for 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("Transcript of session follows");
comFile = "log/c" commid;
if ((getline <comFile) > 0) {
do {
if (index($0, "-- data") == 0)
print $0
} while ((getline <comFile) > 0);
close(comFile);
} else {
printf " No transcript available";
if (commid != "")
printf "(CommID c" commid ")";
print ".";
}
}
function printStatus(s)
{
if (s == "")
print "<no reason recorded>";
else
print s
}
function putHeaders(subject)
{
print "MIME-Version: 1.0";
print "Content-Type: multipart/mixed;";
print " boundary=\"----=_NextPart_000_0012_01BF3CD4.528144C0\"";
#
# Uncomment and change to your domain if using smbfax and winbind
# sub(/DOMAIN\+./,"",mailaddr);
#
print "To: " mailaddr;
print "Subject: " subject;
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 "O seu " jobType " para o nro. " number;
# printf "Your " jobType " job to " number;
}
BEGIN { nfiles = 0;
npins = 0;
pagewidth = 0;
pagelength = 0;
resolution = 0;
jobType = "facsimile";
signalrate = "unknown";
dataformat = "unknown";
filename = "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; }
# This is used as the "extra data field":
/^company/ { company = $2; }
/^[!]postscript/ {files[nfiles++] = $4; }
/^[!]*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(company " : " jobtag " para " number ": EFETUADO");
# putHeaders(company " : " jobtag " to " number " completed");
print " Foi efetuado com sucesso.";
# print " was completed successfully.";
print "";
if (jobType == "facsimile") {
printItem("%u", "Pages", npages);
if (resolution == 196)
printItem("%s", "Quality", "Fine");
else
printItem("%s", "Quality", "Normale");
printItem("%u (mm)", "Page Width", pagewidth);
printItem("%.0f (mm)", "Page Length", pagelength);
printItem("%s", "Signal Rate", signalrate);
printItem("%s", "Data Format", dataformat);
printItem("%s", "filename", files[1]);
}
if (tottries != 1)
printItem("%s (exchanges with remote device)", "Dialogues",tottries);
if (totdials != 1)
printItem("%s (total phone calls placed)", "Calls", totdials);
if (modem != "any")
printItem("%s", "Modem", modem);
printItem("%s", "Submitted From", client);
printItem("%s", "JobID", jobid);
printItem("%s", "GroupID", groupid);
printItem("%s", "CommID", "c" commid);
printf "\nProcessing time was " jobTime ".\n";
if (status != "") {
print " Additional information:\n " status;
returnTranscript();
}
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
print "Content-Type: application/pdf;";
print " name=\"" number ".pdf\"";
print "Content-Transfer-Encoding: base64";
print "Content-Disposition: inline;";
print " filename=\"" number ".pdf\"";
print "";
system("/usr/bin/ps2pdf /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
print "------=_NextPart_000_0012_01BF3CD4.528144C0";
} else if (why == "failed") {
putHeaders("O seu " jobtag " para " number ": FALHOU");
# putHeaders("Fax " jobtag " to " number " failed");
printf " Falhou porque:\n ";
# printf " Failed because:\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 /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
} else if (why == "rejected") {
putHeaders("O seu " jobtag " para " number ":FALHOU");
printf " Falhou porque:\n ";
# printf " Failed because:\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 /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
} else if (why == "blocked") {
putHeaders("O seu " jobtag " para o nro. " number ": BLOQUEADO");
# putHeaders("Fax " jobtag " to " number " blocked");
printf " is delayed in the scheduling queues because:\n ";
printStatus(status);
print "";
print "The job will be processed as soon as 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 /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
} else if (why == "requeued") {
putHeaders("O seu " jobtag " para o nro. " number ": REENVIADO");
# putHeaders("Fax " jobtag " to " number " requeued");
printf " Nao foi enviado porque:\n ";
# printf " was not sent because:\n ";
printStatus(status);
print "";
print "O trabalho sera reenviado em" nextTry "."
# print "The job will be retried at" nextTry "."
returnTranscript();
} else if (why == "removed" || why == "killed") {
putHeaders("O seu " jobtag " para o nro. " number ": REMOVIDO DA FILA");
# putHeaders("Fax " jobtag " to " number " removed from queue");
print " Foi excluido da fila.";
# print " was deleted from the queue.";
if (why == "killed")
returnToSender();
} else if (why == "timedout") {
putHeaders("O seu " jobtag " para " number ": FALHOU");
# putHeaders("Fax " jobtag " to " number " failed");
print "Nao pode ser efetuado conforme o fim do prazo.(timeout)";
# print "could not be completed before the appointed deadline.(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 /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
} else if (why == "format_failed") {
putHeaders("O seu " jobtag " para " number ": FALHOU");
# putHeaders("Fax " jobtag " to " number " failed");
print " Nao foi enviado por causa da conversao do original"
# print " was not sent because document conversion"
print "Para facsimile falhou. A saida do programa de conversao programwas:\n";
# print "to facsimile failed. The output from the converter programwas:\n";
print status "\n";
printf "Check any PostScript documents for non-standard fonts %s.\n",
"and invalid constructs";
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 /var/spool/hylafax/"files[1] " /tmp/"number".pdf 1>/dev/null 2>/dev/null");
system("/usr/bin/mimencode /tmp/"number".pdf");
system("rm /tmp/"number".pdf");
print " ";
} else if (why == "no_formatter") {
putHeaders("O seu " jobtag " para " number ": FALHOU");
# putHeaders("Fax " jobtag " to " number " failed");
print " nao foi enviado porque ";
print "the document conversion script was not found..";
returnToSender();
} else if (match(why, "poll_*")) {
putHeaders("Notice about" 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();
}
}