Beschreibung von SendSMS
========================


Lizenz
------

Dieses Programm ist Shareware. Jeder Anwender erkennt die folgenden Lizenz-
bestimmungen an:

1. Das Programm darf nur in diesem Paket weitergegeben werden.

2. Alle Rechte zur kommerziellen Nutzung verbleiben beim Autor.

3. Fr eine Probezeit von 20 Tagen darf SendSMS kostenlos verwendet werden.
   Danach ist eine Registrierung erforderlich, durch die der
   Anwender eine Lizenz zur weiteren Verwendung erwirbt. Andernfalls erlischt
   die Erlaubnis zur Verwendung des Programms, und die Benutzung
   ist gem Urheberrecht verboten.

4. Zur Registrierung fllen Sie bitte das beiliegenden Formular (bestell.txt)
   aus und senden es an folgende Adresse:

             Bcherer Angewandte Informatik
             Wolfgang Bcherer
             Im Grn 9
             D-76316 Malsch

             Tel.: +49 (0)7246/942484
             Fax.: +49 (0)7246/942485
             EMail: wobo@bai.de
             WWW: http://www.bai.de


   Die Registrierungsgebhr betrgt fr eine Lizenz
   (Installation auf einem Rechner):

                      230,-- DM (incl. MwSt.)

   (Auslandsberweisungen zzgl.   20,-- DM)
   (Anfragen zu Mehrfachlizenzen oder Reseller-Optionen willkommen)

   A C H T U N G!!! Zur Registrierung unbedingt das zu verwendende
   Betriebssystem und die Telefonnummer, ber die SendSMS betrieben
   wird, angeben.

5. Auf Ihrer Bestellung erhalten Sie eine Rechnung und nach Zahlungseingang
   (unter Angabe der Telefonnummer und des verwendeten Betriebsystems) wird
   ein Registrierungsschlssel an den Lizenznehmer verschickt, der ihn zur
   weiteren Verwendung des Programms auf einem Rechner pro Lizenz berechtigt.
   Die Weitergabe des zugeteilten Registrierungsschlssel ist untersagt.

6. Die Verwendung des Programms erfolgt auf eigenes Risiko. Fr eventuelle
   Schden durch Fehlbedienung oder Fehlfunktion des Programms wird nicht
   gehaftet.


------------------------------------------------------------------------------

Allgemeines
-----------

SendSMS ist ein Shareware-Programm zum Versenden von ShortMessages (SMS) an
GSM-Telephone oder Pager mittels der Protokolle TAP bzw. UCP. In Deutschland
sind dies z.B. Telephone mit D1-, D2- oder EPlus-Karte oder verschiedene Pager
(Quix, TeLMI, CityRuf, Scall, Skyper,...). SendSMS hat u.a.
folgende Fhigkeiten:

- UCP- und TAP-Protokoll (z.B.: D1, D2, EPlus, Quix, TeLMI, CityRuf, Scall, Skyper)
- beliebig konfigurierbar fr weitere Dienstanbieter mit TAP- oder UCP-Protokoll
- vorkonfiguriert fr verschiedene Provider in Deutschland, sterreich, England,
  Dnemark und Finnland
- Nachricht kann ber Kommandozeile oder aus einer Datei angegeben werden
  (Batchmodus mglich)
- einfach konfigurierbar
- kann im Servermodus und/oder standalone betrieben werden (*)
- auswertbare Returncodes (Fehlercode bzw. Anzahl erfolgeich versendeter Nachrichten)
- Telefonbuch: anstelle der Telefonnummer knnen definierte Krzel benutzt
  werden (*)
- Versenden von Nachrichten an mehrere Empfnger in unterschiedlichen Netzen (*)
- Versenden von mehreren Nachrichten an einen oder mehrere Empfnger whrend
  einer einzelnen Verbindung (*)
- Nachrichten knnen gespoolt und im Servermodus mit einer minmalen
  Verbindungsanzahl whrend gnstiger Tarifzeiten versendet werden (*)
