faxsnd für fli4l
================


Systemanforderungen
===================

- CAPI fähige ISDN-Karte nebst Treiber muss installiert sein (z. B. von AVM)
- CAPI muss funktionieren
- bei hohem Faxaufkommen ist eine Festplatte sinnvoll
- für Privatanwender (1 Fax / Monat) reicht die RamDisk

Entwickelt wurde es für Wenigfaxer = Privatanwender


Kurzfassung
===========
Fax senden mit capifax. Der fli4l guckt jetzt jede halbe Stunde (einstellbar) in die Fax-Warteschlage. Ist dort etwas abgelegt (Format rufnummer.sff), so wird diese Datei als Fax an 'rufnummer' geschickt.
Die Automatik ist abschaltbar, da vielleicht nicht für jeder meinen Programmierkünsten traut. 
Nur ein manuelles Senden wird auch unterstützt.
Im Webinterface kann der Erfolg / Misserfolg überprüft werden.
Upload der Faxdatei erfolgt im Webinterface.


Rechte für das Webinterface
===========================

faxsnd:view,allow
  view: zeigt den Eintrag im OPT-Menue
  allow: darf im faxsnd Webinterface rumklicken


Rahmenbedingungen
=================

Das Fax muss im sff Format auf dem Client erzeugt werden und wird dann auf den fli4l übertragen (siehe unten eine Linux-script). Dabei handelt es sich um ein Fax CCITT G3 Format, ebenso wäre ein TIFF im G3 Format möglich. Der Fax-Job verarbeitet aber nur Dateinamen im Format '*.sff'. Ich habe TIFF/G3 auch nicht getestet. (Siehe unten: Tipps zur Fax-Erstellung)

Die Datei im Faxformat kann mittels Upload im Webinterface auf den fli4l übertragen werden. Das ist der empfohlene Weg, da die Datei auf dem Router dann einer Namenskonvention entsprechen muss. Die Upload-Seite sorgt immer für deren Erfüllung.

Diese Info ist wichtig, wenn Du selbst Dateien in die Warteschlange lädst: Der Dateiname (in der Warteschlange auf dem Router!) besteht im ersten Teil vor einem Punkt aus der Rufnummer (z. B. 03222123344.). Der Suffix ist ".sff". Alles dazwichen ist egal (bitte keine Leer- und Sonderzeichen, auch keine Umlaute - habe nichts dergleichen getestet). Ggf. ändere ich die Konvention noch bei Erweiterungen (also das "Alles dazwischen" wäre betroffen).

Für die Übertragung mit anderen Tools auf den fli4l besteht Zugriff auf das FAXSND_QUEUE Verzeichnis. Das opt_faxsnd vergibt für die FAXSND_QUEUE alle Rechte (chmod 777 $FAXSND_QUEUE). Damit steht einer Übertragung auf den fli4l nichts im Wege. Zur Übertragung entweder scp oder ftp verwenden und die obige Namenskonvention der Zieldatei einhalten. 

Ich empfehle jedem privat-wenig-Faxer (und nur für die ist faxsnd konzipiert): immer die Upload-Funktion im Webinterface zu nutzen und auf alternative Übertragungswege zu verzichten!


Config-Parameter
================

OPT_FAXSND='no'                         

Hiermit aktivierst Du das Paket. Dazu bitte 'yes' einstellen.


FAXSND_STARTONBOOT='no'

Deaktiviere die Verarbeitung der Warteschlage beim Start. Damit verarbeitet der alle 30 Min gestartete Fax-Job nicht mehr die Warteschlange. Solange hier ein 'no' steht erfolgt kein automatischer Faxversand. Mit 'yes' wird der automatische Faxversand bereits mit Routerstart eingeschaltet.
Auch im Webinterface kann der Job aktiviert und deaktiviert werden.

Wenn Du hier 'yes' wählst oder den automatischen Versand später im Webinterface einschaltest, beachte folgende Warnung:

 WARNUNG: faxsnd kann unkalkulierbare Kosten verursachen!

 Ich habe es so programmiert, dass immer nur einmal eine Faxzustellung
 probiert wird. Aber sollte es nicht möglich sein, aus welchem Grund
 auch immer, ein Fax aus der Warteschange zu löschen, so wird bei aktiviertem
 sendfax alle 30 Min versucht dieses Fax wieder zuzustellen!

