From owner-mgetty Tue Jun 20 05:43:54 1995
Return-Path: <owner-mgetty>
Received: by greenie.muc.de (/\==/\ Smail3.1.24.1 #24.2)
id <m0sNuED-0002ELC@greenie.muc.de>; Tue, 20 Jun 95 05:43 MEST
Return-Path: <l-mgetty-owner@muc.de>
Received: by greenie.muc.de (/\==/\ Smail3.1.24.1 #24.2)
id <m0sNuE9-00007wC@greenie.muc.de>; Tue, 20 Jun 95 05:43 MEST
Received: from greenie.muc.de ([193.174.4.62]) by colin.muc.de with SMTP id <25579-2>; Tue, 20 Jun 1995 05:43:41 +0200
Received: by greenie.muc.de (/\==/\ Smail3.1.24.1 #24.2)
id <m0sNu4e-0002ELC@greenie.muc.de>; Tue, 20 Jun 95 05:34 MEST
Received: from GATEWAY by greenie.muc.de with netnews
for mgetty@muc.de (mgetty@muc.de)
To: mgetty@muc.de
Date: Fri, 16 Jun 1995 07:24:39 +0200
From: mam@werries.de (Michael A Meiszl)
Message-ID: <3rr4in$b9q@mamunx.werries.de>
Organization: Meiszl Consulting Hamm
References: <3rpugn$hjc@adson.sub.de>
Subject: Re: Mgetty als Fax-Server fuer ein WfW-Netzwerk
Status: RO
Meine Trivialloesung funktioniert bislang ohne groessere Probleme und is
auch Dummloosern (wie meinem Weibe :-) ) nahezubringen.
Man nehme:
1 WinDoof Rechner mit Postscript Druckertreiber (Laserwriter NTX II
ist schoen simpel)
In die zu druckende Datei schreibe man irgendwo (am besten am Ende)
eine Zeile <Faxnummer:000...> rein (bei Excel kann es irgendein
Feld sein)
Damit der Looser auch merkt, was passiert, lasse man den Message
Empfang laufen (WinPopup oder automatisch bei NT)
1 Tunix/Flinux/irgendwat Kiste mit Samba und Ghostscript. Den Samba
Druckbefehl konfiguriert man:
[FAX]
path=/usr/spool/samba
read only=true
printable=true
public=true
comment=CCT Fax Postscript
print command=/usr/local/samba/bin/do_fax %s %U %m
Das "do_fax" Skript sieht so aus:
-----------------------------------------------------------------------------
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/samba/bin
TELEFONANLAGE=JA# braucht Amtsholung
TMP=/tmp/fax.$$.ps
DEBUG=
NUMMER=`faxfilter $1 $TMP`
USER=$2
RECHNER=$3
FAXERRORS=/tmp/faxerrors.$$
FAXADMIN=faxadmin@werries.de# User fuer Mail
export NUMMER TMP USER RECHNER FAXERRORS DEBUG TELEFONANLAGE
if [ "$DEBUG" = "" ]
then
rm -f $1
else
cp $1 /tmp/fax.input
rm -f $1
fi
if [ "$NUMMER" = "" ]
then
if [ -s $1 ]
then
(
echo Das war wohl nichts $USER
echo
echo Um einen Fax zu versenden, muss im Dokument eine Zeile
echo " <Faxnummer:0...>"
echo "auftauchen. Denk auch an die Amtsholung (0,...) mit Pause!"
echo
echo "Aendere den Text und drucke nochmal."
) | smbclient -M $RECHNER -U FAXMANAGER 2>&1 >/dev/null
fi
rm -f $TMP
exit 0
fi
LEN=`expr length $NUMMER`
#
# Wenn die Nummer laenger ist, als 3 Zeichen und der Dummlooser die Amts-
# holung vergessen hat, basteln wir noch ein 0, davor
#
if [ "$TELEFONANLAGE" = "JA" -a $LEN -gt 3 ]
then
X=`expr substr $NUMMER 1 2`
if [ ! "$X" = "0," ]
then
NUMMER=0,$NUMMER
fi
fi
faxspool -q -f $FAXADMIN $NUMMER $TMP >$FAXERRORS 2>&1
if [ -s $FAXERRORS ]
then
(
echo Fehler beim Versenden des Faxes:
cat $FAXERRORS
) | smbclient -M $RECHNER -U FAXMANAGER 2>&1 >/dev/null
else
(
echo "Hai $USER!"
echo "Dein Fax an $NUMMER wurde erfolgreich angenommen."
echo "Der Versand erfolgt spaeter (keine Panik, ich mach das schon...)"
) | smbclient -M $RECHNER -U FAXMANAGER 2>$1 >/dev/null
fi
if [ "$DEBUG" = "" ]
then
rm -f $TMP $FAXERRORS
else
(
date
set
echo "---------------------"
echo $*
echo "---------------------"
) >/tmp/smbfax.debug
fi
exit 0
-----------------------------------------------------------------------------
Da das Skript noch ein kleines Programm faxfilter braucht, hier noch
Faxfilter.c:
-----------------------------------------------------------------------------
/*
* Simples Programm, dass aus einer Postscriptdatei den Text
<faxnummer:xxx-xxxx>
* raussucht und loescht
*/
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define SUCHTEXT "(<faxnummer:"
char FaxNummer[80];
char *getline(FILE *F)
{
static char l[255];
int len=0;
char c;
char *s=l;
*s='\0';
while (!feof(F))
{
c=fgetc(F);
if (feof(F)) return l;
if (c==4 || c==13) continue;
if (c==10) {
*s++=10;
*s=0;
return l;
}
*s++=c;
*s=0;
len+=1;
if (len>253) {
return l;
}
}
return l;
}
void findnummer(char *s)
{
char *x=FaxNummer;
s+=strlen(SUCHTEXT);
*x=0;
while (strchr("0123456789,- \t",*s))
{
if (*s==' ' || *s=='\t') { s++; continue; }
if (*s=='-') { s++; continue; }
*x++=*s++;
*x=0;
}
return;
}
int match(char *s)
{
char *q;
char *x=NULL;
if (q=malloc(strlen(s)+1)) {
strcpy(q,s);
for (x=q;*x;x++) *x=tolower(*x);
x=strstr(q,SUCHTEXT);
if (x) findnummer(x);
free(q);
}
return (x!=NULL);
}
main(int argc, char *argv[])
{
FILE *F,*G;
char *s;
F=stdin;
G=stdout;
if (argc>1) {
F=fopen(argv[1],"r");
if (!F) {
perror("cannot open inputfile");
exit(1);
}
}
if (argc>2) {
G=fopen(argv[2],"w");
if (!G) {
perror("cannot create outputfile");
exit(1);
}
}
while (!feof(F)) {
s=getline(F);
if (!match(s)) fputs(s,G);
else if(G!=stdout) printf("%s\n",FaxNummer);
}
fclose(F);
fclose(G);
exit(0);
}
----------------------------------------------------------------------------
Wenn jetzt noch sendfax funktioniert (bei mir leider nich so 100% :-( ),
steht dem WinDoof Fax nix mehr im Wege...
MAM
--
+-------------------------+---------------+--------------+-------------------+
| /\/\ichael A. /\/\eiszl | Tomsonstr. 25 | D-59071 Hamm | Tel +49 2381 9880 |
+-------------------------+---------------+--------------+-------------------+