- fhren einer Protokolldatei (Logdatei) bzw. Protokollierung ber syslogd (*)
- Definition der Anzahl der Wahlwiederholungen mglich (*)
- Definition fr mehrere Modem-Schnittstellen mglich (falls eine nicht verfgbar
  ist, wird die nchste benutzt) (*)
- frei definierbare Pause zwischen den Wahlversuchen
- Modem wird zwischen den Wahlversuchen nicht blockiert
- Konfiguration fr die meisten Modems mglich
- Definition von Kopf- und/oder Fuzeile
- verfgbar auf vielen verschiedenen Betriebssystemen

Mit (*) gekennzeichnete Punkte sind nur in der registrierten Version verfgbar.

------------------------------------------------------------------------------

Installation
------------

Die ZIP-Datei (alternativ auch tar.Z) wird in einem beliebigen Unterverzeichnis
entpackt. Danach gibt es die folgenden Dateien:


  liesmich.txt        - diese hier
  sendsms[.exe]       - das eigentliche Programm
  sendsms.cfg         - Konfigurationsdatei
  sendsms.pro         - Telefonnetz-Definitionen
  sendsms.pbk         - Telefonbuch
  sendsms.err         - Fehlercodes
  group               - Beispiel fr ein Gruppendefinition (zum Versenden
                        an mehrere Empfnger)

Unter Unix mu die Programmdatei sendsms auf ausfhrbar gesetzt werden
(chmod u+x sendsms).