Du kannst den Job abgeschaltet lassen und immer nach Upload einmalig im Web-Interface den Versand starten. Den Status des Jobs bekommst Du im Webinterface im Reiter "Status" in der ersten Zeile angezeigt und kannst ihn dort umstellen.


FAXSND_QUEUE='/tmp/faxsnd/queue'
        
Verzeichnis für die Warteschlange (Empfehlung: ramdisk /tmp).


FAXSND_LOG='/data/faxsnd/log'           

Verzeichnis für Log (Empfehlung: Datenparition /data). Aber Ramdisk geht natürlich auch, ist nicht viel. Du musst das Log dann eben mit den üblichen Mitteln selbst sichern, wenn Du es über einen Reboot konservieren möchtest.


FAXSND_DONE='/data/faxsnd/fax'          
Verzeichnis gesendete Faxe (Empfehlung: Datenpartition /data), dann kannst Du ein Fax sehr einfach aus dem Webinterface wiederholt versenden, falls der Status nicht "Erfolg (0)" ist.


FAXSND_ID='+49 030 112233'

Unbedingt Deine Fax ID angeben, die bekommt der Empfänger angezeigt. 
Format ist "+49 331 ..." oder "+49 (0)331 ...".


FAXSND_HEAD='fli4l-faxmaschine'		

Titelzeile für jedes Fax, sozusagen Text zur FAXSND_ID. Nicht zu viele Zeichen nehmen, bestimmt ist die Länge auch stark begrenzt, kenne die Zahl aber nicht. In der Kürze liegt die Würze, also eher so etwas wie "Fax von Frank", "Atze, Timpe und Puse" oder "Admiral Schneider" verwenden.


FAXSND_MSN='42'                         

Ganz wichtig: die MSN über die rausgefaxt wird, das ist die Rufnummer des eigenen Faxes ohne Vorwahl oder die Zuordnung in der Telefonanlage. Wird immer MSN genannt.


*** Optional ***

FAXSND_CRON_TIMER='*/30 * * * *'      

Standard: siehe alle 30 Min nach ob etwas zum Versand ansteht. Wenn FAXSND_STARTONBOOT='no'eingestellt ist, wird trotzdem dieser Job eingerichtet, er bearbeitet nur die Warteschlange nicht.
Da es dem einen zu häufig ist und dem anderen zu selten - eben wie im richtigen Leben - habe ich diesen Parameter eingebaut.
Wenn Du hier eine Änderung machst, dann bedenke bitte folgendes:
 - Faxversand ist langsam, ein Fax benötigt ca eine Minute.
 - Du bist für die korrekte cron-Syntax verantwortlich.
Dieser Parameter ist optional


Tipps zur Fax-Erstellung
========================

So kann die Faxerzeugung und übertragung mit Linux oder Windows erfolgen:

1. Drucke in eine Datei im Format Postscript oder PDF (.ps oder .pdf)
2. Formatiere die Datei mittels 'gv' (GhostView) in das .sff format
   mit folgender Namenskonvention: <RufnummerEmpfänger>.<egal_was_hier steht>.sff
   (z. B. 0322212345.2008-10-09.32.vonFrank.sff)
3. Lade die Datei mittels Upload im Webinterface hoch. Empfohlene Variante
   Oder übertrage die Datei in das Verzeichnis FAXSND_QUEUE mit scp 
   oder falls ein ftp-Server auf dem router läuft ftp.

zu 2.:
  gs -dNOPAUSE -dQUIET -dBATCH -sPAPERSIZE=a4 -sDEVICE=cfax -sOutputFile=<ZielDatei> <QuellDatei>
 oder
  Die Fritz Fax-Software für Windows installiert sich als Druckertreiber. Der kann man auch sagen, dass sie nur ein SFF-Datei erzeugen soll (Ausdruck in Datei umleiten) und nichts faxen soll. So macht Martin das bisher. ;-)