(Die OS/2-Version bentigt die EMX-Runtime-Umgebung
http://www.leo.org/pub/comp/os/os2/leo/index.html)

(Die DOS-Version bentigen einen Fossil-Treiber,
z.B. adf.exe http://www.digsys.se)

------------------------------------------------------------------------------

Konfiguration
-------------

In der Datei 'sendsms.cfg' wird die allgemeine Konfiguration des Programms
festgelegt.

In der Datei 'sendsms.pro' werden die verschiedenen Telefonnetze (welches Netz
benutzt TAP bzw. UCP, ber welche Telephonnummer wird die Nachricht verschickt
und welche Vorwahl haben die Nummern des entsprechenden Netzes) konfiguriert.

In der Datei 'sendsms.pbk' werden Krzel zum Whlen mittels symbolischer Namen
anstelle von Telefonnummern definiert.

Kommentare werden durch einen Strichpunkt (;) oder durch ein Gatter (#)
eingeleitet.


------------------------------------------------------------------------------
sendsms.cfg
-----------

Hier wird im Kapitel [SendSMS] die allgemeine Konfiguration vorgenommen. Im
Kapitel [Modem] wird das Modem(-device) konfiguriert. Das Kapitel [Modem]
kann in der registrierten Version beliebig oft wiederholt werden. Beim
Verbindungsaufbau wird immer versucht das als erstes definierte
Modem zu benutzen. Ist dieses Modem gesperrt oder reagiert nicht, so wird das
nchste benutzt. Sollte der Verbindungsaufbau mit allen Modems nicht funktionieren,
so wird eine Pause (REDIALDELAY) eingelegt und das Ganze wiederholt (REDIALCOUNT).


Im Kapitel [SendSMS] stehen die im Folgenden aufgefhrten Schlsselworte zur
Verfgung. Jedes Schlsselwort mu in einer neuen Zeile stehen.

LOCKDIR=/var/spool/uucp
Gibt das Verzeichnis an, in dem eine Lockdatei gesucht bzw. angelegt wird
(nur UNIX).

BINLOCKS=0
Gibt an, ob die Lockdatei binr (1) oder ASCII angelegt wird (nur UNIX).

SPOOLDIR=/var/spool/sendsms
Gibt das Verzeichnis an, in dem die Nachrichten gespoolt (zwischengespeichert) werden.
[nur in der registrierten Version]

LOGFILE=sendsms.log
Gibt das Logfile an, in dem SendSMS alle Aktionen protokolliert. Wird das
File ohne Pfad angegeben, so wird es in dem Verzeichnis in dem das
Programm liegt angelegt. Wird als LOGFILE 'syslog' (nur Unix) angegeben,
so wird ber den syslog-Dmon protokolliert.
[nur in der registrierten Version]

HEADER=
Gibt einen optionalen Header an (ein Text, der vor jede zu versendende
Nachricht gestellt wird)
[nur in der registrierten Version]

FOOTER=
Gibt einen optionalen Footer an (ein Text, der an jede zu versendende
Nachricht angehngt wird)
[nur in der registrierten Version]

REDIALCOUNT=1
Gibt die Anzahl von Wahlversuchen an. Im Servermodus gibt dieser Parameter
an, wieoft eine Nachricht max. im Spoolverzeichnis belassen wird (nach
fehlerhafter bertragung).
[nur in der registrierten Version]

REDIALDELAY=60
Gibt die Anzahl Sekunden an, die bis zum nchsten Wahlversuch gewartet wird.
In der Zeit bis zum nchsten Wahlversuch wird das Modem wieder freigegeben.

PHONE=
Gibt die eigene Telephonnummer, von der die Nachricht ausgeht, an.

MAXERRORS=
Gibt die max. Anzahl Fehler (Nachricht nicht gesendet) an, die bis zu einem
Programmabbruch akzeptiert wird. Ist dieser Parameter nicht bzw. auf 0
gesetzt, so wird nach einer fehlerhaften oder nicht bertragenen Nachricht
NICHT abgebrochen. Dieser Parameter hat nur Bedeutung, wenn an mehrere
Empfnger gesendet wird.

BAUD=4800
Gibt die zu verwendende Baudrate an (300, 600, 1200, 2400, 4800 oder 9600).
Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine
Definition vorhanden ist.

DATABITS=8
Gibt die Anzahl der Datenbits an (7 oder 8). Dieser Wert wird nur verwendet,
falls bei einem anzurufenden Provider keine Definition vorhanden ist.

STOPBITS=1
Gibt die Anzahl der Stopbits an (1 oder 2). Dieser Wert wird nur verwendet,
falls bei einem anzurufenden Provider keine Definition vorhanden ist.

PARITY=NONE
Gibt die Art der Paritt an (NONE, EVEN oder ODD). Dieser Wert wird nur verwendet,
falls bei einem anzurufenden Provider keine Definition vorhanden ist.

TIMEOUT=40
Gibt die Zeitdauer (in Sekunden) an, die das Programm nach dem Whlen auf die
CONNECT-Meldung wartet.

WAITAFTERWRITE=1
Gibt die Anzahl Sekunden an, die nach jedem Schreiben auf das Modem
gewartet wird (kann meistens auf 0 gesetzt werden).


Im Kapitel [Modem] stehen die im Folgenden aufgefhrten Schlsselworte zur
Verfgung. Jedes Schlsselwort mu in einer neuen Zeile stehen.
(Fr die entsprechenden Modembefehle wird auf das Modemhandbuch verwiesen
(soweit vorhanden))

DEVICE=COM1
Gibt den Anschlu an, an dem das Modem hngt (unter Unix z.B. /dev/ttyS0).
(Achtung: unter Unix mu darauf geachtet werden, da der Benutzer berechtigt
ist das Device zu benutzen)

RESET=ATZ
Gibt das Kommando zum Zurcksetzen des Modems an (normalerweise ATZ).
Ist in dem standard Profile des Modems die Antwort ausgeschaltet (s.u.) oder
ungleich Text, so mu hier ein anderes Profile geladen werden (z.B. ATZ1)
bzw. ein leeres Kommando stehen.

INIT=ATL1E1Q0V1
Gibt das Initialisierungskommando fr das Modem an.
Das Modem mu auf
   Echo an
   Antwort an
   Antwort als Text
eingestellt werden.

DIAL=ATDT0w
Gibt das Kommando zum whlen einer Nummer an (hier Tonwahl und nach einer '0'
auf das Freizeichen warten)

ESCAPE=+++
Gibt die Fluchtsequenz an, welche zum Umschalten vom Datenmodus in den
Befehlsmodus dient.

HANGUP=ATH
Gibt das Kommando zum Auflegen an.

RTSCTS=1
Gibt an da die Hardwareflukontrolle benutzt werden soll.



sendsms.pro
-----------

Hier werden die verschiedenen Dienstanbieter (in unregistrierter Version
maximal 3) konfiguriert. Fr jeden Dienstanbieter mu ein 'Kapitel'
angelegt werden. Dies erfolgt durch eine Zeile mit dem Namen des
Dienstanbieters in eckigen Klammern ([]) eingeklammert und den
folgenden Parametern:

PHONE=
Hier wird die Telefonnummer, ber die Nachrichten an das entsprechende
Netz gesendet werden knnen, angegeben. Ist das letzte Zeichen der Nummer
ein '&', so bedeutet dies, da beim Anwhlen des Providers an diese Nummer
die Nummer des Empfngers angehngt wird.

PROTOCOL=
Hier mu TAP, UCP, Scall oder Skyper stehen.

PREFIX=
Hier steht die Vorwahl des entsprechnden Netzes. Anhand dieser Vorwahl wird
beim Aufruf von SendSMS mit einer Telefonnummer (kein Alias aus dem Telefonbuch)
berprft, zu welchem Netz die entsprechende Telefonnummer gehrt.

REMOVEPREFIX=
Die Nummer des Empfngers wird zusammen mit der zu bersendenden Nachricht verschickt.
Da bei manchen Providern nur die Nummer (ohne Vorwahl) angegeben werden mu, kann
man mit diesem Parameter (=1) angeben, da der PREFIX (falls definiert) nicht gesendet
wird.

MSGTYPE=
Gibt an, ob die Nachricht nur Ziffern (NUMERIC), beliebige Zeichen
(ALPHANUMERIC) oder gar keine Zeichen (TONE) enthalten darf
(ALPHANUMERIC ist der Standard). Bei den Protokollen SKYPER und
SCALL wird dieser Parameter automatisch bestimmt.

MSGLEN=
Hier wird die maximale Lnge einer Nachricht angegeben. Bei den Protokollen
SKYPER und SCALL wird dieser Parameter automatisch bestimmt.

MAXMSG=
Gibt die maximale Anzahl von Nachrichten an, die innerhalb einer einzelnen Verbindung
versendet werden knnen. Ist dieser Parameter  definiert, so werden bis zu der
entsprechenden Anzahl Nachrichten versendet und danach automatisch die Verbindung
beendet und falls erforderlich eine neue Aufgebaut. Dies ist ntig, da einige
Provider nur eine begrenzte Anzahl Nachrichten pro Verbindung zulassen.

BAUD=4800
Gibt die zu verwendende Baudrate an (300, 600, 1200, 2400, 4800 oder 9600).
Dieser Wert, falls vorhanden, berschreibt den Wert in sendsms.cfg.

DATABITS=8
Gibt die Anzahl der Datenbits an (7 oder 8). Dieser Wert, falls vorhanden,
berschreibt den Wert in sendsms.cfg.

STOPBITS=1
Gibt die Anzahl der Stopbits an (1 oder 2). Dieser Wert, falls vorhanden,
berschreibt den Wert in sendsms.cfg.

PARITY=NONE
Gibt die Art der Paritt an (NONE, EVEN oder ODD). Dieser Wert, falls
vorhanden, berschreibt den Wert in sendsms.cfg.

WAITAFTERCONNECT=
Bei manchen Providern (mit UCP-Protokoll) mu nach dem Connect, bevor die
erste Nachricht versendet wird, noch eine Pause eingelegt werden (dies ist auch
abhngig von dem benutzten Modem, bzw. dessen Einstellungen). Dieser
Parameter gibt die Lnge der Pause (in Sekunden) an.

MODEMINIT=
Gibt ein zustzliches Initialisierungskommando an. Dieses Kommando wird nach
dem entsprechenden Kommando aus derDatei sendsms.cfg aufgerufen und ersetzt
dieses nicht. In den meisten Fllen kann dieser Parameter entfallen. Er wird
nur bentigt, wenn z.B. fr einen Provider das Modem auf ein bestimmtes Protokoll
eingestellt werden soll. Z.B. sollte bei einem Provider mit UCP-Protokoll das Modem
auf V.42/LAPM eingestellt werden (bei meinem Modem mit AT&Q5).

z.B.
[D1]
PHONE=01712092522
PROTOCOL=TAP
PREFIX=0171
MSGTYPE=ALPHANUMERIC
MSGLEN=160


sendsms.pbk
-----------

Hier knnen zu den einzelnen in sendsms.pro definierten Telefonnetzen (jeweils
ein eigens Kapitel) Krzel (Alias) fr Telefonnummern definiert werden. Jedes
Krzel steht in einer eigenen Zeile und danach durch '=' getrennt die zugehrige
Nummer (mit Vorwahl). Das Telefonbuch steht nur in der registrierten Version
zur Verfgung!!!!

z.B.
[D1]
wobo=01714160598        ; Wolfgang Bcherer

------------------------------------------------------------------------------

Aufruf
------

SendSMS wird wie folgt aufgerufen:

   sendsms [Optionen] {phoneNo | alias | @<inputFile>} [{message | < msgFile}]

   Optionen sind:
      -P<provider>      gibt den Provider zur angegebenen Telefonnummer an
      -F<msgFile>       gibt den Namen eines Files an, dessen Inhalt als
                        Nachricht verschickt werden soll
      -C<cfgFile>       gibt den Namen der Konfigurationsdatei an (sendsms.cfg)
      -R<proFile>       gibt den Namen der Providerdatei an (sendsms.pro)
      -B<pbkFile>       gibt den Namen der Telefonbuchdatei an (sendsms.pbk)
      -q<n>             startet SendSMS im Servermodus (Spoolverzeichnis wird alle <n>
                        Minuten berprft
      -s                SendSMS spoolt die Nachricht(en), auch wenn z.Zt. kein Server
                        luft
      -n                SendSMS sendet die Nachricht(en) direkt ber das Modem,
                        auch wenn z.Zt. ein Server luft

Z.B.: sendsms 0171xxxxx "Ich teste SendSMS."

Es ist immer mindestens ein Parameter - die Telefonnummer des Empfngers bzw.
ein Alias (Eintrag im Telefonbuch) - notwendig. Beginnt dieser erste Parameter
mit einem Masterspace (@), so gibt dieser nicht eine Nummer bzw. ein Alias an, sondern
den Namen einer Datei, welche die Nummern von mehreren Empfnger beinhaltet. Mit
solch einer Datei kann eine Nachricht an beliebig viele Empfnger, welche auch ber
verschiedene Netze erreichbar sind, versendet werden. Des weiteren ist es
mit solch einer Datei mglich verschiedene Nachrichten an einen oder mehrere
Empfnger zu versenden. Eine entsprechende Datei mu folgendes Format haben:

[<provider1>]
SMS=<message1>
PHONE=<nummer1>
PHONE=<nummer2>
SMS=<message2>
PHONE=<nummer3>
PHONE=<alias1>
PHONE=<alias2>

[<provider2>]
PHONE=<nummer4>

Durch eckige Klammern eingerahmt werden Provider (men in der Datei sendsms.pro
vorhanden sein) angegeben, zu welchen in den folgenden Zeilen Telefonnummern fr
Empfnger folgen. Pro Zeile wird entweder eine neue Nachricht (SMS=...)  oder
eine Nummer (PHONE=...) bzw. ein Alias angegeben. In obigem Fall wird die
Nachricht <message1> also an 2 Nummern des ersten Providers und whrend der
selben Verbindung auch noch die Nachricht <message2> an 3 weiter Empfnger des
Providers <provider1> gesendet. Auerdem wird die zweite Nachricht auch noch an
einen Empfnger von <provider2> gesendet. Ist in dieser Datei keine Nachricht
enthalten wird die Nachricht, die ber die Kommandozeile angegeben wurde an alle
Nummern, die in der Datei enthalten sind, versendet.

Als zweiter Parameter wird die zu versendende Nachricht in Hochkommata angegeben
(ACHTUNG: Je nach verwendeter Shell werden bestimmte Zeichen von dieser
interpretiert und ersetzt (z.B. '!') und/oder mssen anstatt Hochkommata doppelte
Hochkommata angegeben werden). Alternativ kann die zu versendende Nachricht auch
ber eine Umleitung aus einer Datei angegeben werden (< msgFile) oder mit dem
Parameter -F<msgFile>, wobei <msgFile> den Namen einer Datei angibt, deren
Inhalt als Nachricht (zumindest die ersten n Zeichen) versendet wird.
Wird beim Aufruf von SendSMS nur ein Parameter (Empfnger) angegeben,
so wird die zu versendende Nachricht von der Konsole eingelesen bis
eine Zeile mit nur einem Punkt '.' eingegeben wird (nicht in der Version
fr Windows 3.x). Soll eine Nachricht an einen Provider gesendet werden,
welcher anhand der Nummer des Empfngers nicht eindeutig zu identifizieren
ist, so mu ber den Parameter -P<provider> der entsprechende Provider angegeben
werden (Name wie er in der Datei 'sendsms.pro' definiert ist).
Z.B.: Es soll eine Nachricht an einen Quix-Empfnger gesendet werden.
Da SendSMS anhand der Quix-Nummer (7-stellige Nummer ohne Vorwahl) nicht
erkennen kann, was dies fr eine Nummer ist, mu zustzlich beim Aufruf
-PQuix_News angegeben werden (bei D1-Nummern wird anhand der Vorwahl (0171)
erkannt, da es eine D1-Nummer ist).

Wird SendSMS mit dem Parameter -q<n> gestartet (alle weiteren Parameter werden
in diesem Fall ignoriert), so luft SendSms als Server und berprft alle <n> Minuten
das Spoolverzeichnis (SPOOLDIR). Ist <n> = 0, wird SendSMS nach einmaligem abarbeiten
des Spoolverzeichnisses beendet. Falls Dateien vorhanden sind werden diese
innerhalb einer minimalen Anzahl von Verbindungen versendet. Sobald ein
SendSMS-Server luft werden alle weiteren Instanzen automatisch im
Spoolmodus gestartet. Mit den Parameter -n (direkt versenden) bzw. -s (auf
jeden Fall spoolen) kann dieses Verhalten gendert werden.
Mit diesen Mechanismen hat man die Mglichkeit Nachrichten ber eine Zeitdauer
zu sammeln und diese mit einer minimalen Anzahl von Verbindungen innerhalb der
gnstigsten Tarifzeiten zu versenden.

------------------------------------------------------------------------------

Returncodes
-----------
SendSMS gibt als Returncode die Anzahl der erfolgreich versendeten Nachrichten
zurck. Ist der Returncode negativ, so handelt es sich um einen Errorcode,
welcher in der Datei sendsms.err erlutert wird.

------------------------------------------------------------------------------

Wo finde ich die neueste Version?
=================================

Die neuste Version finden Sie unter:

        http://www.bai.de/

------------------------------------------------------------------------------

Probleme/Fragen
===============

Schicken Sie eine Email mit folgenden Angaben

- Fehler-/Problembeschreibung
- Kopie/Hardcopy des Aufrufs
- Kopie der Datei sendsms.cfg
- Kopie der Datei sendsms.pro
- verwendetes Betriebssystems
- verwendete Version von SendSMS
- verwendetes Modem und Telefonanlage

an:

wobo@bai.de

------------------------------------------------------------------------------
Bcherer Angewandte Informatik
Wolfgang Bcherer, Im Grn 9, D-76316 Malsch
Tel.: +49 (0)7246/942484, Fax.: +49 (0)7246/942485

EMail: wobo@bai.de
WWW: http://www.bai.de