zu 3.:
  Benutze bitte die Upload-Funktion im Web-Interface.
 oder 
  Für Freunde der Batch-Verarbeitung (siehe unten, der Batch-Verarbeiter - Linux):


LIZENZ
======

Ich stelle diese meine Arbeit unter GNU General Public License.
Damit ist diese Software frei für Benutzer, Entwickler und Firmen.
Es ist guter Stil, wenn Urheber in einer weiteren Verwertung oder Veröffentlichung genannt werden. 
Das gilt besonders für freie Werke.
-----------------------------------------------------------------------
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
-----------------------------------------------------------------------


SPENDEN
=======

PayPal: saurbier@arcor.de

mit Hinweis: fli4lFax Spende

Ich habe viel meiner Zeit investiert, das war diese Software mir wert. 
Wenn die Software Dir etwas wert ist, freue ich mich über eine Spende. 



Anhang
======

========================
Nur für Batchverarbeiter
========================
Nur weiterlesen wenn Du
-- Linux-Clients hast und 
-- gerne die Übertragung automatisieren willst oder
-- alles wissen willst.

Für alle andern ist hier Schluss.

==========================================
Folgendes Linuxscript kannst Du verwenden.
==========================================

Im Archiv unter ~/unix/faxsnd/fli4lFax.sh zu finden.

Es handelt sich um ein Script für Deinen Linux-Client.

Es konvertiert die Eingangsdatei (.ps oder .pdf) in das .sff Format .
Überträgt diese dann an den fli4l (wahlweise ftp oder scp) ftp ist default.
Schreibt in Deinem home-Verz. das Ergebnis in die Datei fli4lFax.log.

Rufst Du es ohne Parameter auf, zeigt es folgende Meldung:

   usage: fli4lFax <phone-number> <postscript-file> [<transfer-method>]
                   transfer-method: [ ftp | scp ] default: ftp

Im Variablenbereich passe es an Deine Config an!


# Variablen unbedingt an Deine Bedürfnisse anpassen
# ####### Anpassungsbereich Anfang ################
SCPSERVER="fli4l.mydomain.lan"
SCPUSER="root"
#
FTPSERVER="$SCPSERVER"
FTPUSER="faxsend"
FTPPASS="FaxSenderPassword"
# ####### Anpassungsbereich Ende ##################

Es erzeugt in Deinem Home-Verzeichnis die Datei: fli4lFax.log.

Bei mir läuft das script in dieser Form. Wer es benutzt, der passt es einfach für sich an.


EMPFEHLUNG ftpd
===============

Benutze das opt pftp, Du fundest es bei Arno (http://arnowelzel.de/wiki/en/fli4l/opts).
Verion bei Erstellung dieses Dokumentes: http://arnowelzel.de/download/opt_pftpd-3.2.1.zip

Auf Deinem fli4l hast Du faxsnd und pftp installiert und ihn neu gestartet.

Dann richtest Du im Webinterface einen pureftp-Benutzer 'faxsend' mit lokalem Verzeichnis auf FAXSND_QUEUE ein (z. B. /tmp/faxsend/queue)

Dann passt Du die Variablen im obigen script auf Deinem Client wie folgt an
 FTPSERVER="NameDeinesRouters"
 FTPUSER="faxsend"
 FTPPASS="DasGewaehltePassword"

Dann kannst Du Dein Dokument Datei (z. B. Fax.ps) drucken und mit folgendem Aufruf

  fli4lFax.sh 0322212345 Fax.ps

Ein Fax auf Deinem fli4l bereitstellen, welches im Laufe der nächsten halben Stunde verschickt wird.

Beispiel für einen pureftp fax-user (aus pureftpd.passwd):
faxsend:$1$igMpOQx0$v57JQOzxyKUbkap09Z/Rr.:200:200::/tmp/faxsnd/queue/./:::::1:::::192.168.1.63, 192.168.1.8, 192.168.1.10::

könnte man reinkopieren und die DB neu erstellen und Passwort ändern.

