3516 lines
123 KiB
Plaintext
3516 lines
123 KiB
Plaintext
# Lock und PID-Files
|
||
ISDNLOG - Version 3.0 - 4-Mai-97 22:09
|
||
|
||
|
||
isdnlog ist ein Tool zur Auswertung der Info's vom ISDN-S0-Bus sowie
|
||
isdn4linux. isdn4linux ist seit Version 1.3.69 im Linux-Kernel enthalten.
|
||
|
||
isdnlog-3.0 wurde ausgiebig mit Linux-2.0.29 / isdn4kernel-2.0.29.5
|
||
getestet.
|
||
|
||
|
||
Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
|
||
|
||
Quick-Installation-Guide
|
||
------------------------
|
||
|
||
1. Linux-2.0.29 + isdn4kernel-2.0.29.5 verwenden:
|
||
CONFIG_ISDN=m
|
||
******* Andreas, die folgende Zeile ist wohl ueberholt!!!
|
||
CONFIG_ISDN_DRV_TELES=m ????????????????????????????????????
|
||
|
||
2. isdn4k-utils.2.1.tar.gz auspacken, erstellen und installieren:
|
||
cd /usr/src
|
||
tar xzf isdn4k-utils.2.1.tar.gz
|
||
cd isdn4k-utils
|
||
make install
|
||
|
||
3. Konfigurationsdatei fuer isdnlog fuellen:
|
||
|
||
vi | emacs | vim | e | nedit | ... | /etc/isdn/callerid.conf
|
||
|
||
-----------------------------------------------------
|
||
[MSN]
|
||
NUMBER = 4711
|
||
SI = 1
|
||
ALIAS = My Phone
|
||
ZONE = 1
|
||
|
||
[MSN]
|
||
NUMBER = 4712
|
||
SI = 1
|
||
ALIAS = FAX
|
||
ZONE = 1
|
||
|
||
[MSN]
|
||
NUMBER = 4713
|
||
SI = 1
|
||
ALIAS = X.75
|
||
ZONE = 1
|
||
-----------------------------------------------------
|
||
|
||
NUMBER = <eigene_Telefonnumer_ohne_Vorwahl>
|
||
SI = <Dienstkennung>
|
||
ALIAS = <Alias>
|
||
ZONE = 1
|
||
|
||
4. isdn4linux das D-Kanal-Protokoll entlocken:
|
||
|
||
telesctrl <myTeles> 1 4
|
||
|
||
mit <myTeles> entsprechend Driver-ID, wie beim "insmod" des Teles-Treibers
|
||
angegeben, oder "line0", falls der Teles-Treiber im Kern enthalten ist.
|
||
|
||
5. isdnlog starten:
|
||
|
||
/sbin/isdnlog -nsS -v1 w1 -m0x5f7 /dev/isdnctrl
|
||
|
||
6. Jede Menge rumtelefonieren
|
||
|
||
7. Sich mittels
|
||
|
||
/usr/sbin/isdnrep
|
||
|
||
die Rechnung ueber das unter 6. veranstaltete ausgeben lassen.
|
||
|
||
|
||
Wenn das so nicht klappt, oder wer auch die ganzen anderen Features von
|
||
isdnlog verwenden moechte, fuer den folgt nun der
|
||
|
||
Inhalt:
|
||
=======
|
||
|
||
1. Was kann/ist/macht isdnlog?
|
||
2. Was kann isdnlog nicht?
|
||
3. Installation
|
||
4. Die Konfigurationsdatei "isdn.conf"
|
||
4.1 Grundeinstellungen
|
||
4.2 Telefonnummern
|
||
4.2.1 1. Eintrag: Telefonnummer
|
||
4.2.2 2. Eintrag: Alias
|
||
4.2.3 3. Eintrag: Tarifzone
|
||
4.2.4 4. Eintrag: IP-Interface
|
||
4.2.5 5. Eintrag: Info-Args
|
||
4.2.6 Konkretes Beispiel fuer die "-S" Option
|
||
5. Die Konfigurationsdatei "isdnlog.users"
|
||
5.1 Aufbau
|
||
6. Das AVON-Verzeichnis
|
||
7. Betriebsmodi
|
||
8. Start von isdnlog
|
||
9. Die Protokoll-Datei "/var/log/isdn.log"
|
||
10. Das Report-Modul "isdnrep"
|
||
11. Das Konfigurations-Tool isdnconf
|
||
12. Der X-Client xisdn
|
||
13. ChargeInt
|
||
14. Gebuehren-GAU Begrenzer
|
||
14.1 Watchdog
|
||
14.2 CHARGEMAX
|
||
14.3 CONNECTMAX
|
||
14.4 BYTEMAX
|
||
15. Dual-Mode
|
||
16. SQL-Anbindung
|
||
17. Probleme?
|
||
18. Verwendete Dateien
|
||
19. Verwendete Environment-Variablen
|
||
20. Verwendete Abkuerzungen
|
||
21. Danksagung
|
||
|
||
|
||
Vorwort
|
||
-------
|
||
|
||
Die Logdatei "isdn.log" ist nicht mehr im Verzeichnis "/var/adm/,
|
||
sondern im Verzeichnis "/var/log" zu Hause.
|
||
|
||
Fuer die isdn4linux-Version ("ISDN subsystem Rev: 1.5/1.5/1.5/1.5")
|
||
respektive Linux-1.3.93 _muss_ isdnlog mit "-DSELECT_FIX"
|
||
erstellt werden. Dadurch wird ein kleiner Bug in dieser Version umgangen.
|
||
Dadurch entfaellt leider auch die Durchsatz-Ermittlung!
|
||
|
||
|
||
Es wurden folgende Dinge geaendert, die vor dem ersten Start
|
||
dieser neuen Version unbedingt angepasst werden muessen!
|
||
|
||
Der X11-Version (isdnlog-X11-2.43.tar.gz) liegen einige Sound-Dateien
|
||
als Samples bei.
|
||
Diese Datei unterliegen _nicht_ dem GPL. Diese sind nur als Beigaben
|
||
der Autoren zu Betrachten und stehen in keinem Zusammenhang mit den
|
||
Sourcen.
|
||
|
||
Aenderungen seit Version 2.50:
|
||
|
||
- Konfigurationsdateien heissen jetzt isdn.conf, callerid.conf und
|
||
~/.isdn statt isdnlog.conf
|
||
- Neue Syntax der Konfigurationsdateien
|
||
- Watchdog-Funktion (isdnlog ueberwacht isdn4linux)
|
||
- HTML-Ausgabe des isdnrep
|
||
|
||
Aenderungen seit Version 2.41:
|
||
|
||
- Das neue Feature "Rueckruf bei Besetzt" der Telekom wird erkannt,
|
||
und ignoriert
|
||
|
||
Aenderungen seit Version 2.30:
|
||
|
||
- Die "isdnlog.conf" hat fuer die Flags eine komlett neue
|
||
Syntax erhalten.
|
||
|
||
- Die Optionen -c und -i sind entfallen. Diese wurden durch die
|
||
ueberarbeitete Option -S ersetzt.
|
||
|
||
- Die -C x Option wurde geaendert. Es muss jetzt dort der gesamte
|
||
Pfad angegeben werden:
|
||
Vorher "-C p7 -> /dev/ttyp7",
|
||
jetzt "-C /dev/ttyp7"
|
||
|
||
Aenderungen seit Version 2.01:
|
||
|
||
- Die "isdnlog.conf" gehoert nun in das Verzeichnis
|
||
"/etc/isdn" ... anstelle von "/etc"
|
||
|
||
- Die "isdnlog.conf" hat neue Spalten erhalten, die _unbedingt_
|
||
in bestehende Dateien einzutragen sind
|
||
|
||
- Alle Telefonnummern in der "isdnlog.conf" muessen nun -
|
||
ausser den eigenen MSN's - mit der korrekten Anzahl vorlaufender
|
||
Nullen eingetragen werden
|
||
|
||
- Diverse Command-Line-Argumente von isdnlog haben erweiterte
|
||
oder geaenderte Funktionen erhalten.
|
||
|
||
|
||
Ein Bitte noch:
|
||
===============
|
||
|
||
Alle Anfragen zum isdnlog nicht an meine Email-Adresse senden, sondern an
|
||
|
||
i4l-isdnlog@franken.de
|
||
|
||
Bitte auch nicht mehr die alte Adresse isdnlog@Kool.f.EUnet.de verwenden.
|
||
|
||
So bekommen alle Entwickler die Anfragen direkt mit, und muessen nicht
|
||
von mir extra weitergeleitet werden. Dadurch wird die Anfrage mit
|
||
Sicherheit durch den jeweiligen Entwickler schneller beantwortet.
|
||
|
||
Alternativ koennen die Anfragen natuerlich auch an die Mailing-Liste
|
||
fuer isdn4linux (isdn4kernel) geleitet werden.
|
||
|
||
Um dort "Mitglied" zu werden, sollte eine Mail an
|
||
|
||
Majordomo@hub-wue.franken.de
|
||
|
||
gesendet werden. Im Body (_nicht_ im Subject) sollte
|
||
|
||
subscribe "emailadresse"
|
||
|
||
stehen.
|
||
|
||
|
||
1. Was kann/ist/macht isdnlog?
|
||
------------------------------
|
||
|
||
isdnlog ist eine Erweiterung zu isdn4linux, das staendig an "/dev/isdnctrl0"
|
||
sowie "/dev/isdninfo" lauscht, und saemtliche Vorgaenge auf dem eigenen
|
||
ISDN-Anschluss anzeigt.
|
||
|
||
Dazu liest es aus "/dev/isdnctrl0" (resp. "/dev/isdnctrl2", falls eine
|
||
2. Teles-Karte im Rechner steckt) das gesamte Q.931 Protokoll, sowie aus
|
||
"/dev/isdninfo" alle internen Meldungen von isdn4linux.
|
||
|
||
isdnlog sammelt all diese Informationen, und gestattet damit folgendes:
|
||
|
||
- der gesamte Verkehr kann auf einer Linux-Console, oder einem xterm
|
||
angezeigt werden. Dies sieht etwa so aus:
|
||
|
||
Beispiel #1 : Ein Raus-Ruf mit der Teles-Karte:
|
||
13 21:16:31 * tei 104 calling EUnet with Phone Digital
|
||
13 21:16:33 tei 104 calling EUnet with ISDN Time:Wed Mar 13 21:17:00 1996
|
||
13 21:16:33 tei 104 calling EUnet with ISDN CONNECT
|
||
13 21:16:33 tei 104 calling EUnet with ISDN 0,12 DM (0 s)
|
||
13 21:16:40 tei 104 calling EUnet with ISDN 5,63 kB / 823,43 bps
|
||
13 21:16:51 tei 104 calling EUnet with ISDN HANGUP (0,12 DM = 18 s)
|
||
|
||
Der gesamte Ablauf der Verbindung wird also mit allen verfuegbaren
|
||
Details (wann passierte das, wer hat wen angerufen, was hat's gekostet,
|
||
wieviel Byte wurden uebertragen, wie lange hat's gedauert ...) angezeigt.
|
||
|
||
Beispiel #2 : Ein Fax kam rein (da der "Gegner" noch keinen
|
||
ISDN-Anschluss hat, d.h. aus der Analogen Welt kommt,
|
||
fehlt hier dessen Telefonnummer)
|
||
|
||
Mar 13 21:29:37 * Call from ? on FAX Analog
|
||
Mar 13 21:29:42 Call to tei 94 from ? on FAX CONNECT
|
||
Mar 13 21:30:47 Call to tei 94 from ? on FAX HANGUP (65 s)
|
||
|
||
Gesteuert ueber eine Config-Datei zeigt isdnlog anstelle der Telefonnummern
|
||
frei waehlbare Alias-Bezeichnungen fuer die Telefonnummern an.
|
||
|
||
|
||
- isdnlog decodiert (im Gegensatz zum aktuellen Teles-Treiber) die
|
||
von der VSt uebermittelten Gebuehreninformationen, und zeigt diese
|
||
sowohl am Ende einer Verbinung (== Gesamtkosten fuer diese Verbindung)
|
||
als auch waehrend der Verbindung staendig an.
|
||
|
||
|
||
- mit einem (beigefuegten) Patch fuer isdn4linux kann isdnlog pro aktivem
|
||
B-Kanal staendig die aktuelle Durchsatz-Rate (in Byte/s), sowie die
|
||
bislang komplett durchgerauschten Byte anzeigen.
|
||
Zur Zeit werden aber nur die ankommenden Bytes angezeigt.
|
||
|
||
|
||
- Alle Verbindungen (sowohl die zustande gekommenen, als auch die nicht
|
||
zustande gekommenen (Besetzt, Gegner nimmt nicht ab, Fehler im ISDN-Netz)
|
||
schreibt isdnlog komprimiert in ein Logbuch ("/var/log/isdn.log").
|
||
Dieses Logbuch kann jederzeit mit dem Programm "isdnrep" ausgewertet
|
||
resp. eine Verbindungsstatistik ausgedruckt werden.
|
||
|
||
Hat man selbst keine Gebuehreninfo fuer seinen Anschluss beantragt
|
||
(-> keine Gebuehreninfo A, kein Komfort-Anschluss), berechnet isdnrep
|
||
die angefallenen Gebuehren aufgrund Uhrzeit/Datum sowie Ortsnetz/Zone
|
||
des Gegners selbst, und gibt also auch in diesem Fall die aufgelaufenen
|
||
Gebuehren aus.
|
||
|
||
|
||
- Pro Gegner kann ein externes Programm definiert werden, das isdnlog
|
||
startet, sobald dieser Gegner anruft, oder dieser angerufen wird.
|
||
Damit kann zum einen pro Verbindung ein Audio-Signal ueber die Sound-Karte
|
||
erzeugt werden (-> Telefonklingeln abhaengig vom Gegner), oder aber
|
||
eine Waschmaschine angesteuert werden. Der Phantasie sind hier keine
|
||
Grenzen gesetzt.
|
||
|
||
|
||
- isdnlog kann den gesamten Output von "/dev/isdnctrl0" sowie "/dev/isdninfo"
|
||
(ergaenzt um Datum/Uhrzeit) fuer eine spaetere Analyse mitprotokollieren
|
||
(in "/tmp/isdnctrl0").
|
||
|
||
|
||
- isdnlog erzeugt auf Wunsch syslog-Eintraege mit selektierbaren
|
||
Informationen
|
||
|
||
|
||
- isdnlog erkennt selbststaendig 1TR6 oder E-DSS1 Frames, und decodiert
|
||
entsprechend korrekt.
|
||
|
||
- isdnlog steuert einen X11-Client an, der neben einer Anzeige aller
|
||
Verbindungen auch die On-Line Definition von bislang unbekannten
|
||
Gegnern u.ae. ermoeglicht.
|
||
|
||
- Es besteht seit neuestem die Moeglichkeit, alle Informationen ueber
|
||
den S0-Bus auf der X11-Oberflache mit dem xisdn darstellen zu lassen.
|
||
Allerdings befindet sich der xisdn noch im Entwicklungstand, so dass
|
||
sich mit Sicherheit noch einige Aenderungen an der Oberflaeche und an
|
||
den Funktionalitaeten abzeichnen lassen.
|
||
|
||
|
||
2. Was kann isdnlog nicht?
|
||
--------------------------
|
||
|
||
Z.Zt. arbeitet isdnlog _nur_ mir dem Teles-Treiber (und damit mit einer
|
||
Teles-ISDN-Karte od. compatiblen Karten) zusammen, die ICN-Karte wird
|
||
leider noch nicht unterstuetzt.
|
||
|
||
Weiterhin kann isdnlog bei allen rausgehenden Verbindungen, die nicht
|
||
mit der Teles-Karte entstanden sind (ISDN-Telefon, Modem/Fax etc. am
|
||
a/b Adapter oder einer Telefonanlage) die entsprechenden Telefonnummern
|
||
leider nicht anzeigen. Dazu Gernot Zander:
|
||
|
||
: Rausgehende Gespraeche von fremden Geraeten (Teflon, Modem) koennen
|
||
: nicht richtig protokolliert werden, weil die Nummer nur ans's Amt
|
||
: geschickt, aber nicht _zurueckgeschickt_ wird. Bei eigenen Anrufen weiss der
|
||
: Treiber die Nummer zwangslaeufig:-), bei ankommenden wird sie _vom_ Amt
|
||
: mitgeteilt.
|
||
: Die Karte (und damit teles0.4d) kann nur das mitschreiben, was _vom_
|
||
: Amt kommt oder was sie selber _zum_ Amt schickt. Nicht aber, was Fremd-
|
||
: geraete _zum_ Amt senden.
|
||
|
||
: Die Karte bekommt immer nur eine Richtung mit, naemlich Amt->User.
|
||
: Sie kann von den User->Amt nur die _eigenen_ Meldungen
|
||
: ausgeben (also die der Teles selbst).
|
||
: Wenn man mit seiner TK-Anlage rauswaehlt, geht die Zielnummer
|
||
: aber User->Amt, und genau das wird von einer Teles
|
||
: nicht mitgeschnitten (kann sie nicht!), es passiert auf dem falschen Bus!
|
||
: Der S.0 ist ja deshalb 4adrig, weil 2 Adern von den Endgeraeten _zum_
|
||
: und zwei _vom_ NT gehen. Und jedes normale Endgeraet sendet auf
|
||
: dem einen Paar und empfaengt auf dem anderen.
|
||
Dazu siehe jedoch Kapitel 15. Dual-Mode !
|
||
|
||
|
||
3. Installation
|
||
---------------
|
||
|
||
Nun kann isdnlog ausgepackt (wohl bereits geschehen ;-) und erstellt
|
||
sowie installiert werden:
|
||
|
||
cd /usr/src
|
||
tar xzf isdnlog.tar.gz
|
||
cd isdnlog-<Version>
|
||
make install
|
||
|
||
Vor dem "make" koennen folgende Eintraege koennen im Installationsmenue
|
||
den eigenen Gegebenheiten angepasst werden. Bitte nicht mehr direkt im Makefile
|
||
editieren, da diese Eintraege ueberschrieben werden.
|
||
|
||
COPTS
|
||
Compiler-Optionen fuer den gcc
|
||
ACHTUNG: Die Voreinstellung "-O3" sollte bei gcc-Versionen _vor_ 2.7.2
|
||
entfernt werden, da diese Compiler-Versionen noch Probleme mit
|
||
dem Optimizer haben!
|
||
|
||
Hier koennen folgende grundsaetzliche Verhaltensweisen von isdnlog
|
||
voreingestellt werden:
|
||
|
||
-DISDN_NL - Gebuehrenauswertung Niederlande (anstelle Deutschland)
|
||
-DISDN_CH - Gebuehrenauswertung Schweiz (anstelle Deutschland)
|
||
|
||
I4LCONFDIR (/etc/isdn)
|
||
Wo liegen die "isdn.conf" sowie die "avon" (falls verwendet!)
|
||
|
||
Mit der Environment-Variablen "ISDN_CONF_PATH" kann auch zur Laufzeit das
|
||
Verzeichnis festgelegt werden.
|
||
Beispiel "export ISDN_CONF_PATH=/etc/isdn"
|
||
|
||
USERCONFFILE (~/.isdn)
|
||
Wie soll die Konfigurations-Datei der einzelnen Benutzer heissen
|
||
|
||
CONFFILE (isdn.conf)
|
||
Wie soll die Konfigurations-Datei heissen
|
||
|
||
OLDCONFFILE (isdnlog.conf)
|
||
Wie hiess die _alte_ Konfigurations-Datei
|
||
|
||
LOGFILE (/var/log/isdn.log)
|
||
Wie soll das Logbuch heissen
|
||
(Diese Einstellung laesst sich spaeter noch zur Laufzeit in der isdn.conf
|
||
aendern)
|
||
|
||
LOCKDIR (/var/lock/)
|
||
Wol liegen die lock files (lock-Dateien).
|
||
|
||
RUNDIR (/var/run/)
|
||
Wol liegen die pid files (pid-Dateien).
|
||
|
||
SBINDIR (/sbin)
|
||
Wohin soll "isdnlog" installiert werden
|
||
|
||
BINDIR (/usr/sbin)
|
||
Wohin soll "isdnrep" installiert werden
|
||
|
||
TMPDIR (/tmp)
|
||
Wo soll das "isdnctrl0" hingeschrieben werden
|
||
|
||
X11BIN (/usr/X11R6/bin)
|
||
Wohin soll "xisdn" installiert werden
|
||
|
||
APPDEF (/usr/X11R6/lib/X11/app-defaults)
|
||
Wohin soll das Resource-File von "xisdn" installiert werden
|
||
|
||
|
||
Folgende Programme und Dateien werden durch den "make install" erstellt:
|
||
|
||
/sbin/isdnlog
|
||
/usr/sbin/isdnrep
|
||
/etc/isdn/avon (wenn LIBAREA nicht definiert ist!)
|
||
/usr/lib/areacodes (wenn LIBAREA definiert ist!)
|
||
|
||
|
||
ACHTUNG: Durch die Syntaxandaerung und den Erweiterungen, muessen folgende
|
||
Anderungen _zuerst_ an der bestehenden isdnlog.conf durchgefuehrt
|
||
werden:
|
||
|
||
Bei der Installation von isdnlog werden automatisch die neuen
|
||
Konfigurationsdatei angelegt.
|
||
|
||
Wenn isdnlog noch nie installiert war, muss noch die Datei
|
||
callerid.conf editiert werden.
|
||
Bestand schon eine aeltere Version von isdnlog und wurde der alte
|
||
Pfad der Dateien korrekt im Installationsmenue angegeben,
|
||
werden alle Daten aus der alten Datei isdnlog.conf in die neuen
|
||
uebernommen. Es sollte also keine Nachbearbeitung noetig sein.
|
||
|
||
Im Verzeichnis "xisdnload" befindet sich ein weiterer X11-Client von
|
||
Frank Strauss (strauss@escape.de), der die Durchsatz-Rate pro B-Kanal
|
||
auch grafisch darstellen kann. Dieser kann mittels
|
||
|
||
xmkmf
|
||
make
|
||
|
||
erstellt werden.
|
||
|
||
|
||
4. Die Konfigurationsdatei "isdn.conf"
|
||
-----------------------------------------
|
||
|
||
Die Konfigurationsdatei wird im Verzeichnis "/etc/isdn" erwartet (wenn die
|
||
Variable I4LCONFDIR im Makefile so gesetzt ist), und enthaelt alle fuer isdnlog
|
||
relevanten Steuerungsparameter.
|
||
|
||
Diese Datei muss dem User root gehoeren (auch die Gruppe). Auch nur dieser
|
||
darf Schreibrechte an dieser Datei haben. Diese Datei wird auch vom isdnlog
|
||
gelesen. Andernfalls beendet sich der isdnlog sofort wieder. Dieses ist ein
|
||
Schutz, um Trojanische Pferde zu verhindern und kann auch nicht ausgeschaltet
|
||
werden.
|
||
|
||
Wenn man dem compilierten den Pfad aendern will, muss man die
|
||
Umgebungsvariable "ISDN_CONF_PATH" setzen.
|
||
|
||
Die Syntax der Konfigurationsdateien ist ausfuehrlich in der Datei
|
||
|
||
../lib/README.Syntax.conffile
|
||
|
||
beschrieben.
|
||
|
||
4.1 Grundeinstellungen
|
||
----------------------
|
||
|
||
Es gibt hier drei Sektionen, die vom isdnlog ausgewertet werden:
|
||
[GLOBAL]
|
||
[VARIABLES]
|
||
[ISDNLOG]
|
||
Diese Sektionen koennen in einer beliebigen Reihenfolge in der Datei
|
||
vorkommen.
|
||
|
||
Die Sektion GLOBAL beinhaltet Eintraege, die fuer alle ISDN-Programme
|
||
von Bedeutung sind. Hier sind folgende Eintrage zu finden:
|
||
|
||
AREACODE:
|
||
Beinhaltet die eigene Ortsvorwahl (mit oder ohne vorlaufender "0". Der
|
||
Prefix "0" wird in der Datei config.h durch das Macro S_AREA_PREFIX
|
||
oder durch den Eintrag AREAPREFIX representiert). Dieser Eintrag ist
|
||
zwingend.
|
||
Wird isdnlog im 1TR6 eingesetzt, muss hier die _gesamte_ Telefonnummer
|
||
exclusive der EAZ eingetragen werden. Diese Variable ist absolute Pflicht!
|
||
Beispiel fuer Hamburg (Euro-ISDN !!!):
|
||
AREACODE = 040 # oder
|
||
AREACODE = 40
|
||
|
||
Wenn S_AREA_PREFIX den String "0815" enthaelt, dann ist auch folgende
|
||
Zeile erlaubt:
|
||
AREACODE = 081540
|
||
|
||
COUNTRYCODE:
|
||
Hier wird die eigene Laenderkennung gesetzt (mit oder ohne vorlaufendem "+".
|
||
Der Prefix "+" wird in der Datei config.h durch das Macro S_COUNTRY_PREFIX
|
||
oder durch den Eintrag AREAPREFIX representiert). Dieser Eintrag ist
|
||
ebenfalls zwingend.
|
||
Beispiel fuer Deutschland:
|
||
COUNTRYCODE = +49 # oder
|
||
COUNTRYCODE = 49
|
||
|
||
Wenn S_COUNTRY_PREFIX den String "0815" enthaelt, dann ist auch folgende
|
||
Zeile erlaubt:
|
||
COUNTRYCODE = 081549
|
||
|
||
AREAPREFIX:
|
||
Es enthaelt den Prefix zur Ortsvorwahl. Beim Kompilieren ist dieser
|
||
Wert defaultmaessig auf "0" gesetzt. Dieser Eintrag ist optional.
|
||
|
||
COUNTRYPREFIX:
|
||
Es enthaelt den Prefix zur Laenderkennung. Beim Kompilieren ist dieser
|
||
Wert defaultmaessig auf "+" gesetzt. Dieser Eintrag ist optional.
|
||
|
||
AREALIB:
|
||
Enthaelt den vollen Pfad zu der Datei "areacodes". Diese Angabe ist
|
||
optional und nur notwendig, wenn sich der Pfad nach der Compilation
|
||
geaendert hat.
|
||
Beispiel:
|
||
AREALIB=/usr/share/lib/areacodes
|
||
|
||
AVONLIB:
|
||
Enthaelt den vollen Pfad zu der Datei "avon". Diese Angabe ist
|
||
optional und nur notwendig, wenn sich der Pfad nach der Compilation
|
||
geaendert hat.
|
||
Beispiel:
|
||
AREALIB=/usr/share/lib/avon
|
||
|
||
Da aber defaultmaessig die Arealib verwendet wird, ist die Datei
|
||
avon obsolet.
|
||
|
||
|
||
Die ISDN-Tools erlauben es, Umbebungsvariablen zu setzen und zu verwenden.
|
||
Es gibt Variablen, die sollten in der isdn.conf (oder vorher) gesetzt
|
||
sein. Diese werden in der Sektion [VARIABLES] zu setzen.
|
||
Beispiel:
|
||
|
||
[VARIABLES]
|
||
MYPATH = /home/fred
|
||
|
||
Es duerfen als Variablennamen nur noch gross geschriebene Woerter verwendet
|
||
werden. Ein Eintrag der Form
|
||
|
||
myPath = /home/fred
|
||
|
||
oder
|
||
|
||
mypath = /home/fred
|
||
|
||
werden z.B. unter der /bin/sh mit "MYPATH=/home/fred" gesetzt.
|
||
Hier gibt auch keine andere M<>glichkeit das zu aendern. Wenn Kleinbuschstaben
|
||
verwendet werden sollen, muessen diese vor dem Start von isdnlog mit
|
||
export (sh, bash) oder setenv (csh) unter der Shell gesetzt werden.
|
||
|
||
ACHTUNG: "MYPATH = /home/fred" wird als Variable zu "MYPATH=/home/fred".
|
||
Es fallen also alle Blanks und Tabulatoren vor und nach dem "="
|
||
heraus.
|
||
|
||
|
||
Die dritte Sektion beschreibt spezifische Angaben fuer den isdnlog. Diese
|
||
Sektion wird durch [ISDNLOG] eingeleitet.
|
||
|
||
LOGFILE = /var/log/isdn.log
|
||
|
||
Dieses ist das Logfile in dem isdnlog alle Gespraeche ablegt, und isdnrep
|
||
sie anschliessend anzeigt. Wenn diese sich in einem anderen Platz befindet,
|
||
als zur Compilationszeitpunkt (in der Regel /var/log/isdn.log), dann kann
|
||
dieses hier passieren.
|
||
Die Option "-f" vom isdnrep ueberschreibt diesen Wert dann allerdings wieder.
|
||
|
||
Zusatzinformation:
|
||
Diese Datei wird seit der Version 3.0 vom isdnlog nicht mehr staendig offen
|
||
gehalten, sondern nur noch nach Beendigung eines Gespraeches wird die Datei
|
||
geoeffnet, der Eintrag ergaenzt und anschliessend wieder geschlossen.
|
||
Dadurch ist es jetzt moeglich diese Datei zu verschieben, wenn der isdnlog
|
||
laeuft und gerade kein Gespraech beendet wird.
|
||
|
||
RELOADCMD = reload
|
||
|
||
Hiermit wird ein ausfuehrbares Programm (z.b. Shell-Script) angegeben,
|
||
mit dem isdnlog ein evtl. wildgewordenes isdn4linux reanimieren kann.
|
||
(Ein Beispiel findet sich im Kapitel 14.1 Watchdog)
|
||
|
||
STOPCMD = stop
|
||
|
||
Hiermit wird ein ausfuehrbares Programm (z.b. Shell-Script) angegeben,
|
||
mit dem isdnlog isdn4linux terminieren kann.
|
||
(Ein Beispiel findet sich im Kapitel 14.2 CHARGEMAX)
|
||
|
||
REBOOTCMD = /sbin/reboot
|
||
|
||
Hiermit wird ein ausfuehrbares Programm (z.b. Shell-Script) angegeben,
|
||
mit dem isdnlog Linux herunterfahren kann.
|
||
(Ein Beispiel findet sich im Kapitel 14.2 CHARGEMAX)
|
||
|
||
CHARGEMAX = 15.00
|
||
|
||
Hiermit wird (in DM) angegeben, wieviel Geld man pro Tag maximal
|
||
mit isdn4linux vertelefonieren moechte.
|
||
|
||
CONNECTMAX = 18000,0
|
||
|
||
Hiermit wird (in Sekunden) angegeben, wieviel Zeit man pro Monat
|
||
maximal Online sein moechte.
|
||
|
||
BYTEMAX = 67108864,0
|
||
|
||
Hiermit wird (in Byte) angegeben, wieviel Byte man maximal pro
|
||
Monat saugen moechte.
|
||
|
||
CURRENCY=factor,currency
|
||
|
||
Wenn die Variablen in der isdn.conf gesetzt werden, dann kann man folgende
|
||
Syntax verwenden:
|
||
|
||
Angabe der Waehrungsbezeichnung sowie eines Multiplikationsfaktors.
|
||
Falls dieser Eintrag fehlt, wird "0.12,DM" angenommen, d.h. jeder
|
||
Gebuehrenimpuls wird mit 0.12 multipliziert, und mit der Bezeichnung
|
||
"DM" angedruckt.
|
||
|
||
In einigen europaeischen Laendern werden diese beiden Parameter bereits
|
||
von der VSt uebertragen (z.b. Oesterreich), und brauchen daher nicht
|
||
angegeben zu werden.
|
||
|
||
**********Andreas, stimmt das noch??????????????????????????
|
||
ACHTUNG: In der vorliegenden Version werden diese beiden Parameter
|
||
noch nicht an isdnrep uebergeben, und muessen daher bei Einsatz des
|
||
"isdnrep" trotz Uebermittlung von der VSt eingetragen werden!
|
||
Defaultmaessig steht im isdnrep "0.12,DM". Daher entfaellt diese
|
||
Angabe fuer Deutschland.
|
||
|
||
Wenn man zum Beispiel sich die Nettogebuehren (ohne MwSt.) anzeigen
|
||
lassen will, kann man hier z.B. folgenden Wert setzen:
|
||
|
||
CURRENCY=0.1043,DM
|
||
|
||
Fuer den isdnrep kann man einen oder mehrere Formatsstrings definieren,
|
||
wie der isdnrep die einzelnen Gebuehren anzeigen soll. Die genaue Syntax
|
||
wird unter dem Kapitel isdnrep beschrieben.
|
||
|
||
Der Formatstring kann in Hochkommata eingeschlossen werden. Dieses ist
|
||
sinnvoll, wenn das erste Zeichen ein Leerzeichen oder ein Tabulator
|
||
sein sollte. Dabei ist zu beachten, falls ein Hochkomma im Formatstring
|
||
selber vorkommen soll, dass dieses zu quoten ist.
|
||
Dieses gilt fuer ILABEL, OLABEL und auch REPFMT.
|
||
|
||
Beispiel:
|
||
|
||
REPFMT = "%X\"%x"
|
||
|
||
Alle Formateintraege sind optional. Bei der Installation werden diese
|
||
allerdings erzeugt.
|
||
|
||
Die folgenden beiden sind Standard-Eintraege, die der isdnrep sucht:
|
||
|
||
REPFMT = " %X %D %15.15H %T %-15.15F %7u %U %I %O"
|
||
REPFMTWWW = "%X %D %17.17H %T %-17.17F %-20.20l %9u %U %I %O"
|
||
|
||
Der erste ist fuer den "normalen" Gebuehrenausdruck. Der zweite wird
|
||
verwendet, falls die Ausgabe im HTML-Format erfolgen soll.
|
||
|
||
Es koennen noch weitere angegeben werden:
|
||
|
||
REPFMTxxx = ...
|
||
|
||
Fuer "xxx" kann eine beliebige Zeichenfolge ohne Leerzeichen und Tabulator
|
||
stehen. Dieser Formatstring wird dann vom isdnrep verwendet mit der
|
||
Option -Fxxx.
|
||
|
||
ILABEL=xxxxx
|
||
OLABEL=xxxxx
|
||
|
||
Hiermit kann definiert werden, wie die Console-Ausgaben aussehen sollen.
|
||
Fehlen diese Eintraege, wird
|
||
ILABEL=%b %e %T %ICall to tei %t from %N2 on %n2
|
||
OLABEL=%b %e %T %Itei %t calling %N2 with %n2
|
||
angenommen (die bislang bekannte Optik)
|
||
|
||
Bei reinkommenden Verbindungen wird das "ILABEL", und bei rausgehenden
|
||
Verbindungen das "OLABEL" ausgegeben.
|
||
|
||
Diese Label werden von isdnlog auf jeden Fall um die mit "-m" angeforderten
|
||
Statusmeldungen wie RING, TIME, CONNECT, HANGUP etc. ergaenzt.
|
||
|
||
Neben beliebigen Buchstaben/Zahlen (incl. der ueblichen "\007" Octal-Notation)
|
||
koennen folgende Platzhalter angegeben werden:
|
||
|
||
%t tei
|
||
%C Call reference
|
||
%Nx MSN (Telefonnummer) des Gegner's (siehe *1)
|
||
%nx Eigene MSN (Telefonnummer) (siehe *1)
|
||
%cx Via CLIP vermeldete MSN (siehe *1)
|
||
%A der Text " alias <MSN>", falls
|
||
CLIP-Meldung, sonst leer
|
||
%I Tabulation (siehe *2)
|
||
%a Wochentag (-> "Fri")
|
||
%b Monat (-> "Aug")
|
||
%e Tag im Monat (-> " 8")
|
||
%T Uhrzeit (-> "13:17:11")
|
||
%B B-Kanal (0, oder 1)
|
||
%k Nummer der ISDN-Karte, von der die Meldung kam (0 = 1. Karte)
|
||
|
||
%/
|
||
%
|
||
%(
|
||
%) Falls die Nummer des Gegners bekannt, entsprechendes Zeichen,
|
||
sonst Leerstring
|
||
|
||
|
||
*1 Bei %N, %n sowie %c muss angegeben werden, wie die Telefonnummer ausgegeben
|
||
werden soll:
|
||
|
||
%N0 - Telefonnummer exakt so, wie von der VSt gemeldet
|
||
(z.b. "8989810530")
|
||
%N1 - Telefonnummer, von isdnlog um Vorwahl, vorlaufende "0" etc.
|
||
ergaenzt (z.b. "+498989810530")
|
||
%N2 - Von isdnlog optimal "verschoenerte" Nummer, also Alias
|
||
aus "isdn.conf" oder mit Ortsnetz etc.
|
||
(z.b. "+49 89/89810530, Muenchen")
|
||
%N3 - Vorwahl (z.b. "89")
|
||
%N4 - Rufnummer (z.b. "89810530")
|
||
%N5 - Alias
|
||
%N6 - Ortsnetz (z.b. "Muenchen")
|
||
%N7 - Areacode (z.b. "+49")
|
||
|
||
*2 Dieser Platzhalter wird von isdnlog folgendermassen aufgeloest:
|
||
|
||
Bezieht sich die Zeile auf den ersten aktiven B-Kanal, wird daraus
|
||
ein Leerstring -> ""
|
||
Bezieht sich die Zeile auf den zweiten aktiven B-Kanal, werden daraus
|
||
zwei Blank's -> " "
|
||
Bezieht sich die Zeile auf eine entstehende Verbindung, wird daraus
|
||
ein Stern -> "* "
|
||
|
||
|
||
Folgende Optionen werden nur fuer den Schalter -S optional benoetigt:
|
||
|
||
START={
|
||
...
|
||
}
|
||
|
||
Es kann ein zu startender Befehl angegeben werden. Wenn eine Verbindung
|
||
aufgebaut wird, besteht oder beendet wird und unter den entsprechenden
|
||
Nummern kein Befehl steht, dann wird der passende Befehl unter "START"
|
||
in der Sektion [ISDNLOG] ausgefuehrt. Das heisst isdnlog schaut zuerst
|
||
unter der entsprechenden Telefonnumer nach, ob dort ein Befehl ist.
|
||
|
||
Wenn "START" verwendet wird bei Verbindungen, die raus gehen und nicht von
|
||
der ISDN-Karte kommen (also Nummern unbekannt), dann geht "OR" (Outgoing
|
||
Ring) nicht (siehe Info von Gernot Zander), ist also kein Bug vom isdnlog.
|
||
|
||
Wenn ja, wird dieser ausgefuehrt und der Eintrag "START" ignoriert.
|
||
|
||
Wenn die Nummer in der Datei "isdn.conf" keinen Eintrag hat, oder unter
|
||
der Nummer in der Sektion [Flag] nichts eingetragen ist, dann schaut isdnlog
|
||
unter "START" nach.
|
||
|
||
Diese Zeilen koennen verwendet werden, wenn man fuer alle Verbindungen
|
||
die gleichen Programme starten will, oder fuer alle unbekannten Nummern.
|
||
Die Syntax ist unter "Info-Args" der Dateien "callerid.conf" und"~/.isdn"
|
||
zu finden.
|
||
|
||
|
||
4.2 Die Dateien "callerid.conf" und "~/.isdn"
|
||
---------------------------------------------
|
||
|
||
Hier koennen eine beliebige Anzahl von Telefonnummer nebst einigen
|
||
zusaetzlichen Parametern angegeben werden.
|
||
Die Angabe _aller_ eigenen Telefonnummern ist zwingend, alle weiteren
|
||
Partner-Telefonnummern koennen eingeben werden.
|
||
|
||
Die Datei "callerid.conf" liegt im Verzeichnis /etc/isdn und muss dem User
|
||
root gehoeren (auch die Gruppe). Auch nur dieser darf Schreibrechte an dieser
|
||
Datei haben. Diese Datei wird auch vom isdnlog gelesen. Es ist die globale
|
||
Datei fuer die Telefonnummern. Hier muessen auch die [MSN]-Eintraege
|
||
untergebracht werden.
|
||
|
||
Die Datei "~/.isdn" kann jeder Benutzer haben, der den isdnrep und den isdnconf
|
||
verwendet. Hier sind die Rechte der Datei voellig egal. Diese Datei ist
|
||
dafuer bestimmt, dass ein Benutzer soetwas wie ein eigenes Telefonverzeichnis
|
||
anlegen kann, wo auch die Nummer nur beim isdnrep angezeigt werden.
|
||
Es koennen hier aber die [MSN]-Eintraege ueberschrieben werden fuer die
|
||
beiden Programme isdnconf und isdnrep.
|
||
|
||
Es koennen hier Variablen verwendet werden, die entweder in der isdn.conf
|
||
gesetzt wurden oder vorher (z.b. auf Shellebene).
|
||
In den Dateien "callerid.conf" und "~/.isdn" koennen ebenfalls Variablen
|
||
gesetzt werden. Das bedeutet also, dass es dort auch eine Sektion [VARIABLES]
|
||
geben, wie in der "isdn.conf". Aber Achtung!! Hier koennen nur gross
|
||
geschriebene Variablennamen verwendet werden:
|
||
|
||
[VARIABLES]
|
||
fred=fred1234 # -> "FRED=fred1234" !!!!
|
||
FRED=fred1234 # -> "FRED=fred1234"
|
||
|
||
Eine Variable wird allerdings nur ab dem Gleichheitszeichen ersetzt.
|
||
|
||
Wenn man an die Variable noch etwas anhaengen will, dann muss man den
|
||
Variablenname in geschweifte Klammern setzen.
|
||
Im Gegensatz zur frueheren Version koennen die Variablen an beliebiger Stelle
|
||
kommen.
|
||
|
||
Beispiele:
|
||
|
||
[$num] # wobei num=NUMBER ist geht nicht!!!!
|
||
$alias=fred # wobei alias=ALIAS ist geht nicht!!!!
|
||
|
||
[NUMBER]
|
||
NUMBER=$MSN1 # MSN1=1234 -> "1234"
|
||
ALIAS=${PHONE}1 # PHONE=Telefon -> "Telefon1"
|
||
|
||
...
|
||
PROGRAM= auplay ${MY_PATH}ring.au # MY_PATH=/home/fred/ -> "/home/fred/ring.au"
|
||
PROGRAM= auplay $MY_PATHring.au # geht nicht!!
|
||
PROGRAM= auplay ${MY_PATH}ring.au ${SOUND_PATH}/$RING_FILE
|
||
# SOUND_PATH=/home/sound RING_FILE=ring.au -> "/home/sound/ring.au"
|
||
...
|
||
|
||
Wenn eine Variable nicht ersetzt werden konnte, so wird dieses angemahnt,
|
||
und die Variable bleibt so bestehen, im Gegensatz zur bash-Shell, wo
|
||
dann ein Leerstring ausgegeben wird:
|
||
|
||
...
|
||
ALIAS = $FRED Feuerstein # -> "$FRED Feuerstein", wenn $FRED ungueltig ist.
|
||
...
|
||
|
||
Wenn das "$" nicht als Zeichen fuer
|
||
eine Variable verwendet werden soll, so muss diese mit "\$" geqoutet werden:
|
||
|
||
...
|
||
ALIAS = \$PATH # -> "$PATH"
|
||
...
|
||
|
||
Wenn eine Variable mehrfach gesetzt wird, so wird sie ueberschrieben. Die
|
||
Regel fuer das ueberschreiben entspricht der Reihenfolge, in der die
|
||
Konfigurationsdateien gelesen werden:
|
||
|
||
1. isdn.conf
|
||
2. callerid.conf
|
||
3. ~/.isdn
|
||
|
||
Wenn eine Variable "FRED" in "isdn.conf" und "~/.isdn" gesetzt werden, so wird
|
||
der Wert von "isdn.conf" durch den Wert der zweiten Datei ueberschrieben.
|
||
|
||
Die Variablen werden zuerst aus allen drei Dateien gelesen, bevor die
|
||
Ersetzung stattfindet. Das bedeutet also, das z. B. eine Variable, die
|
||
in "~/.isdn" gesetzt wurde, in der isdn.conf verwendet werden kann.
|
||
|
||
Dieses mag im ersten Augenblick als ein Sicherheitsloch erscheinen, aber
|
||
wenn als root ein Programm gestartet wurde, muessen alle drei Dateien
|
||
auf readonly fuer group und world gesetzt sein. Andersherum kann ein Benutzer,
|
||
der ein Programm startet auf diese Dateien nur lesend zugreifen.
|
||
|
||
ACHTUNG:
|
||
Es ist allerdings davon abzuraten, weder den isdnlog, noch den isdnrep oder den
|
||
isdnconf mit dem sticky-Bit auszustatten!!!!
|
||
|
||
Es gibt bestimmte Regeln, nachdem Eintraege aus der Datei "~/.isdn" die
|
||
Eintraege der "callerid.conf" ueberschreiben:
|
||
|
||
Der Sektionsname ist in "callerid.conf" und "~/.isdn" gleich (entweder
|
||
[MSN] oder [NUMBER]).
|
||
|
||
Wenn die Eintraege NUMBER und SI in beiden Dateien vorkommen und identisch sind,
|
||
dann wird der Eintrag aus der der Datei "callerid.conf" ueberschrieben durch
|
||
den Eintrag "~/.isdn".
|
||
|
||
Wenn nur die Eintrag NUMBER (und _nicht_ SI) in beiden Dateien vorkommen und
|
||
identisch sind, dann wird der Eintrag aus der der Datei "callerid.conf"
|
||
ueberschrieben durch den Eintrag "~/.isdn".
|
||
Unter Identisch ist du verstehen, wenn beide Strings absolut identisch sind:
|
||
NUMBER=+49 7531/21103
|
||
NUMBER=753121103
|
||
sind nicht identisch!!!!
|
||
|
||
Beispiele:
|
||
|
||
Eintrag in "callerid.conf":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
ALIAS=MSN\#1
|
||
|
||
Eintrag in "~/.isdn":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
ALIAS=Fred's Number
|
||
|
||
Im obigen Fall wird der zweite Eintrag genommen.
|
||
|
||
Eintrag in "callerid.conf":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
SI=7
|
||
ALIAS=Internet
|
||
|
||
Eintrag in "~/.isdn":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
SI=6
|
||
ALIAS=Fred's Number
|
||
|
||
Im obigen Fall werden beide Eintrage uebernommen. Wenn nun eine Datenverbindung
|
||
auf der 753121103 stattfindet, dann wird "Internet" angezeigt, wenn jemand z.B.
|
||
eine Video-Konfernzschaltung oder einen normalen Telefonanruf taetigt, dann
|
||
wird "Fred's Number" angezeigt. Dieses gilt natuerlich nur beim isdnrep
|
||
und isdnconf.
|
||
|
||
Eintrag in "callerid.conf":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
SI=7
|
||
ALIAS=MSN\#1
|
||
|
||
Eintrag in "~/.isdn":
|
||
[NUMBER]
|
||
NUMBER=753121103
|
||
ALIAS=Fred's Number
|
||
|
||
Im obigen Fall gilt das gleiche wie beim vorherigen Beispiel.
|
||
|
||
Jede Sektion (Nummer) kann eine Dienstekennung enthalten. Dieses wird durch
|
||
einen Eintrag in der Form
|
||
|
||
SI=4 # Video
|
||
|
||
realisiert.
|
||
|
||
isdnlog unterscheidet rein- und rausgehende Verbindungen nach der
|
||
MSN (Telefonnummer), sowie dem Service Indicator ("Dienstkennung").
|
||
|
||
Z.Zt. kennt isdnlog folgende Dienstkennungen:
|
||
|
||
1 = Speech (Telefon, Fax G3, Modem etc.)
|
||
2 = Restricted digital information
|
||
3 = Unrestricted digital information
|
||
with tones/announcements
|
||
4 = Video
|
||
7 = Unrestricted digital information (HDLC, X.75 etc.)
|
||
|
||
Bei jedem Verbindungsaufbau sucht isdnlog aus der "isdn.conf" den
|
||
Eintrag, bei dem sowohl die MSN, als auch der SI uebereinstimmen.
|
||
|
||
Wird solch ein Eintrag nicht gefunden, nimmt isdnlog den _ersten_ Eintrag
|
||
mit der passenden MSN.
|
||
|
||
Ein eindeutiger Key fuer eine Nummer ist nun die Telefonnummer selber und die
|
||
Dienstkennung. Es kann also eine Nummer mehrfach erscheinen mit jeweils
|
||
einer anderen Dienstkennung. Wird in der Sektion fuer eine Nummer kein
|
||
Eintrag fuer die Dienstkennung angegeben (keine Zeile SI=x), wird die Kennung
|
||
"0" angenommen. Das bedeutet alle Dienste werden ueber diese Sektion erkannt.
|
||
Es gibt also fuer eine Nummer nur einen einzigen Eintrag.
|
||
|
||
Zum Verstaendnis:
|
||
|
||
Nehmen wir mal eine eigne MSN (das funktioniert auch fuer fremde Nummern!).
|
||
Dort kann man mit einer MSN eine ISDN-Verbindung mit LINUX unterhalten und
|
||
parallel diese MSN zum Telefonieren verwenden. Obwohl die gleiche Nummer
|
||
dort verwendet wird, reagiert z.B. das Telefon nicht (es klingelt nicht!),
|
||
wenn ein Teilnehmer sich mit einem PC an dieser Nummer anwaehlt.
|
||
Beispiel:
|
||
|
||
Auf der MSN 4711 lauscht sowohl die Teles-Karte auf X.75 Anrufe, als auch
|
||
ein Analoges Telefon ueber eine Telefonanlage.
|
||
|
||
Hier wuerden folgende Eintraege in der "callerid.conf" passen:
|
||
|
||
[MSN]
|
||
NUMBER = 4711
|
||
SI = 1 # Das normale Telefon
|
||
ALIAS = Phone
|
||
START = {
|
||
[FLAG]
|
||
FLAGS = I|O|R|A # alternativ geht auch FLAGS=IORA
|
||
PROGRAM = auplay ring.au
|
||
}
|
||
|
||
[MSN]
|
||
NUMBER = 4711
|
||
SI = 7 # Der Linux-Rechner
|
||
ALIAS = X.75
|
||
START = {
|
||
[FLAG]
|
||
FLAGS = I|O|R|A # alternativ geht auch FLAGS=IORA
|
||
PROGRAM = auplay computer.au
|
||
}
|
||
|
||
Die genaue Syntax wird weiter unten beschrieben.
|
||
|
||
Ruft nun jemand die 4711 mit einem Telefon an, wird das als Anruf auf
|
||
"Phone" angezeigt, und mit "auplay" das Soundfile "ring.au" abgespielt.
|
||
|
||
Waehlt jemand hingehen die 4711 mit einer Teles-Karte an, wird das als
|
||
"X.75" angezeigt, und mit "auplay" das Soundfile "computer.au" abgespielt.
|
||
|
||
Startet hingegen jemand eine Video-Uebertragung auf die 4711, wird auch
|
||
dies als "Phone" angezeigt, da in obigem Beispiel die Dienstkennung "4"
|
||
nicht gesondert definiert wurde.
|
||
|
||
|
||
Es gibt zwei verschienden Sektionen in diesen Dateien:
|
||
|
||
[MSN]
|
||
[NUMBER]
|
||
|
||
Die Eintraege in den einzelnen Sektionen sind gleich. Es koennen beliebig viele
|
||
von den einzelnen Sektionen (MSN,NUMBER) existieren. Im Gegensatz zu frueheren
|
||
Versionen des isdnlog's muss nun nicht mehr die Anzahl der eigenen MSN angegeben
|
||
werden (MYMSNS entfaellt).
|
||
|
||
|
||
Alle Eintraege in einer Sektion koennen in einer beliebigen Reihenfolge
|
||
folgen. Das gleiche gilt fuer die Sektionen innerhalb einer Datei.
|
||
|
||
Im folgenden werden nun die einzelnen Eintraege unter den Sektionen MSN
|
||
und NUMBER erwaehnt:
|
||
|
||
|
||
4.2.1 1. Eintrag: Telefonnummer [NUMBER] und [MSN]
|
||
--------------------------------------------------
|
||
|
||
Hier muss zwischen 1TR6 und DSS1 unterschieden werden:
|
||
|
||
im 1TR6 muss unter [MSN] nur die EAZ eingetragen werden. Unter der Sektion
|
||
[NUMBER] kommt dort die komplette Nummer. Diese Nummer muss _mindestens_
|
||
die Vorwahl enthalten.
|
||
|
||
Im DSS1 ist dieses ziemlich egal. Man kann die Nummern so eintragen, wie man
|
||
sie vom eigenen Telefon waehlen wuerde. Es muss die Voreinstellungen der
|
||
Installation beruecksichtigt werden. Die Werte von AREACODE
|
||
und COUNTRYCODE, wie sie waehrend der Installation eingestellt wurden,
|
||
werden so ueberall uebernommen.
|
||
|
||
Es ist aber empfehlenswert ueberall die Vorwahl mit anzugeben (ist auch bei
|
||
der MSN moeglich). Wenn man z.B. umzieht in eine andere Stadt,
|
||
muss man sonst die gesamte Datei ueberarbeiten. Das entfallt, wenn
|
||
ueberall die Vorwahl angibt.
|
||
|
||
Die Syntax ist jetzt ziemlich frei. Es koennen dort angegeben werden,
|
||
wie man sie ueblicherweise kennt:
|
||
|
||
NUMBER = 4711
|
||
NUMBER = 0815/4711
|
||
NUMBER = 0815/471-0
|
||
NUMBER = +49 815/4711
|
||
NUMBER = +49 815/471*
|
||
NUMBER = +49 815/471?
|
||
NUMBER = +49 815/47[!6]1
|
||
NUMBER = 4711, 4712, +49 815/4713
|
||
|
||
Es werden alle NICHT-Zahlen dort herausgefiltert, bis auf die Wildcards '?',
|
||
'*' und "[]"
|
||
|
||
Ein Plus '+' am Anfang wird durch COUNTRYCODE ersetzt.
|
||
|
||
Alle Telefonnummern koennen die ueblichen Wildcard-Symbole enthalten,
|
||
also "?" matched genau ein Zeichen, "*" matched beliebig viele
|
||
(also auch "keine") Zeichen, und mit "[]" koennen mehrere
|
||
moegliche Zeichen angegeben werden (oder auch eine Range [4-7], oder auch
|
||
die Verneinung, also [!6])
|
||
|
||
Es ist auch moeglich, mehrere Telefonnummern unter einem Eintrag zu setzen.
|
||
Die einzelnen Nummern werden dann durch ein Komma getrennt.
|
||
|
||
4.2.2 2. Eintrag: Alias [ALIAS]
|
||
-------------------------------
|
||
|
||
In diesem Entrag steht eine beliebige Symbolische Beschreibung fuer
|
||
diese Nummer ("Mausi", "EUnet" usw.). Diese darf Blanks enthalten!
|
||
Wenn hier das Zeichen '#' verwendet werden soll, muss dieses gequotet
|
||
werden mit "\#".
|
||
|
||
ALIAS = MSN #1
|
||
ist falsch, dieses fuehrt zu dem Ergebnis:
|
||
ALIAS = MSN
|
||
|
||
Richtig waere:
|
||
|
||
ALIAS = MSN \#1
|
||
|
||
Auch ein Eintrag
|
||
|
||
ALIAS = Helmut Kohl
|
||
|
||
ist erlaubt. Allerdings unterscheidet sich dieser von
|
||
|
||
ALIAS = helmut kohl
|
||
|
||
|
||
4.2.3 3. Eintrag: Tarifzone
|
||
---------------------------
|
||
|
||
Ein weiterer Eintrag ist die Tarifzone, in der sich von uns aus gesehen
|
||
diese Nummer befindet:
|
||
|
||
0 = Verbindung am internen S0-Bus
|
||
1 = City (bis 31.12.1995 "Ortszone/Nahzone", bis 20 km)
|
||
2 = Region 50 (bis 31.12.1995 "Regionalzone", bis 50 km)
|
||
3 = Region 200 (bis 31.12.1995 "Weitzone", dann bis 200 km)
|
||
4 = Fernzone (bis 31.12.1995 "Weitzone", dann alles ueber 200 km)
|
||
5 = Vis-'a-vis 1
|
||
|
||
Dieser Eintrag wird wie folgt dargestellt:
|
||
|
||
ZONE = 1
|
||
|
||
oder
|
||
|
||
ZONE = 5
|
||
|
||
4.2.4 4. Eintrag: IP-Interface
|
||
------------------------------
|
||
|
||
Dieser Eintrag repraesentiert das IP-Interface, welches auf dieser
|
||
Nummer konfiguriert wurde, oder ein "-", falls dieser Nummer kein
|
||
IP-Interface zugeordnet wurde.
|
||
Diese Information wird fuer die "-hx" huptimeout Option benoetigt.
|
||
|
||
Beispiel:
|
||
|
||
INTERFACE=ippp0
|
||
|
||
4.2.5 5. Eintrag: Info-Args
|
||
---------------------------
|
||
|
||
Hier besteht unter der Sektion [NUMBER] und [MSN] eine Untersektion. Diese
|
||
ist allerdings optional. Diese Informationen werden vom isdnlog nur ausgewertet,
|
||
wenn die Option -S gesetzt wurde.
|
||
Die Untersektion traegt den Namen START.
|
||
|
||
Es koennen mehrere Programme pro Nummer angegeben werden, zum Beispiel fuer
|
||
jedes Event. Hier folgt nun ein Beispiel. Die Erklaerung folgt anschliessend:
|
||
|
||
[MSN]
|
||
NUMBER = 4711
|
||
SI = 1 # Das normale Telefon
|
||
ALIAS = Phone
|
||
ZONE = 1
|
||
START = { # Beginn der Untersektionen
|
||
# Die geschweifte Klammer muss in der gleichen
|
||
# Zeile stehen, wie "START =" !!!!
|
||
[FLAG]
|
||
FLAGS = I|O|R # alternativ geht auch FLAGS=IORA
|
||
PROGRAM = auplay ring.au
|
||
|
||
[FLAG]
|
||
FLAGS = A
|
||
PROGRAM = auplay pay.au
|
||
} # Ende der Untersektionen
|
||
|
||
|
||
Hier werden jetzt alle anderen Spalten wie Flags, Time und Info-Arg vereinigt.
|
||
|
||
Jeder Programmstart fuer ein Event wird mit der (Unter-)Sektion [FLAG]
|
||
eingeleitet.
|
||
|
||
Unter dieser Sektion sind nun verschiedene Eintraege zu finden. Die folgende
|
||
Reihenfolge muss allerdings innerhalb der Sektion nicht eingehalten werden:
|
||
|
||
Eintrag Flags:
|
||
--------------
|
||
|
||
Hier wird angegeben, bei welchem Event das Info-Programm gestartet werden
|
||
soll. Es koennen eine beliebige Menge aus folgenden Flag-Gruppen angegeben
|
||
werden:
|
||
|
||
Gruppe 1:
|
||
|
||
I = Programme werden nur gestartet, wenn es ein eingehendes Gespraech ist
|
||
O = Programme werden nur gestartet, wenn es ein ausgehendes Gespraech ist
|
||
|
||
Gruppe 2:
|
||
|
||
C = Bei CONNECT Programm starten (Intervall-faehig)
|
||
B = Programm starten, wenn der Teilnehmer besetzt ist (Busy)
|
||
E = Programm starten, wenn ein Fehler von der VSt uebermittelt wurde
|
||
R = Bei RING Programm starten (Intervall-faehig)
|
||
A = Bei AOCD ("Gebuehrenimpuls") Programm starten
|
||
H = Bei Verbindungsende Programm starten
|
||
|
||
Gruppe 3:
|
||
|
||
Die folgenden Flags haben nur Bedeutung fuer die Flags "C" und "R" aus
|
||
Gruppe 2. Es sollte immer nur _ein_ Argument von dieser Gruppe je Info-Arg
|
||
verwendet werden:
|
||
|
||
L = Es wird waehrend dieses Zeitraum ein Programm immer wieder gestartet,
|
||
wenn sich das vorherige beendet hat.
|
||
Es macht dann keinen Sinn noch zusaetzlich ein Intervall einzuschalten,
|
||
da "L" Vorrang hat.
|
||
|
||
U = Es darf waehrend eines Intervalls nur ein Programm gestartet werden.
|
||
Wenn ein Intervall erreicht wurde, und das letzte Programm noch laeuft,
|
||
dann wird das naechste nicht gestartet, sondern wartet, bis sich der
|
||
Vorgaenger Beendet hat.
|
||
Wenn das Flag nicht gesetzt ist, dann koennen mehrere Programme
|
||
gleichzeitig laufen, da dann beim erreichen eines Intervalls
|
||
ein neues gestartet wird, unabhaengig davon, ob das vorherige noch
|
||
laeuft. Es wird das Argument Intervall benoetigt!
|
||
|
||
K = Wenn ein Intervall angegeben ist, und das Intervall beendet ist, soll
|
||
das vorherige Programm beendet werden. Sonst ist es moeglich, das
|
||
mehrere Programme gleichzeitig laufen. Es wird das Argument Intervall
|
||
benoetigt!
|
||
|
||
Es macht also keinen Sinn "U" und "K" gleichzeitig einzuschalten, da beide
|
||
nur ein Programm erlauben. Der einzige Unterschied zwischen "K" und "U" ist,
|
||
dass bei "U" gewartet wird, bis sich das Programm beendet, waehrend "K" beim
|
||
Ende des Intervalls das laufende Programm "mit Gewalt" beendet.
|
||
|
||
Damit ein Programm ueberhaupt gestartet werden kann, muessen Flags
|
||
aus Gruppe 1 _und_ Gruppe 2 angegeben werden. Gruppe 3 ist Optional.
|
||
|
||
|
||
Die Events "B", "E", "A" und "H" beschreiben Zeitpunkte in der Verbindung,
|
||
waehrend "R" und "C" Zeitabschnitte beschreiben. Daher koennen fuer
|
||
Zeitpunkte auch keine Intervalle angegeben werden, da dieses nur Ereignisse
|
||
sind.
|
||
|
||
Eine Verbindung oder ein Verbindungsversuch kann folgenden Ablauf haben:
|
||
(Die Buchstaben entsprechen den Flags unter Gruppe 2)
|
||
|
||
Beim ausgehenden Gespraech ueber die ISDN-Karte
|
||
|
||
1.
|
||
|
||
| RING | CONNECT |
|
||
----------A-----A-----A-----A-----A------A------A------H
|
||
|
||
2.
|
||
|
||
| RING | CONNECT |
|
||
----------A-----A-----A-----A-----A------A------EH
|
||
|
||
3.
|
||
|
||
| RING |
|
||
----------BH
|
||
|
||
4.
|
||
|
||
| RING |
|
||
----------EH
|
||
|
||
Bei ausgehenden Rufen ueber Telefon/Fax...:
|
||
Dort wird _kein_ "RING" uebermittelt. Es gibt also niemals einen Zustand "OR".
|
||
|
||
1.
|
||
|
||
| CONNECT |
|
||
A-----A-----A-----A-----A------A------A------H
|
||
|
||
2.
|
||
|
||
| CONNECT |
|
||
A-----A-----A-----A-----A------A------EH
|
||
|
||
3.
|
||
|
||
BH
|
||
|
||
4.
|
||
|
||
EH
|
||
|
||
Bei reinkommenden Gespraechen:
|
||
Bei der ISDN-Karte ist die "Ring-Phase" extrem kurz, so dass es passieren
|
||
kann, dass isdnlog darauf nicht reagiert.
|
||
|
||
1.
|
||
|
||
| RING | CONNECT |
|
||
--------------------------H
|
||
|
||
2.
|
||
|
||
| RING | CONNECT |
|
||
-------------------------EH
|
||
|
||
3.
|
||
|
||
| RING |
|
||
-------H
|
||
|
||
In der Zeile koennen die einzelnen Events entweder als ein "Wort" geschrieben
|
||
werden oder aber durch das Zeichen "|" getrennt werden:
|
||
|
||
FLAGS = IORA
|
||
|
||
oder
|
||
|
||
FLAGS = I|O|R|A
|
||
|
||
Wobei die zweite Schreibweise wesentlich uebersichtlicher ist.
|
||
|
||
|
||
User
|
||
----
|
||
|
||
Wenn ein Programm gestartet wird, kann die User-ID umgestellt werden. Dieses
|
||
ist sogar notwendig, wenn der Benutzer (nicht noetig fuer den Bernutzer root !!)
|
||
die Rechte an der Datei besitzt. isdnlog verbietet es seit der Version 3.0,
|
||
dass das Programm als normaler Benutzer gestartet wird. Ebenso wird es
|
||
unterbunden ein Programm zu starten, wo ein Benutzer Leserechte besitzt
|
||
und dieses als root gestartet wird. Dieses koennte sich als trojanisches Pferd
|
||
verwenden lassen. Daher muessen Programme, die nicht root gehoeren oder
|
||
die jeder (others) beschreiben kann mit dem Eintrag USER belegt werden.
|
||
Der Eintrag hat folgende Syntax:
|
||
|
||
USER=fred
|
||
|
||
oder
|
||
|
||
USER=103
|
||
|
||
Es kann also entweder der Benutzername oder die Benutzer-ID verwendet werden.
|
||
|
||
Group
|
||
-----
|
||
|
||
Dieser Eintrag verhaelt sich analog zu dem Eintrag USER. Auch hier gilt wieder
|
||
die Systemsicherheit. Die Syntax ist wie folgt:
|
||
|
||
GROUP=freaks
|
||
|
||
oder
|
||
|
||
GROUP=201
|
||
|
||
Es kann also entweder der Gruppenname oder die Gruppen-ID verwendet werden.
|
||
|
||
Time
|
||
----
|
||
|
||
In Time kann eine Zeitzone angegeben werden, in der das Info-Programm
|
||
gestartet werden darf:
|
||
* = immer
|
||
9 = zwischen 9:00:00 Uhr und 9:59:59 Uhr
|
||
8-22 = zwischen 8:00:00 Uhr morgen's und 21:59:59 Uhr abend's
|
||
22-8 = zwischen 22:00:00 Uhr abend's und 7:59:59 Uhr morgen's
|
||
8-16,18-22 = von 8:00:00 .. 15:59:59 Uhr, und von 18:00:00 .. 21:59:59 Uhr
|
||
15-15 = immer (gleichbedeutend mit "*")
|
||
|
||
ACHTUNG: Aenderung in der Syntax:
|
||
Die Zeitangaben duerfen _nur_ mit ',' voneinander getrennt sein.
|
||
|
||
Also kein ';' mehr als Separator verwenden!
|
||
|
||
Beispiel: 8-12,14,16,18-20
|
||
8,9,10,11-14
|
||
|
||
Wenn Time ueberhaupt nicht angegeben wird, dann bedeutet dieses "immer".
|
||
|
||
Beispiele:
|
||
|
||
...
|
||
START={
|
||
[FLAG]
|
||
FLAGS = IOR
|
||
PROGRAM = /usr/bin/auplay ring.au
|
||
|
||
FLAGS = IORK
|
||
PROGRAM = /usr/bin/auplay ring.au
|
||
INTERVAL= 5
|
||
}
|
||
...
|
||
|
||
Intervall
|
||
---------
|
||
|
||
Fuer die Flags 'C' und 'R' besteht die Moeglichkeit, ein Programm in
|
||
gewissen Abstaenden zu starten. Das Intervall ist eine Zahl, die in
|
||
Sekunden die Zeit angibt, die zwischen zwei Programmstarts liegt.
|
||
Wenn das Flag 'K' gesetzt ist und ein neues Programm gestartet wird,
|
||
dann wird der "Vorgaenger" automatisch beendet.
|
||
|
||
Wenn bei Ereignissen (Flags 'BAEH') ein Intervall angegeben wird, so wird
|
||
dieses ignoriert.
|
||
|
||
Das Intervall sollte mindestens auf 2 sec. stehen, da isdnlog es sonst
|
||
nicht schafft, die beendeten Prozesse zu "beerdigen".
|
||
So entstehen also Zombies.
|
||
Der Sekunden-Intervall sollte also hoechstens fuer das Ring-Event benutzt
|
||
werden.
|
||
Groessere Intervalle stellen kein Problem dar.
|
||
|
||
|
||
Das zu startende Programm
|
||
-------------------------
|
||
|
||
Hier wird das Info-Argument angegeben. Es steht dort der gesamte zu
|
||
startende Befehl
|
||
|
||
Es gibt aber drei zusaetzliche Variablen, die verwendet werden duerfen:
|
||
|
||
\$1 : Sind die Flags, die den Programmstart ausgeloest haben.
|
||
z.B. "IR", "OC", "IH"
|
||
Zuerst kommt die Gespraechs-Direktive und dann der Zustand
|
||
der Verbindung. Es kommen immer _genau_ zwei Zeichen.
|
||
\$2 : Gibt als String die Telefonnummer (mit Vorwahl) des Anrufenden an.
|
||
\$3 : Gibt als String die Telefonnummer (mit Vorwahl) des Angerufenden an.
|
||
|
||
Es ist zu beachten, dass hier das Zeichen "$" gequotet werden muss,
|
||
da dieses sonst zu einem Warning fuehrt!
|
||
|
||
Wenn bei "\$2" und "\$3" die Telefonnummer nicht bekannt ist, dann wird dort
|
||
ein "?" eingesetzt.
|
||
|
||
Folgende Punkte sind zu beachten:
|
||
|
||
- Diese Variablen koennen auch innerhalb eines Argumentes stehen.
|
||
- Wenn diese Variablen innerhalb eines Strings verwendet werden, muss der
|
||
Name (hier z.B. "1", "2") in geschweiften Klammern gesetzt werden.
|
||
- Es koennen wie auf der Shell die Hochkommata verwendet werden, um Argumente
|
||
zu kapseln (allderings nur die Hochkommata!). Wenn das Hochkomma im
|
||
Argument erscheinen soll, muss es gequotet werden.
|
||
|
||
Beispiele:
|
||
|
||
PROGRAM=/bin/auplay "Arg 1" "Arg 2" Arg3 "Arg\"4"
|
||
PROGRAM=/bin/auplay "Hier kommt der Anrufer:\${2}test"
|
||
PROGRAM=/bin/auplay "Der folgende Ausdruck wird nicht ausgewertet: \\$3"
|
||
|
||
Eine (zwei) Section [NUMBER] (oder [MSN]) kann also wie folgt aussehen:
|
||
|
||
[MSN]
|
||
NUMBER = 4711
|
||
ALIAS = Phone
|
||
ZONE = 1
|
||
START={
|
||
[FLAG]
|
||
FLAGS = IORK
|
||
PROGRAM = /bin/auplay /sounds/ring.au
|
||
INTERVAL= 1
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = OA
|
||
PROGRAM = /bin/auplay /sounds/money.au
|
||
TIME = 8-14,16-22
|
||
}
|
||
|
||
[NUMBER]
|
||
NUMBER = 0815/1234
|
||
ALIAS = Provider
|
||
ZONE = 2
|
||
START={
|
||
|
||
[FLAG]
|
||
FLAGS = IOCK
|
||
PROGRAM = /bin/popclient_script \$3
|
||
INTERVAL= 300
|
||
}
|
||
|
||
Angenommen 4711 ist die MSN meines Telefons, dann wird beim Rauswaehlen
|
||
erst immer "/bin/auplay /sounds/ring.au" abgespielt. Auch wenn das Telefon
|
||
klingelt, wird "/bin/auplay /sounds/ring.au" ausgefuehrt. Dieser Vorgang
|
||
wird jede Sekunde wiederholt.
|
||
Wenn rausgewaehlt wurde, dann erhaelt man bei jedem Gebuehrenimpuls
|
||
den Sound "/sounds/money.au".
|
||
Diese Sounds werden nur von 8Uhr bis 14Uhr und 16Uhr bis 22Uhr gespielt.
|
||
|
||
Wenn man zum "Provider" verbunden ist, dann werden alle 5 Minuten Mails
|
||
geholt. Da hier keine Zeitangabe gemacht wurde, wird das Script zu
|
||
jeder Zeit ausgefuehrt. Das Script bekommt als Parameter "0815/1234", wenn
|
||
man "Provider" angerufen hat, und wenn "Provider" einen anruft, seine
|
||
eigene MSN.
|
||
|
||
Wie unter "START=" beschrieben wurde, ist hier noch mal ein Beispiel
|
||
zu finden:
|
||
|
||
...
|
||
[VARIABLES]
|
||
CMD1=/bin/auplay
|
||
CMD2=/bin/my_prog
|
||
DIR = /sounds/
|
||
|
||
START={
|
||
[FLAG]
|
||
FLAGS = I|O|R|K
|
||
PROGRAM = $CMD1 ${DIR}ring.au
|
||
INTERVAL= 1
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = O|A
|
||
PROGRAM = $CMD1 ${DIR}money.au
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = I|O|C
|
||
PROGRAM = $CMD2 \$1 \$2 \$3
|
||
TIME = 8-14,16-22
|
||
}
|
||
|
||
Die letzte Sektion wird also wie folgt expandiert als Kommando, wenn ich
|
||
jemanden anrufe mit der Nummer 0815 (Meine MSN 040/1234):
|
||
"/bin/auplay OC 0401234 0815"
|
||
|
||
--------------^^
|
||
Ausgehendes Gspraech (O), Ereignis CONNECT (C)
|
||
-----------------^^^^^^^
|
||
Nummer des Anrufenden (also Meine)
|
||
Nummer des Angerufenden
|
||
|
||
Die Variablen von isdnlog ($1, $2, ..) kann man ebenfalls in geschweiften
|
||
Klammern setzen. Also auch nicht anhaengen.
|
||
|
||
Wenn eine unbekannte Variable verlangt wird (meistens wohl Tipp-Fehler;-)),
|
||
dann wird die mit einem "?" ersetzt, damit wenigstens die Parameterzahl
|
||
stimmt.
|
||
|
||
Wenn als Parameter ein "@" gefolgt von einem Dateinamen erschein, so wird
|
||
die erste Zeile der Datei als Parameter an die Datei uebergeben. Allerdings
|
||
darf der Name nicht aus einer Variablen bestehen, da die Variable nicht am
|
||
Anfang stehen kann, denn da steht ja schon "@" ;-)
|
||
|
||
Beispiel:
|
||
|
||
/tmp/data beinhaltet "Das ist ein test"
|
||
|
||
Der Aufruf
|
||
/bin/script @/tmp/data
|
||
fuehrt zu
|
||
/bin script "Das ist ein test"
|
||
|
||
Die gesamte erste Zeile wird als _ein_ Parameter uebergeben, auch wenn dort
|
||
Blanks oder Tabulatoren enthalten sind. Das abschliessende "\n" wird entfernt.
|
||
|
||
Beim Start der Programme ist immer darauf zu achten, dass diese sich selber
|
||
beenden, da der isdnlog nur in gewissen Ausnahmen Programme beendet.
|
||
Ausnahme ist, wenn ein RING-Zustand oder CONNECT-Zustand beendet wird. Dann
|
||
beendet der isdnlog die laufenden Programme.
|
||
|
||
ACHTUNG: Bei eigenen MSN's, auf die kein eigenes Geraet reagiert
|
||
(also "unbenutzt" sind), duerfen keine Info-Argumente angegeben
|
||
werden, da bei solchen MSN's isdnlog vitale Informationen zur
|
||
korrekten Ansteuerung fehlen!
|
||
|
||
|
||
4.2.6 Konkretes Beispiel fuer die "-S" Option
|
||
----------------------------------------------
|
||
|
||
[GLOBAL]
|
||
AREACODE = 0815
|
||
COUNTRYCODE = 49
|
||
|
||
[VARIABLES]
|
||
PLAYER = /usr/bin/auplay
|
||
SOUNDS = /usr/sounds
|
||
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = O R L
|
||
PROGRAM = $PLAYER ${SOUNDS}/unknown_ring.au
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = IOA
|
||
PROGRAM = $PLAYER ${SOUNDS}/pay.au
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = IOC U
|
||
PROGRAM = /usr/bin/who_is_it $2 $3
|
||
|
||
[FLAG]
|
||
FLAGS = IOH
|
||
PROGRAM = $PLAYER ${SOUNDS}/hangup.au
|
||
TIME = 8-14,16-22
|
||
|
||
[FLAG]
|
||
FLAGS = IORAH
|
||
PROGRAM = $PLAYER ${SOUNDS}/silent.au
|
||
TIME = 14-16,22-8
|
||
}
|
||
|
||
[MSN]
|
||
NUMBER = 4711
|
||
ALIAS = MSN\#1
|
||
ZONE = 1
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = I RK
|
||
PROGRAM = $PLAYER ${SOUNDS}/msn1_ring.au
|
||
INTERVAL = 5
|
||
TIME = 8-14,16-22
|
||
}
|
||
|
||
[MSN]
|
||
NUMBER = 4712
|
||
ALIAS = MSN\#2
|
||
ZONE = 1
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = I RK
|
||
PROGRAM = $PLAYER ${SOUNDS}/msn2_ring.au
|
||
INTERVAL = 5
|
||
TIME = 8-14,16-22
|
||
}
|
||
|
||
[MSN]
|
||
NUMBER = 4713
|
||
ALIAS = MSN\#3
|
||
ZONE = 1
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = I RK
|
||
PROGRAM = $PLAYER ${SOUNDS}/msn3_ring.au
|
||
INTERVAL = 5
|
||
TIME = 8-14,16-22
|
||
}
|
||
|
||
[NUMBER]
|
||
NUMBER = *40441777
|
||
ALIAS = My_Provider
|
||
ZONE = 4
|
||
INTERFACE= isdn0
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = OIR
|
||
PROGRAM = $PLAYER ${SOUNDS}/provider_ring.au
|
||
|
||
[FLAG]
|
||
FLAGS = OICU
|
||
PROGRAM = /usr/bin/get.mails.from.provider
|
||
INTERVAL = 300
|
||
|
||
[FLAG]
|
||
FLAGS = OICU
|
||
PROGRAM = /usr/bin/get.news.from.provider
|
||
INTERVAL = 1800
|
||
}
|
||
|
||
|
||
Erklaerung zum Beispiel:
|
||
|
||
Wenn man "My_Provider" anwaehlt, dann erklingt einmal der Sound
|
||
"provider_ring.au". Wenn die Verbindung zu stande gekommen ist, dann wird
|
||
sofort "/usr/bin/get.mails.from.provider" und "/usr/bin/get.news.from.provider"
|
||
gestartet. Das Programm "mails.from.provider" wird dann alle 5 Minuten wieder
|
||
gstartet. Das Programm "get.news.from.provider" wird alle 30 Minuten gestartet.
|
||
Wenn eines Programm mal laenger als 5 bzw. 30 Minuten laeuft,
|
||
wird der naechste Start so lange verschoben, bis sich das laufende beendet.
|
||
Das wird durch "U" ausgedrueckt. Wenn die Verbindung zu "My_Provider" beendet
|
||
wird, dann werden automatisch evtl. noch laufende Programme beendet (gekillt).
|
||
Jedes mal wenn eine Einheit von der VSt gemeldet wird, wird ein Sound gespielt.
|
||
Wenn ich von "MSN#1" anrufe, dann "msn1_pay.au". Von "MSN#2" und "MSN#3" wird
|
||
der Default-Sound "pay.au" gespielt. Alle "normalen" Sounds werden aber nur
|
||
von 8 Uhr bis 14 Uhr und von 16 Uhr bis 22 Uhr gespielt. In der uebrigen
|
||
Zeit laeuft fuer alle Ring's, AOCD und Hangup's der Sound "silent.au".
|
||
Die Zeit wird hier mit "von" - "bis" angegeben.
|
||
|
||
Wenn sonstige Verbindungen zustande kommen, wird das Programm
|
||
"/usr/bin/who_is_it" gestartet. Dem wird noch als Parameter die Telefonnummern
|
||
vom Anrufer und Angerufenen mitgeteilt. Das wird aber nur gestartet, wenn sonst
|
||
kein Programm existiert, das fuer diese Verbindung bei einem Connect laufen
|
||
soll. Das Programm wird nur einmal gestartet, direkt wenn die Verbindung zu
|
||
stande kommt.
|
||
|
||
Wenn ein Ruf ankommt, dann wird je nach MSN ein eigener Sound gespielt. Der
|
||
Sound wird alle 5 Sek. wieder gespielt. Sollte der Sound laenger als 5 Sek.
|
||
laufen, so wird er gekillt und der naechste gestartet (K). Der "Ring-Sound"
|
||
wird auch nur zu den angegebenen Zeiten gespielt. Ansonsten wird wieder
|
||
"silent.au" gespielt.
|
||
|
||
Wenn man von der ISDN-Karte rauswaehlt und nicht "My_Provider" anwaehlt,
|
||
dann wird der Sound "unknown_ring.au" gespielt (Achtung: Wieder Zeit beachten).
|
||
Der wird solange in einer Schleife gespielt (L), bis eine Verbindung zu stande
|
||
kommt. So wie "/usr/bin/auplay" beendet ist, wird es wieder neu gestartet.
|
||
Die Flags "OR" haben allerdings keine Bedeutung fuer andere Geraete am S0-Bus,
|
||
da die ISDN-Karte die Ring-Phase von anderen Geraeten am Bus nicht mitbekommt.
|
||
|
||
Kommentare in den Konfigurationsdateien isdn.conf, callerid.conf und ~/.isdn:
|
||
-----------------------------------------------------------------------------
|
||
|
||
Es koennen koennen Kommentare an beliebiger Stelle beginnend mit de Zeichen
|
||
'#' eingefuegt werden (siehe lib/README.Syntax.conffile).
|
||
Diese Kommentare haben den Nachteil, dass sie verschwinden, wenn die Datei
|
||
z.B. vom isdnconf (oder auch vom isdnlog selber) neu geschrieben werden.
|
||
Als Alternative gibt es dort die Moeglichkeit in den Sektionen einfach
|
||
Dummy-Eintraege zu setzen. Diese sind Eintraege, die von isdnlog nicht
|
||
ausgewertet werden, aber trotzdem eingelesen werden und auch wieder geschrieben
|
||
werden.
|
||
|
||
Beispiel
|
||
|
||
[isdnlog]
|
||
comment1 = Pro Tag duerfen max. 100 DM fuer Datenverbindungen ausgegeben \
|
||
werden.
|
||
CHARGEMAX = 100.00
|
||
comment2 = Das Logfile liegt unter /var/log/isdn.log
|
||
logfile = /var/log/isdn.log
|
||
|
||
|
||
Die beiden Eintraege "comment1" und "comment2" bleiben erhalten. auch die
|
||
Reihenfolge bleibt bestehen. Es ist nur darauf zu achten, dass kein
|
||
Eintrag den selben Namen hat. Also zweimal die Zeile "comment" geht nicht.
|
||
Dann wird die erste Zeile durch die zweite ersetzt. Es ist auch darauf zu
|
||
achten, dass der Name des Eintrages nicht schon von isdnlog verwendet wird.
|
||
Also ein Kommentar mit "SI" zu benennen schlaegt fehlt, da dieser Name
|
||
schon reserviert ist.
|
||
|
||
|
||
|
||
5. Die Konfigurationsdatei "isdnlog.users"
|
||
------------------------------------------
|
||
|
||
Die Datei wird nur benoetigt, wenn isdnlog mit der Option -xX gestartet werden
|
||
soll. Andernfalls braucht diese Datei auch nicht angelegt werden.
|
||
|
||
Wird isdnlog mit -xX gestartet, ohne dass diese Datei existiert, wird eine
|
||
Defaultdatei angelegt, die _unbedingt_ editiert werden sollte. Es erscheint
|
||
dann auch eine entsprechende Warnung.
|
||
|
||
Die Konfigurationsdatei wird im Verzeichnis "/etc/isdn" erwartet, und
|
||
enthaelt fuer isdnlog die Informationen ueber Zugriffsberechtigungen von
|
||
Benutzern via Client.
|
||
|
||
Leere Zeilen werden ignoriert. Wenn in einer Zeile ein "#" enthalten ist,
|
||
wird der Rest der Zeile als Kommentar gewertet.
|
||
|
||
Steht am Ende einer Nicht-Kommentarzeile ein "\", so wird die Zeile mit der
|
||
naechste Zeile zu einer "verschmolzen". ACHTUNG: Das Zeichen "\" muss als
|
||
letztes Zeichen stehen, und darf nicht von Tab's oder Leerzeichen gefolgt
|
||
werden.
|
||
|
||
Zur Zeit sind folgende Zeichen als Sonderzeichen anzusehen: "$@#,;\".
|
||
Diese Sonderzeichen muessen gequotet werden, wenn diese in der
|
||
Datei "isdnlog.users" verwendet werden sollen.
|
||
|
||
|
||
5.1 Aufbau
|
||
----------
|
||
|
||
Der Aufbau ist aehnlich, wie die Benutzerdatei von xcept, aber um einige
|
||
Eigenschaften erweitert.
|
||
|
||
Jedem Benutzer werden Rechte mitgegeben. Diese Rechte stehen direkt hinter
|
||
dem Namen, getrennt durch Leerzeichen oder Tab's.
|
||
|
||
Die Rechte beschreiben, welche Informationen der Benutzer vom isdnlog
|
||
beziehen kann, oder welche Einstellungen er am isdn4linux vornehmen kann:
|
||
|
||
ALL
|
||
Es werden komplett alle (folgenden) Rechte vergeben.
|
||
Sinnvoll fuer "root"
|
||
|
||
MSN=msn[,msn...]
|
||
Es werden nur Informationen zu den angegeben MSN's angezeigt.
|
||
Das bezieht sich auf ankommende sowie abgehende Gespraeche,
|
||
sowie auf die Protokoll-Daten.
|
||
|
||
Es koennen beliebig viele MSN's angegeben werden. Auch die Verwendung
|
||
von Wildcards, wie bei den Nummern von der Datei "isdn.conf", ist
|
||
erlaubt. Mit "MSN=*" werden alle MSN's abgedeckt.
|
||
|
||
Das Flag MSN funktionert nur bei reinkommenden (von ISDN-Anschluessen)
|
||
Gespraechen und den ISDN-Karten (siehe Bemerkung von Gernot Zander weiter
|
||
oben). Alle unbekannten Gegenstellen und rausgehenden Rufe werden nur mit
|
||
"ALL" oder "MSN=*" angezeigt.
|
||
|
||
PROTOCOL
|
||
Es wird ein separates Fenster vom Client zur Verfuegung gestellt,
|
||
wo man alle Informationen vom isdnlog angezeigt bekommt, die mit -xX
|
||
eingestellt worden sind.
|
||
|
||
In Planung/Vorbereitung:
|
||
I4LCONF
|
||
Es besteht die Moeglichkeit, Eigenschaften von isdn4linux von
|
||
dem Client aus einzustellen. Wenn einem Benutzer dies erlaubt werden
|
||
soll (Sinnvoll nur fuer "root"!), dann muss dem Benutzernamen
|
||
dieses Flag folgen.
|
||
|
||
In Planung/Vorbereitung:
|
||
ADDRESSBOOK
|
||
Dem Benutzer mit diesem Recht wird die Moeglichkeit gegeben, sich
|
||
Daten ueber den Anrufer/Angerufenen zu speichern und ein Notizbuch zu
|
||
fuehren (weitere Info's unter xisdn).
|
||
|
||
Wenn mehrere Rechte an einem Benutzer vergeben werden sollen, koennen diese
|
||
mit ";" getrennt hintereinander angegeben werden.
|
||
|
||
Am Anfang der Datei koennen Eintrage stehen, wo jeweils ein Benutzer mit einem
|
||
Hostnamen und seinen Benutzerrechten angegeben wird.
|
||
|
||
fred@vom.jupiter MSN=4711?
|
||
root@host1.at.home ALL
|
||
|
||
Im obigen Beispiel darf sich der Benutzer "fred" nur von dem Host "vom.jupiter"
|
||
mit dem isdnlog verbinden. Analog dazu der Benutzer "root" nur von dem
|
||
Host "host1.at.home".
|
||
|
||
In dem zweiten Abschnitt der Datei koennen Gruppierungen von Benutzern und
|
||
Hostnamen zusammengestellt werden. Ein Abschnitt beginnt mit der Zeile
|
||
|
||
[Mein_Abschnitt]
|
||
|
||
und endet mit dem Beginn des naechsten Abschnittes oder beim Dateiende.
|
||
Beim Abschnittnamen wird nicht zwischen Gross- und Kleinschreibung
|
||
unterschieden.
|
||
In einem Abschnitt besteht eine Zeile entweder aus einem Benutzernamen oder
|
||
einem Hostnamen:
|
||
|
||
heinz MSN=*;PROTCOL
|
||
@host1
|
||
@host2
|
||
otto MSN=47111,47112
|
||
@host3
|
||
|
||
Einem Benutzernamen muessen immer die Rechte folgen, die dem Benutzer zugeordnet
|
||
werden sollen. Dem Hostnamen duerfen keine Rechte zugeordnet werden.
|
||
|
||
Im obigen Beispiel duerfen die Benutzer "heinz" und "otto" von den Hosts
|
||
"host1", "host2" oder "host3" den Client starten.
|
||
|
||
Wenn ueberhaupt keine Rechte vergeben werden sollen, d.h. jeder beliebige
|
||
Benutzer darf von jedem Host zum isdnlog eine Verbindung aufbauen mit allen
|
||
Rechten, dann reicht es in der Datei "isdnlog.users" den folgenden Eintrag
|
||
zu setzen:
|
||
|
||
[world]
|
||
|
||
Beispiele fuer "isdnlog.users" sind im isdnlog-Paket unter dem Verzeichnis
|
||
"./samples" zu finden.
|
||
|
||
Es ist darauf zu achten, dass die angegeben Hostnamen in der Datei /etc/hosts
|
||
zu finden sind. Andernfalls wird der Nameserver nach unbekannten Hostnamen
|
||
befragt, was zu einem unbeabsichtigten Verbindungsaufbau via ppp oder
|
||
ISDN fuehren kann.
|
||
|
||
Die Datei "isdnlog.users" wird _vor_ jedem Verbindungsaufbau zu einem neuen
|
||
Client ueberprueft, ob sie noch aktuell ist, ansonsten wird sie neu eingelesen.
|
||
Dadurch hat man die Moeglichkeit, die Datei zu editieren, ohne anschliessend
|
||
den isdnlog neu zu starten.
|
||
|
||
|
||
6. Das AVON-Verzeichnis
|
||
-----------------------
|
||
|
||
Ein "make install" installiert im isdnlog-Verzeichnis "/etc/isdn"
|
||
eine ASCII-Datei "avon". Diese enthaelt ein Verzeichnis aller
|
||
Vorwahlnummern fuer Deutschland in der Form <Vorwahl> : <Ortsnetzbezeichnung>
|
||
|
||
Beim ersten Start liest isdnlog diese ASCII-Datei ein, und erstellt
|
||
daraus eine ISAM-Datei ("avon.dir" / "avon.pag").
|
||
|
||
Sobald die VSt isdnlog eine Telefonnummer meldet, die noch unbekannt ist
|
||
(d.h. nicht in der "isdn.conf" angegeben ist), sucht isdnlog diese
|
||
Telefonnummer im AVON-Verzeichnis, und zeigt die Telefonnummer in der
|
||
Form: "<Vorwahl> / Rufnummer, Ortsnetz" an.
|
||
|
||
Falls das AVON-Verzeichnis korrigiert oder erweitert wird, muessen danach
|
||
die Dateien "/etc/isdn/avon.dir" sowie "/etc/isdn/avon.pag"
|
||
von Hand geloescht, und isdnlog neu gestartet werden, damit das
|
||
neue Verzeichnis aufgebaut werden kann.
|
||
|
||
Beim Einlesen der ASCII-Datei kann moeglicherweise die Fehlermeldung
|
||
|
||
isdnlog: WARNING: Duplicate Entry ``<Ort2>'' in AVON in Line xx, ignored
|
||
isdnlog: WARNING: Can't be ``<Ort1>'' and ``<Ort2>''!
|
||
|
||
erscheinen. Dies deutet an, das eine Vorwahl zwei mal eingetragen wurde.
|
||
|
||
|
||
7. Betriebsmodi
|
||
---------------
|
||
|
||
isdnlog kennt folgende grundsaetzliche Betriebsmodi:
|
||
|
||
- isdnlog -m1015
|
||
|
||
isdnlog zeigt den gesamten Ablauf jeder Verbindung auf stdout an.
|
||
Dieser Output kann mit der Zusatz-Option "-C <file>" z.b. auf andere
|
||
Linux-Consolen umgelenkt werden ("isdnlog -m1015 -C /dev/tty7" -> 7. Console).
|
||
|
||
- isdnlog -S
|
||
|
||
isdnlog startet bei diversen Event's die gesamte 5. Spalte der
|
||
"isdn.conf" als externes Programm.
|
||
|
||
Jedoch wird das angegebene Programm nur dann gestartet, wenn folgende
|
||
Bedingungen erfuellt sind:
|
||
|
||
1. Die Telefonnummer entspricht dem Eintrag in der "isdn.conf"
|
||
|
||
2. Der Service-Indicator entspricht dem Eintrag in der "isdn.conf"
|
||
|
||
3. Man selbst ruft diese Nummer an, und das Flag ist
|
||
"O" fuer OUTGOING gesetzt.
|
||
|
||
oder
|
||
|
||
Man wird von dieser Nummer angerufen, und das Flag
|
||
ist "I" fuer INCOMING gesetzt.
|
||
|
||
4. Es "klingelt", d.h. eine Verbindung ist gerade im Entstehen, und
|
||
das Flag ist "R" fuer RING gesetzt.
|
||
|
||
oder
|
||
|
||
Die Verbindung kam zustande, und in der Flags-Spalte ist "C" fuer
|
||
CONNECT gesetzt.
|
||
|
||
|
||
Die eigentliche Grund-Aufgabe von isdnlog, das Fortfuehren des Logbuch's
|
||
"/var/log/isdn.log" wird auf jeden Fall durchgefuehrt.
|
||
|
||
Daneben bietet isdnlog noch folgende interessante Zusatz-Funktion:
|
||
|
||
- isdnlog -t 1 oder isdnlog -t 2
|
||
|
||
Bei jeder rausgehenden Verbindung uebertraegt die Vermittlungsstelle
|
||
die aktuelle Uhrzeit/Datum an isdnlog. Mit der Option "-t 1" setzt
|
||
isdnlog _einmalig_ die Systemzeit des Rechners auf diese uebertragene
|
||
Zeit.
|
||
|
||
Mit der Option "-t 2" setzt isdnlog bei _jeder_ Uhrzeit-Uebertragung
|
||
die Rechner-Uhr neu.
|
||
|
||
|
||
8. Start von isdnlog
|
||
--------------------
|
||
|
||
ACHTUNG: Ab der Version 3.0 kann der isdnlog nur noch als root gestartet werden!
|
||
|
||
Vor dem Start von "isdnlog" muss das D-Channel Q.931 logging des
|
||
Teles-Treiber eingeschaltet werden. Bis "isdn4linux0.6.6beta" ist dazu
|
||
|
||
telesctrl <DriverID> 1 4
|
||
|
||
wobei "<DriverID>" mit dem String zu ersetzen ist, der beim "insmod teles.o"
|
||
als "id=<DriverID>" angegeben wurde.
|
||
|
||
Die Kernel-Version von isdn4linux benoetigt anstelle von
|
||
"id=" ein "teles_id=" !
|
||
|
||
Wurde keine "id" angegeben, ist beim "telesctrl" stattdessen "line0"
|
||
anzugeben.
|
||
|
||
Beim "telesctrl" koennen auch noch weitere Debug-Flags eingeschaltet werden,
|
||
isdnlog benoetigt allerdings auf jeden Fall die "4"
|
||
|
||
Nun kann isdnlog mittels:
|
||
|
||
isdnlog [ -avsx:m:l:rt:cC:w:SVTRDPeMh: ] [ /dev/isdnctrl0 | - ]
|
||
|
||
gestartet werden. Der isdnlog kann nur als root gestartet werden!
|
||
|
||
isdnlog besitzt drei Ausgabekanaele:
|
||
- Console (default stderr) (Schalter -mX)
|
||
- syslog (Schalter -lX)
|
||
- xisdn (Schalter -xX)
|
||
|
||
Beim normalen Start (nicht als Daemon) werden alle Ausgaben (Meldungen)
|
||
vom isdnlog auf stderr ausgegeben.
|
||
|
||
Sobald isdnlog gestartet wird, erzeugt es eine Datei
|
||
"/var/run/isdnlog.'device'.pid", und schreibt dort seine eigene
|
||
Process-ID hinein. "device" steht fuer entsprechende isdnctrl-Device,
|
||
welches man gangesprochen hat. Somit kann isdnlog
|
||
jederzeit mittels "kill `cat /var/run/isdnlog.'device'.pid`" terminiert werden.
|
||
(Was z.b. zwingend ist, wenn man das teles- oder isdn-Modul entladen will!)
|
||
Wenn isdnlog ein zweites mal gestartet wird mit dem gleichen Device, beendet
|
||
er sich sofort wieder, da nur ein isdnlog gleichzeitig auf einem
|
||
device laufen kann.
|
||
|
||
Ebenfalls wird unter dem Verzeichnis /var/lock (LOCKDIR) eine Datei namens
|
||
LCK..'device' angelegt. Auch diese Datei wird bei der Beendigung wieder
|
||
geloescht.
|
||
|
||
Muessen mehrere isdnlog's gleichzeitig gestartet werden, muessen diese mit
|
||
Hilfe von Links gestartet werden. Z. B. ln -s isdnlog isdnlog1
|
||
|
||
isdnlog kann mittels "kill -HUP `cat /var/run/isdnlog.'device'.pid`" dazu
|
||
aufgefordert werden, die Konfigurationsdatei "/etc/isdn/isdn.conf"
|
||
neu einzulesen (z.b., nachdem daran Erweiterungen vorgenommen wurden)
|
||
Dies darf jedoch _nicht_ waehrend einer laufenden Verbindung gemacht werden!
|
||
Dieses fuehrt mit Sicherheit zum Programmabsturz!
|
||
|
||
Die Optionen, denen ein "X" folgt, benoetigen einen zusaetzlichen Parameter.
|
||
(z.b. "-pX" -> "-p 20012" oder "-p20012". Nummerische Parameter koennen
|
||
in Dezimal (z.b. "64"), hexadezimal (z.b. "0x40"), oder octal (z.b. "0100")
|
||
angegeben werden.
|
||
|
||
-V isdnlog zeigt seine eigene Versionsnummer an, und terminiert wieder
|
||
|
||
-fX isdnlog liest eine Konfigurationsdatei "X". Hier koennen Optionen
|
||
angegeben werden. Die Datei hat nichts mit der isdn.conf zu tun.
|
||
Hier befinden sich nur Parameter zum starten von isdnlog.
|
||
Der Aufbau der Datei (Beispiel):
|
||
|
||
[options] # Muss immer zuerst kommen.
|
||
log=yes
|
||
port = 10000
|
||
STDOUT = 1023 # Gross/Kleinschreibung wird bei den Bezeichnern nicht
|
||
# beachtet.
|
||
...
|
||
|
||
Die Syntax ist also die gleiche wie bei isdn.conf.
|
||
Der Aufbau der einzelnen Optionen stehen in Klammern am Ende der einzelnen
|
||
Optionen. Optionen, die nur fuer Debugging-Zwecke Bedeutung haben wie -T,
|
||
koennen nicht ueber diese Datei "X" voreingestellt werden.
|
||
|
||
-vX isdnlog schreibt den gesamten Output von "/dev/isdnctrl0", den Output von
|
||
"/dev/isdninfo" sowie die jeweils gemessene Durchsatz-Rate, ergaenzt um
|
||
Uhrzeit/Datum nach "/tmp/isdnctrl0" zur spaeteren Kontrolle (siehe auch
|
||
"-r" Option)
|
||
Das Argument X gibt an, welche Ausgaben mitprotokolliert werden
|
||
sollen:
|
||
1 nur die "HEX:" Zeilen vom HiSax-Treiber
|
||
2 die Ausgaben von "/dev/isdnctrl"
|
||
4 die Ausgaben von "/dev/isdninfo"
|
||
8 die Byte-Angaben ("ibyte", "obyte")
|
||
Hier koennen auch Kombinationen angegeben werden
|
||
(z.b. 2 + 4 = 6 == "/dev/isdnctrl" und "/dev/isdninfo")
|
||
(log=X)
|
||
|
||
-s isdnlog fuehrt nach jedem Schreibzugriff auf die "/tmp/isdnctrl0"
|
||
(-> siehe "-vX") einen flush() darauf aus
|
||
(flush={yes|no})
|
||
|
||
-pX Angabe der TCP/IP Port-Nummer, ueber die isdnlog mit dem X11-Client
|
||
kommunizieren soll
|
||
ACHTUNG: Andere Bedeutung als in frueheren Versionen!
|
||
(port="value")
|
||
|
||
-mX Angabe der gewuenschten Meldungen, die angezeigt werden sollen.
|
||
Normalerweise ist das stderr. Es kann aber mit -C X ein anderes
|
||
Device sein.
|
||
ACHTUNG: Andere Bedeutung als in frueheren Versionen!
|
||
(stdout="value")
|
||
|
||
-lX Angabe der gewuenschten Meldungen, die in's syslog eingetragen
|
||
werden sollen
|
||
(syslog="value")
|
||
|
||
-xX Angabe der gewuenschten Meldungen, die dem X11-Client gemeldet
|
||
werden sollen. Gleichzeit mit -xX wird es erlaubt, dass ein X11-Client
|
||
sich beim isdnlog anmelden darf.
|
||
(xisdn=XXX)
|
||
|
||
-r isdnlog spielt die angegebene Datei (eine "/tmp/isdnctrl0") nochmals
|
||
trocken durch (Zwecks debugging etc.)
|
||
(Diese Option erkennt auch automatisch Dateien, die nicht von isdnlog
|
||
um Datum/Uhrzeit erweitert wurden, also z.b. der Output eines
|
||
"cat /dev/isdnctrl0")
|
||
|
||
-tX isdnlog soll bei einer Uhrzeit-Uebertragung durch die VSt die
|
||
Rechneruhr entsprechend stellen (-t 1 = ein mal, -t 2 = immer)
|
||
ACHTUNG: Erweiterte Syntax gegenueber frueheren Versionen!
|
||
(time={0|1|2})
|
||
|
||
-C X Angabe des Device, an das isdnlog die Meldungen von stderr ausgeben soll.
|
||
Es werden nach Angabe dieses Schalters keine Meldungen mehr auf stderr
|
||
ausgegeben, sondern nur noch an das angegebene Device.
|
||
(-C /dev/tty7, -C /dev/ttyp5)
|
||
ACHTUNG: Erweiterte Syntax gegenueber frueheren Versionen!
|
||
OBACHT: Zwischen "-C" und dem Device _muss_ ein Leerzeichen stehen!!
|
||
(console="path")
|
||
|
||
-S isdnlog soll bei diversen Event's die in der 5. Spalte der isdn.conf
|
||
angegebenen externen Programme starten
|
||
(start={yes|no})
|
||
|
||
-wX in welchen Abstaenden soll isdnlog die Uebertragungsrate neu
|
||
berechnen und anzeigen (Angabe in Sekunden)
|
||
(thruput="value")
|
||
|
||
-D isdnlog wird als Daemon gestartet. Wenn -mX nicht verwendet wurde, wird
|
||
die gesamte Ausgabe (normal stderr) auf den syslog geschrieben. Der
|
||
isdnlog wird automatisch im Hintergrund gestartet.
|
||
(daemon={yes|no})
|
||
|
||
-T Trace-Modus ... isdnlog laeuft im Single-Step-Modus, und wartet
|
||
pro verarbeiteter Zeile aus "/dev/isdnctrl0" auf einen Tastendruck.
|
||
An dem Prompt ">>>>>>> TRACE (CR=next, q=quit, d=dump, g=go):" kann
|
||
mit "d" ein Dump aller relevanten internen Variablen erzeugt,
|
||
sowie mit "g" der Trace-Modus beendet werden.
|
||
|
||
-P Pipe-Modus ... isdnlog reicht den gesamten Output von "/dev/isdnctrl0"
|
||
an stdout weiter. Somit kann isdnlog als Quelle einer Pipe laufen:
|
||
|
||
isdnlog -P /dev/isdnctrl0 | prog2 ...
|
||
|
||
(pipe={yes|no})
|
||
|
||
-b Wenn ein bilingualer NT verwendet wird, mit dem DSS1 gefahren wird,
|
||
dann muss dieses Flag gesetzt sein, da sonst die eigenen MSN's fehlerhaft
|
||
angezeigt werden.
|
||
(bilingual={yes|no})
|
||
|
||
-M imon/imontty/isdnmon Emulator
|
||
Hiermit erzeugt isdnlog eine den obigen Tools entsprechende Ausgabe
|
||
(Achtung: -m2048 muss dann zusaetzlich angegeben werden!)
|
||
(monitor={yes|no})
|
||
|
||
-hX Zeitabhaengige Hangup-Timeout Steuerung
|
||
Wird dieses Flag angegeben, berechnet isdnlog bei jedem rausgehenden
|
||
Verbindungsaufbau die aktuelle Dauer einer Gebuehreneinheit
|
||
entsprechend der Tageszeit (nebst Wochentag/Feiertag etc.) sowie
|
||
der Gebuehrenzone des Gegners, und programmiert - falls erforderlich -
|
||
die neue Dauer in das entsprechende IP-Interface.
|
||
|
||
Beispiel:
|
||
Mein Internet-Provider steht folgendermassen in der "isdn.conf" :
|
||
|
||
[NUMBER]
|
||
NUMBER = 4711
|
||
ALIAS = EUnet
|
||
ZONE = 3
|
||
INTERFACE = isdn0
|
||
START = {
|
||
|
||
[FLAG]
|
||
FLAGS = OC
|
||
PROGRAM = $CMD ${SOUNDS}/dial.au
|
||
}
|
||
|
||
Konfiguriert wurde dessen IP-Interface "isdn0" in der "rc.isdn" so:
|
||
isdnctrl huptimeout isdn0 12
|
||
|
||
Erfolgt nun ein Verbindungsaufbau Richtung EUnet, berechnet isdnlog
|
||
die aktuell gueltige Dauer einer Gebuehreneinheit
|
||
(da mein Provider in "Regio 200" liegt, also 12.0, 13.5, 21.5, 30.0
|
||
oder 120.0 Sekunden)
|
||
und setzt intern die Befehle
|
||
isdnctrl chargeint isdn0 X
|
||
isdnctrl huptimeout isdn0 Y
|
||
ab, wobei fuer "X" die berechnete Zeit, und fuer Y je nachdem, ob
|
||
X groesser oder kleiner 20 Sekunden ist, den linken oder rechten
|
||
Parameter der -h Option.
|
||
|
||
Dauert z.b. eine aktuelle Gebuehreneinheit 12 Sekunden, und wurde
|
||
isdnlog mit "-h5:3" gestartet, wird also der ChargeInt-Counter auf
|
||
12 Sekunden, und der huptimeout-Counter auf 5 Sekunden gestellt.
|
||
|
||
|
||
Das Nachjustieren des Hangup-Timers geschieht sowohl bei jedem
|
||
Verbindungsaufbau, als auch bei jedem Uebergang in einen anderen
|
||
Tarif, also um 9:00, 12:00, 18:00, 21:00, 2:00 sowie 5:00 Uhr.
|
||
|
||
ACHTUNG: Die Gebuehrenimpulse der VSt kommen keineswegs im Rythmus
|
||
der wirklichen Gebuehrentakt-Laenge, sondern in jeweils
|
||
auf 10 Sekunden gerundeten Abschnitten (entsprechend eigener
|
||
Beobachtungen)
|
||
In obigem Beispiel also nicht nach 12,24,36,48 .. Sekunden,
|
||
sondern nach 20,30,40,50 Sekunden.
|
||
|
||
ACHTUNG: Wird dieses Feature genutzt, sollte isdnlog mindestens
|
||
mit "-t1", besser mit "-t2" synchron zur Uhr der VSt
|
||
laufen!
|
||
|
||
Fuer diese Funktionalitaet benoetigt isdnlog das Programm "isdnctrl"
|
||
nicht, da es direkt mit isdn4linux komuniziert.
|
||
(hangup="value")
|
||
|
||
-cX Nur in Verbindung mit -xX. Es werden die X letzten Gespreache vom isdnlog
|
||
gespeichert, die vom xisdn abgerufen werden, wenn der xisdn gestartet wird.
|
||
Der Defaultwert betraegt 100.
|
||
(calls="value")
|
||
|
||
-LX Nur in Verbindung mit -xX. Es werden die X letzten Meldungen von der Option
|
||
-xX im isdnlog gespeichert, die vom xisdn abgerufen werden, wenn der xisdn
|
||
gestartet wird. Der Defaultwert betraegt 500.
|
||
(xlog="value")
|
||
|
||
-n Die Durchsatzmeldungen werden - soweit moeglich - immer in derselben
|
||
Bildschirmzeile angezeigt.
|
||
(newline={yes|no})
|
||
|
||
-Wx Alle Bildschirmausgabezeilen werden auf max. "x" Zeichen/Zeile
|
||
beschnitten
|
||
(width="value")
|
||
|
||
-Ax Hiermit kann/koennen die Ziffer(n) angegeben werden, die
|
||
an einer Telefonanlage vorgewaehlt werden muessen, um ein Amt
|
||
zu bekommen. Hierbei koennen beliebig viele, jeweils durch ein ":"
|
||
getrennte Amtsholungen angegeben werden, also z.B.
|
||
-A0:80:81:82:83:84:85:86:87:88:89
|
||
(amt="value")
|
||
|
||
-2x Dual-Mode. isdnlog empfaengt die D-Kanal-Frames der anderen
|
||
Geraete auf dem S0-Bus ueber eine zweite, falsch angeschlossene
|
||
Teles-Karte.
|
||
Mit x = 2 zeigt isdnlog auch jede Kleinigkeit - wie z.b. jedes
|
||
einzelne gewaehlte Digit beim Telefonieren direkt an.
|
||
(dual="value")
|
||
|
||
|
||
Bei den Optionen -mX, -lX -xX sind folgende Flags moeglich:
|
||
|
||
1 Errors
|
||
Fehlermeldungen vom isdnlog. Diese ist eine Defaultausgabe, die auf
|
||
stderr bzw. an syslog (bei -D) gemeldet wird.
|
||
|
||
2 Warnings
|
||
Warnungen vom isdnlog. Diese ist eine Defaultausgabe, die auf stderr
|
||
bzw. an syslog (bei -D) gemeldet wird.
|
||
|
||
4 Meldungen
|
||
Fehlermeldungen vom isdnlog. Diese ist eine Defaultausgabe, die auf
|
||
stderr bzw. an syslog (bei -D) gemeldet wird.
|
||
|
||
8 Log-Ausgabe
|
||
Die Meldungen, die der isdnlog in die Datei "/tmp/isdnctrl0" schreibt.
|
||
|
||
16 Show Numbers
|
||
Sofort, wenn Telefonnummern auf dem S0-Bus auftauchen,
|
||
werden diese angezeigt:
|
||
|
||
Feb 17 19:10:11 * tei 123 calling EUnet with ISDN Digital
|
||
|
||
ACHTUNG: fruehere Versionen: -m1
|
||
|
||
32 Show AOCD
|
||
Bei jedem Gebuehrenimpuls wird die Anzahl der bislang
|
||
aufgelaufenen Gebuehreneinheiten fuer die aktuelle Verbindung
|
||
angezeigt:
|
||
|
||
Feb 17 19:09:29 tei 123 calling EUnet with ISDN 2.EH = DM 0,24 (20 s)
|
||
|
||
## Dies funktioniert natuerlich nur, wenn auf der aktiven
|
||
## ISDN-Leitung Gebuehreninfo "A" (Charging-Info's during call's -
|
||
## AOC-D) bestellt wurde!
|
||
|
||
Es wird die Anzahl der aufgelaufenen Einheiten sowie diese
|
||
Einheiten umgerechnet in Geld (EH * DM 0,12) angezeigt.
|
||
In Klammern wird angegeben, nach wieviel Sekunden (seit dem
|
||
Verbindungsaufbau) dieser Gebuehrentakt erschien - eigentlich
|
||
mehr, um aufzuzeigen, wie _ungenau_ die Uhr der VSt eigentlich
|
||
laeuft!
|
||
|
||
ACHTUNG: fruehere Versionen: -m2
|
||
|
||
64 Show Connect
|
||
Kommt eine Verbindung zustande (Telefon wird abgenommen,
|
||
ISDN-Karte akzeptiert den Call etc.) wird dies angezeigt:
|
||
|
||
Feb 17 19:11:11 tei 123 calling EUnet with ISDN CONNECTED
|
||
|
||
ACHTUNG: fruehere Versionen: -m4
|
||
|
||
|
||
128 Show Hangup
|
||
Sobald diese Verbindung beendet wurde, wird dies angezeigt
|
||
(Wie bei -m2 mit Anzahl Einheiten, diese in Geld sowie
|
||
Gesamtdauer der Verbindung. Die Anzahl Einheiten stammt hier
|
||
jedoch aus der AOC-E Meldung der VSt)
|
||
|
||
Feb 17 19:14:13 tei 123 calling EUnet with ISDN HANGUP (15 EH = DM 1,80 = 148 s)
|
||
|
||
ACHTUNG: fruehere Versionen: -m8
|
||
|
||
256 Show Cause
|
||
Der Grund fuer einen Verbindungsabbau/das nicht zustande
|
||
kommen einer Verbindung wird angezeigt
|
||
|
||
Feb 17 19:14:24 tei 123 calling bun with Phone No user responding
|
||
|
||
ACHTUNG: fruehere Versionen: -m16
|
||
|
||
512 Show Time
|
||
Die von der VSt uebermittelte Uhrzeit wird angezeigt
|
||
|
||
Feb 17 19:11:11 tei 123 calling EUnet with ISDN Time:Sat Feb 17 19:09:00 1996
|
||
|
||
ACHTUNG: fruehere Versionen: -m32
|
||
|
||
1024 Show Byte
|
||
Der Durchsatz in Byte/s wird im Rythmus von "-w x" Sekunden angezeigt
|
||
|
||
2048 imon Anzeige
|
||
Der aktuelle Zustand der B-Kanaele wird angezeigt
|
||
|
||
4096 Der vollstaendige Service-Indicator wird bei jedem Verbindungsaufbau
|
||
aufgeschluesselt angezeigt
|
||
|
||
8192 Jede "-m" Meldung wird erweitert um eine Schaetzung, wann der naechste
|
||
Gebuehrentakt beginnt sowie in welcher Zone der Gegner vermutlich
|
||
liegt.
|
||
|
||
|
||
Alle weiteren Flags (16.384 .. 4.194.304) sind Debug-Flags
|
||
|
||
Werden mehrere Optionen gewuenscht, muss bei -mX bzw -lX, -xX die Summe der
|
||
Optionen angegeben werden, d.h. falls alle obigen Optionen auf stderr
|
||
gewuenscht werden, muss "isdnlog" nun mit "-m1015" gestartet werden.
|
||
|
||
Das in aelteren Version verwendete "-m63" entspricht jetzt also "-m1015",
|
||
da die ersten drei Flags auch gesetzt sein sollten.
|
||
Alle z.Zt. moeglichen Informationen von isdnlog koennen mit "-m4087"
|
||
angefordert werden.
|
||
|
||
Wenn man die Schalter -mX, -lX oder -xX verwendet, sollte man darauf achten,
|
||
dass die Meldungen (1: Errors, 2: Warnings und 4: Meldungen) auf jeden Fall
|
||
irgendwo ausgegeben werden, da dies grundlegende Meldungen vom isdnlog sind.
|
||
|
||
|
||
9. Die Protokoll-Datei "/var/log/isdn.log"
|
||
------------------------------------------
|
||
|
||
Fuer jede (zustande gekommene, oder auch nicht zustande gekommene)
|
||
Verbindung erzeugt isdnlog einen Eintrag in der Datei "/var/log/isdn.log":
|
||
|
||
Sep 30 15:24:10 1995|xxxxx|xxxxxx| 3| 344| 812471050| 1|I|0| 0| 0|
|
||
(1) (2) (3) (4) (5) (6) (7) (8)(9) (10) (11)
|
||
|
||
Wobei in den einzelnen Spalten folgendes steht:
|
||
|
||
(1) Zeitpunkt des Verbindungsaufbaues (in Local-Time)
|
||
(2) Telefonnummer des Anrufers (oder Blank, falls z.b. Analog-Anschluss)
|
||
(d.h. natuerlich auch die eigene MSN, wenn man selber raus-ruft!)
|
||
(3) Telefonnummer des Gegners (d.h. die eigene MSN, wenn man angerufen
|
||
wird)
|
||
(4) Dauer der Verbindung in Sekunden
|
||
(5) Dauer der Verbindung in 1/100 Sekunden
|
||
(im obigen Beispiel: 912 / 100 = 9,12 Sekunden)
|
||
(6) Zeitpunkt des Verbindungsaufbaues in UTC
|
||
(7) Anzahl zu zahlender Gebuehreneinheiten (AOC-D)
|
||
(oder -1, falls keine Gebuehreneinheiten von der VSt gemeldet wurden)
|
||
(8) "I" fuer incoming call, "O" fuer outgoing call
|
||
(9) Kam eine Verbindung nicht zustande (d.h. z.b. man wird angerufen, nimmt
|
||
aber nicht ab) taucht hier der Grund fuer das nicht Zustandekommen auf
|
||
("Cause")
|
||
(10) Summe der uebertragenen Byte _von_ draussen (incoming)
|
||
(11) Summe der uebertragenen Byte _nach_ draussen (outgoing)
|
||
(12) Versionsnummer der "isdn.log" Eintragung, z.Zt. Version 2.0
|
||
(13) Dienstkennung fuer diese Verbindung (1=Speech, 7=Data usw.)
|
||
(14) Bei Dienstkennung 1=Speech steht hier eine 1, falls der Gegner aus dem
|
||
ISDN, und 0, falls der Gegner aus der analogen Welt kommt
|
||
(15) Der Currency Factor fuer diese Verbinung (in Deutschland z.Zt. 0,12)
|
||
(16) Die Waehrung fuer diese Verbindung (in Deutschland "DM")
|
||
|
||
|
||
10. Das Report-Modul isdnrep
|
||
---------------------------
|
||
|
||
Gestartet wird isdnrep mittels:
|
||
|
||
isdnrep [ -anvt:f:d: ]
|
||
|
||
Der isdnrep kann seit der Version 3.0 die Ausgabe im HTML-Format erzeugen.
|
||
Dieses kann ueber zwei Wege erreicht werden:
|
||
- Option -wX
|
||
- Der Name des isdnrep hat die Endung ".cgi" (z.B. isdnrep.cgi). Diese
|
||
entspricht der Option -w1. Man kann also z.B. einen Link auf
|
||
den isdnrep machen: ln -s isdnrep isdnrep.cgi
|
||
|
||
Die Optionen von isdnrep haben im einzelnen folgende Funktion:
|
||
|
||
-a "all" isdnrep druckt alle Verbindungen an, die sich in der
|
||
"/var/log/isdn.log" angesammelt haben (sonst nur "heute")
|
||
|
||
-h "no header" Es wird weder fuer jeden Tag der Header angegeben,
|
||
noch wird die Tages-/Gesamtzusammenfassung der
|
||
Gespraeche und Gebuehren angezeigt.
|
||
Dieses ist sinnvoll, wenn man den Output in ein
|
||
anderes Programm einlesen will.
|
||
Diese Option hat keine Funktion, wenn der isdnrep
|
||
ebenfalls mit der Option -wX aufgerufen wurde.
|
||
|
||
-n "numbers" isdnrep druckt anstelle der Symbolischen Namen die
|
||
Telefonnummern an
|
||
|
||
-c Zone "compute" Falls man kein AOC-E (Gebuehreninfo am Ende einer Verbindung)
|
||
bestellt hat, und isdnlog der angerufene Gegner unbekannt
|
||
ist ("calling ?"), kann hiermit angegeben werden, in
|
||
welcher Gebuehrenzone isdnrep den Gegner "vermuten" soll:
|
||
-c 0 : nicht's berechnen, sondern mit DM 0,00 abrechnen
|
||
-c 1 : in der City-Zone vermuten
|
||
-c 2 : in der Regio-50 Zone vermuten
|
||
-c 3 : in der Regio-200 Zone vermuten
|
||
-c 4 : in der Fernzone vermuten
|
||
|
||
-f file "file" Es kann ein anderes Logfile anstelle von /var/log/isdn.log
|
||
angegeben werden.
|
||
|
||
-t Zeitabschnitt
|
||
"time" Mit dieser Option kann ein bestimmter Zeitabschnitt vom
|
||
Logfile angezeigt werden. Z. b. alle Gespraeche vom
|
||
Monat November '95 oder vom 3.Januar'96 von 3.00 Uhr
|
||
bis 9.45 Uhr.
|
||
|
||
Zeitabschnitt hat folgende Syntax:
|
||
Zeit-Zeit Es wird der Beginn-Zeitpunkt und der End-Zeitpunkt
|
||
bestimmt.
|
||
Zeit- Von 'Zeit' bis jetzt
|
||
-Zeit Von Beginn des Logfiles bis 'Zeit'
|
||
Zeit Zeigt den aktuellen Monat, Tag, Stunde... an
|
||
|
||
Die 'Zeit' kann folgendes Format beinhalten:
|
||
|
||
[DD/][M]M/[[YY]YY] Gibt den Monat oder Tag an
|
||
|
||
Beispiele: 7/95 (Juli '95)
|
||
7/ (Juli des aktuellen Jahres)
|
||
8/1996 (August '96)
|
||
6/6/95 (6. Juni 95)
|
||
6/6/ (FALSCH: ist NICHT 6.Juni des
|
||
aktuellen Jahres, sondern
|
||
Juni 1906)
|
||
|
||
[D]D Gibt den Tag im aktuellen Monat an.
|
||
|
||
Beispiele: 5 (5. des aktuellen Monats),
|
||
15 (15. des aktuellen Monats)
|
||
|
||
[MM]DD[hhmm[[CC]YY][.ss]]
|
||
Gibt einen genauen Zeitpunkt an. Wenn Stunden, Minuten
|
||
und Sekunden nicht gesetzt sind, dann werden sie
|
||
automatisch auf 0 beim Anfangszeitpunkt und
|
||
auf 23 bzw. 59 beim Endzeitpunkt gesetzt.
|
||
Standardgemaess werden mit diesem Format auf den
|
||
Tag Einstellungen vorgenommen. Wenn das Jahr mit
|
||
angegeben werden soll, so MUESSEN auch die Stunden
|
||
und Minuten mitangegeben werden.
|
||
Das Format ist vom date-Befehl uebernommen worden.
|
||
|
||
Beispiele: 0107 (7.Januar des akt. Jahres)
|
||
0107173196.25 (7.Januar'96 17:31:25 Uhr)
|
||
010717311996 (7.Januar'96 17:31:00 Uhr)
|
||
12141995 (FALSCH: Ist NICHT
|
||
12.Dezember'95, sondern
|
||
12.Dezember das akt. Jahres
|
||
19:95 Uhr -> Muell)
|
||
|
||
Beispiele fuer die Zeitabschnitte und deren Bedeutung:
|
||
6/95-081214381996.25 (Alle Eintraege zwischen
|
||
1.Juni'95 0:00:00 Uhr und
|
||
12.August'96 14:38:25 Uhr)
|
||
0912030495.20-12/95 (Alle Eintraege zwischen
|
||
12.September'95 3:04:20 Uhr und
|
||
31.Dezember'95 23:59:59 Uhr)
|
||
7/95 (Alle Eintraege zwischen
|
||
1.Juli'95 0:00:00 Uhr und
|
||
31.Juli'95 23:59:59 Uhr)
|
||
0908 (Alle Eintraege zwischen
|
||
8.September des akt. Jahres 0:00:00 Uhr u.
|
||
8.September des akt. Jahres 23:59:59 Uhr)
|
||
3 3.Tag des akuellen Monats
|
||
|
||
|
||
-d -Zeit "delete" Loescht in der Logdatei alle Eintraege ausschliesslich
|
||
der angegebenen Zeit. Das Zeitformat ist gleich, wie
|
||
bei Option -t. Das Minus vor der "Zeit" MUSS immer
|
||
angegeben werden! Es kann auch KEIN von-bis-Zeitraum
|
||
angegeben werden. Es koennen nur von Anfang des Logfiles
|
||
bis zu dem angegebenen Zeitpunkt Eintraege geloescht
|
||
werden.
|
||
|
||
Beispiele:
|
||
-7/95 Loescht alle Calls bis 30.Juni'1995 23:59:59 Uhr
|
||
-0107173196.25 Loescht alle Calls bis 7.Januar'96 17:31:24 Uhr
|
||
ACHTUNG:---------------------------------------------^^
|
||
Der angegebene Zeitpunkt wird immer
|
||
ausgeschlossen!
|
||
|
||
ACHTUNG: Mit dieser Option werden Eintraege aus der Logdatei
|
||
geloescht. Bei unsachgemaesser Verwendung, kann
|
||
die gesamte Logdatei geloescht werden!
|
||
z.b. "isdnrep -d -" loescht ALLE Eintraege.
|
||
|
||
|
||
-v "verbose" Zeigt alle Verbindungen und Verbindungsversuche auf.
|
||
Sonst werden nur die "wahren" Gespraeche angezeigt, die
|
||
ohne Fehler zustande gekommen sind.
|
||
|
||
-p [n][m]'Nummer'[,[m]'Nummer'...] "phonenumber"
|
||
Hiermit koennen nur ausgewaehlte Telefonnummer angezeigt
|
||
werden.
|
||
'Nummer' ist eine Zahl im Format der Konfigurationsdatei
|
||
mit Wildcards (siehe "/etc/isdn/isdn.conf").
|
||
Wenn ein 'm' vor der Nummer steht, beschreibt es die
|
||
entsprechende MSN. Z.b. 'm2' (entspricht MSN#2).
|
||
Wenn 'MSN' == 0 ("m0") ist, dann bedeutet das, alle uebrigen
|
||
Nummern werden angezeigt.
|
||
|
||
Wird das Flag n gesetzt, bedeutet dieses, dass die
|
||
angegebenen Nummer nicht angezeigt werden. Dieses Flag
|
||
gilt immer fuer alle Nummern. Ist also eine Negierung.
|
||
|
||
-i "incoming"
|
||
Mit dieser Option werden nur einkommende Gespraeche
|
||
angezeigt.
|
||
|
||
-o "outgoing"
|
||
Mit dieser Option werden nur rausgehende Gespraeche
|
||
angezeigt.
|
||
|
||
-u "unknown caller"
|
||
Zeigt am Ende alle Nummern an, die nicht in der
|
||
callerid.conf oder ~/.isdn eingetragen sind.
|
||
Diese Option laeuft nicht bei der Ausgabe im HTML-Format.
|
||
|
||
-wX "WWW" Der isdnrep kann die Ausgabe im HTML-Format erzeugen.
|
||
dieses wird mit der Option -w erreicht. Es gibt dort zwei
|
||
Modi:
|
||
0 Es wird der HTML-Header unterdrueckt. Dieses ist
|
||
sinnvoll, wenn die Ausgabe der isdnrep in eine
|
||
bestehende Seite eingebettet werden soll.
|
||
1 Es wird eine eigenstaendige Seite im HTML-Format
|
||
erzeugt.
|
||
|
||
-sX "format string"
|
||
Die Ausgabe des isdnrep kann beeinflusst werden, indem
|
||
ein Formatstring angegeben wird, welche Informationen
|
||
Pro Verbindung gezeigt werden soll. Die Syntax
|
||
entspricht dem printf. Folgende Platzhalter sind bekannt:
|
||
|
||
%X: Die Zeit ohne Datum (z.B. 23:54:06)
|
||
%x: Das Datum (z.B. 05/07/97)
|
||
%y: Datum ohne Jahresangabe (z.B. Sun May 04)
|
||
%Y: Das Jahr, vierstellig (z.B. 1997)
|
||
|
||
%D: Gespraechsdauer (z.B. 00:03:34)
|
||
%H: Die eigene MSN, wenn ein Eintrag in der callerid.conf
|
||
gefunden wurde wird dort das Alias angezeigt.
|
||
Es sollte die Precision angegeben werden!
|
||
%h: Die eigene MSN (kein Alias, nur die Nummer)
|
||
Es sollte die Precision angegeben werden!
|
||
%F: Der andere Gesprachsteilnehmer, wenn ein Eintrag in
|
||
der callerid.conf gefunden wurde wird dort das Alias
|
||
angezeigt.
|
||
Es sollte die Precision angegeben werden!
|
||
%f: Der andere Gesprachsteilnehmer (kein Alias, nur die
|
||
Nummer)
|
||
Es sollte die Precision angegeben werden!
|
||
%L: Gibt den Ort aus fuer die eigene MSN falls bekannt,
|
||
sonst ein Leerstring.
|
||
Es sollte die Precision angegeben werden!
|
||
%l: Gibt den Ort aus fuer den anderen Gesprachsteilnehmer
|
||
falls bekannt, sonst ein Leerstring.
|
||
Es sollte die Precision angegeben werden!
|
||
%T: Gibt den Pfeil an zischen den Nummern ("->" oder "<-")
|
||
fuer die Gespraechsrichtung. Die eigene MSN
|
||
sollte hierbei immer links vom Pfeil stehen.
|
||
%t: Gibt den Pfeil an zischen den Nummern ("->" oder "<-")
|
||
fuer die Gespraechsrichtung. Die eigene MSN
|
||
sollte hierbei immer rechts vom Pfeil stehen.
|
||
|
||
%u: Gibt die Einheiten aus, falls vorhanden (z.B. 6 EH)
|
||
Es sollte die Precision angegeben werden!
|
||
%U: Gibt die Gebuehren aus, falls vorhanden (z.B. 2,28 DM)
|
||
%I: Gibt den INPUT-Datendurchsatz an.
|
||
%O: Gibt den OUTPUT-Datendurchsatz an.
|
||
%P: Gibt den INPUT-Datendurchsatz pro Sekunde an.
|
||
%p: Gibt den OUTPUT-Datendurchsatz pro Sekunde an.
|
||
|
||
Defaultmaessig ist der folgende String fuer den isdnrep
|
||
(nicht HTML) eingestellt:
|
||
|
||
" %X %D %15.15H %T %-15.15F %7u %U %I %O"
|
||
|
||
Mit dem folgenden String hat man alle wichtigen Daten
|
||
ueber 80 Zeichen pro Zeile:
|
||
|
||
"%X%D %10.10H%T%-14.14F%U%I %O"
|
||
|
||
-FX "format" Es koennen in der Datei isdn.conf Format-Strings definiert
|
||
werden. Diese koennen mit Option -F verwendet werden.
|
||
Unter der Sektion [ISDNLOG] kann es Eintraege namens
|
||
"REPFMTxxx" existieren. Der String nach der Option -F
|
||
muss identisch sein mit "xxx". Beispiel:
|
||
|
||
REPFMT1 = ... # -> isdnrep -F1
|
||
REPFMTMYSTRING = ... # -> isdnrep -Fmystring oder
|
||
# isdnrep -F MYSTRING
|
||
|
||
Es wird nun auf stdout eine Abrechnung mit folgender Default-Optik generiert:
|
||
|
||
$ isdnrep -v -t 6/1/96
|
||
I S D N Connection Report - Sun Jan 7 22:21:19 1996
|
||
|
||
|
||
Sat Jan 6 1996
|
||
00:54:19 UNKNOWN -> UNKNOWN No user responding (4)
|
||
[...]
|
||
16:33:24 0:03:23 UNKNOWN -> UNKNOWN 7 EH 0,84 DM
|
||
17:33:47 UNKNOWN -> UNKNOWN Unallocated (unassigned)(5)
|
||
number
|
||
20:02:28 0:02:37 Phone/HDLC <- UNKNOWN (1)
|
||
20:09:53 0:07:01 Modem/X.75 -> T-Online 3 EH 0,36 DM (2)
|
||
21:27:56 UNKNOWN -> UNKNOWN User busy (3)
|
||
22:09:41 0:29:36 UNKNOWN -> UNKNOWN 43 EH 9,89 DM*
|
||
=========================================================================
|
||
1 IN= 0:02:37, 13 OUT= 3:40:14, 3 failed 210 EH 25,20 DM
|
||
(6)^^^^^^^^^^^^ (7)^^^^^^^^^^^^^ (8)^^^^^^^ (9)^^^^^^ (10)^^^^^^^^
|
||
|
||
|
||
DIALOUT Summary for Sat Jan 6 1996 (11)
|
||
-----------------------------------------------------------
|
||
T-Online 1 call(s) 0:07:01 3 EH 0,36 DM
|
||
UNKNOWN 11 call(s) 0:17:00 20 EH 2,40 DM
|
||
|
||
|
||
DIALIN Summary for Sat Jan 6 1996 (12)
|
||
-----------------------------------------------------------
|
||
UNKNOWN 1 call(s) 0:02:37
|
||
|
||
|
||
Zone 1 : City 2 call(s) 2:23:13 50 EH 6,00 DM (13)
|
||
Zone x : UNKNOWN 11 call(s) 0:17:00 20 EH 2,40 DM
|
||
|
||
Fussnoten:
|
||
(1) "xxx <- xxx" war ein eingehender Anruf, kostet also nix
|
||
(2) "xxx -> xxx" ist ein rausgehender Ruf, macht also bei 203 sec,
|
||
Cityzone, Freizeittarif (da Samstag) 3 Gebuehreneinheiten = DM 0,36 ;-)
|
||
(3) Das Telefonat kam nicht zustande, da der angewaehlte Teilnehmer
|
||
besetzt war.
|
||
(4) Der angwaehlte Teilnehmer hat den Hoerer nicht abgenommen.
|
||
(5) "Kein Anschluss unter dieser Nummer..."
|
||
(6) Gesamte Zeit von eingehender Anrufen
|
||
(7) Gesamte Zeit von rausgehender Anrufen
|
||
(8) 3 Anrufe sind gescheitert (hier: einmal besetzt(3),
|
||
einmal keine Antwort(4) und einmal verwaehlt (5))
|
||
(9) Die gesamten Einheiten fuer einen Tag
|
||
(10) Das Geld, was man selbst fuer diesen Tag zu zahlen hat
|
||
(11) Aufschluesselung der rausgehenden Rufe nach Nummern
|
||
(12) Aufschluesselung der eingehenden Rufe nach Nummern
|
||
(13) Aufschluesselung der raus- und eingehenden Anrufe nach Bereichszonen
|
||
|
||
Wurden die Einheiten mit einem "*" markiert, wurden vom "Amt" keine
|
||
Einheiten gemeldet (Charging-Info fehlte)
|
||
Daher steht dann hier die von isdnrep errechnete Anzahl Einheiten.
|
||
|
||
|
||
11. Das Konfigurations-Tool isdnconf
|
||
------------------------------------
|
||
|
||
Dieses Programm bearbeitet oder interpretiert die Datei /etc/isdn/callerid.conf
|
||
sowie ~/.isdn.
|
||
Es koennen hiermit Eintraege in dieser Datei angelegt oder geloescht werden.
|
||
Des weiteren koennen wie mit einem Grep Eintraege gesucht und angezeigt werden.
|
||
Unter einen Eintrag ist eine eigene MSN ([MSN]) oder eine Telefonnummer
|
||
([NUMBER]) gemeint.
|
||
|
||
Dieses Programm hat seine Staerken als ein Suchprogramm in einem persoenlichem
|
||
Telefonbuch.
|
||
|
||
Hier nun die Optionen des Programmes:
|
||
|
||
Befehle:
|
||
|
||
ACHTUNG:
|
||
|
||
Dieses Programm besitzt zwar die Faehigkeit, die Nummerndateien zu veraendern.
|
||
Defaultmaessig wird die Datei ~/.isdn editiert. Es kann auch mit den Schaltern
|
||
-f und -g eine andere Datei verwendet werden.
|
||
Es wird aber dringend davon abgeraten die Schalter -A und -D zu verwenden!!
|
||
Hierbei wird die gesamte Struktur der Datei zerstoert (include), so wie alle
|
||
Kommentare werden geloescht.
|
||
|
||
-A "add" Es wird ein neuer Eintrag hinzugefuegt. Dieser wird ueber
|
||
Standardinput eingelesen. Es werden folgende Angaben
|
||
abgefragt:
|
||
|
||
Alias: Fred
|
||
Number: 0815/441777
|
||
SI: 0
|
||
Zone: 4
|
||
Interface: -
|
||
Flags: I|O
|
||
Program: /usr/local/ring
|
||
User: uucp
|
||
Group: user
|
||
Interval:
|
||
Time: 8-20
|
||
Flags: (CONTROL-D)
|
||
|
||
Alias: (CONTROL-D)
|
||
|
||
Wenn kein Control-D bei dem zweiten Flags gedrueckt
|
||
wuerde, kann ein weiterer Programmstart zur
|
||
entsprechenden Nummer angeben werden.
|
||
|
||
Wenn bei "Alias" kein Control-D gedrueckt wuerde,
|
||
koennte man eine weitere Nummer eingeben.
|
||
|
||
Es kann auch eine Datei als Eingabe "gepipt" werden.
|
||
Der Inhalt der der Datei sieht dann equivalent zur
|
||
oberen Eingabe aus:
|
||
|
||
Fred
|
||
0815/441777
|
||
0
|
||
4
|
||
-
|
||
I|O
|
||
/usr/local/ring
|
||
uucp
|
||
user
|
||
|
||
8-20
|
||
|
||
-D "delete" Loescht einen oder mehrere Eintraege, die den folgenden
|
||
Mustern entsprechen. Diese Muster werden unter den
|
||
weiteren Optionen besprochen.
|
||
|
||
-V "version" Zeigt die aktuelle Version und beendet sich.
|
||
|
||
Wenn weder -A noch -D angegeben wurde, dann wird isdnconf nur Telefonnummern
|
||
anzeigen die, dem Muster entsprechen.
|
||
|
||
Sollte -A und -D gleichzeitig angegeben werden. Wird isdnconf automatisch
|
||
beendet.
|
||
|
||
|
||
Optionen:
|
||
|
||
-n 'Nummer' "number" Sucht nach Telefonnummer unter allen Eintraegen,
|
||
die dem Muster entsprechen und zeigt sie anschliessend
|
||
an. 'Nummer' ist eine Zahl im Format der
|
||
Konfigurationsdatei mit Wildcards (siehe
|
||
"/etc/isdn/isdn.conf"). Gilt nicht fuer den
|
||
Befehl -A.
|
||
|
||
-a 'Alias' "alias" Sucht nach dem Alias unter allen Eintraegen,
|
||
die dem Muster entsprechen und zeigt sie anschliessend
|
||
an. 'Alias' ist eine Zahl im Format der
|
||
Konfigurationsdatei mit Wildcards (siehe
|
||
"/etc/isdn/isdn.conf"). Gilt nicht fuer den
|
||
Befehl -A.
|
||
BUG: Statt dem Zeichen '-' muss ein '?' verwendet
|
||
werden!
|
||
|
||
-t 'SI' Zeigt alle Eintraege mit Service-Indicator 'SI' an.
|
||
Gilt nicht fuer den Befehl -A.
|
||
|
||
-c 'Code' "code" Ermittelt die Vorzahl zu der Telefonnummer und gibt
|
||
diese dann aus. Gilt nicht fuer -A und -D.
|
||
|
||
-i "ignore" Es wird dann bei den Optionen -n und -a die
|
||
Gross/Kleinschreibung ignoriert.
|
||
|
||
-w "word" Der Ganze String von -a und -n muss auf den
|
||
angewendeteten String passen.
|
||
Beispiele (hier fuer -n):
|
||
"*34*" -> 123456, 345677, 1234
|
||
"34*" -> 34567, 34111
|
||
"34??" -> 3411, 3456
|
||
"34" -> 34 (und nichts anderes!!!)
|
||
|
||
Ohne diese Option wuerde das Muster wie beim
|
||
"grep" arbeiten:
|
||
"*34*" -> 123456, 345677, 1234
|
||
"34*" -> 123456, 345677, 1234, 34567, 34111
|
||
"34??" -> 123456, 345677, 1234, 3411, 3456
|
||
"34" -> 123456, 345677, 1234, 3411, 3456, 34567
|
||
|
||
-d "and" Defaultmaessig werden die Optionen -n, -a und -t
|
||
mit ODER verknuepft. Wenn diese alle mit UND
|
||
verknuepft werden sollen, muss diese Option
|
||
verwendet werden.
|
||
Es koennen die drei oben genannten Optionen nur
|
||
jeweils einmal in der Befehlszeile verwendet werden.
|
||
|
||
-q "quiet" Es unterdrueckt beim Befehl -A und -D die Ausgabe.
|
||
Ansonsten zeigt es nur das Alias zur gesuchten Nummer
|
||
oder die Nummber selber, falls kein Eintrag gefunden
|
||
wurde.
|
||
|
||
-m "msn" Es besagt beim Befehl -A, das die folgenden Eingaben
|
||
einen Eintrag MSN erzeugen. Defaultmassig werden
|
||
NUMBER-Eintraege geschrieben.
|
||
|
||
Normalerweise werden folgende Felder in der Ausgabe
|
||
angezeigt:
|
||
|
||
Alias: Fred
|
||
Number: 0815/441777
|
||
SI: 0
|
||
Zone: 4
|
||
Interface:
|
||
|
||
Dieses gilt nicht fuer die Befehle -A und -D.
|
||
Die folgenden beiden Optionen -l und -s veraendern
|
||
diese Ausgabe.
|
||
|
||
-s "short" Hiermit werden nun nur noch das Alias und die
|
||
Nummer angezeigt.
|
||
|
||
-l "long" Hier werden zusaetzlich noch die die zu startenden
|
||
Programme ([START]) angezeigt.
|
||
|
||
-f 'Datei' "file" isdnconf verwendet normalerweise die Konfigurationsdatei
|
||
"/etc/isdn/isdn.conf" sowie "~/.isdn". Wenn eine
|
||
andere benutzt werden soll, dann muss sie mit dieser
|
||
Option angegeben werden. Gilt nur fuer die
|
||
Optionen -A und -D
|
||
|
||
-g "global" Hat nur Auswrikungen bei den Befehlen -A und -D. Es
|
||
wird dann anstatt der ~/.isdn die Datei
|
||
/etc/isdn/callerid.conf genommen zum editieren.
|
||
|
||
-1 "first" loescht nur den ersten Eintrag oder zeigt nur den
|
||
ersten Eintrag an.
|
||
|
||
-M "isdnmon" liefert den Output fuer den isdnmon.
|
||
|
||
|
||
12. Der X-Client xisdn
|
||
----------------------
|
||
|
||
ACHTUNG: Der xisdn ist noch nicht an die Version 3.0 angepasst. Daher ist der
|
||
Client in dieser Version nicht enthalten. Es kann allerdings nicht
|
||
garantiert werden, ob der xisdn mit der Version 3.0 lauffaehig ist.
|
||
|
||
Der xisdn basiert auf Motif-2.0. Daher werden die wenigsten ihn selber
|
||
uebersetzen koennen. Der xisdn liegt als binary direkt neben dem isdnlog-Paket
|
||
auf den meisten ftp-Server'n, die auch isdnlog vorhalten. Der xisdn kann dann
|
||
in ein beliebiges Verzeichnis eingespielt werden, welches natuerlich im Pfad
|
||
liegen sollte.
|
||
|
||
Wenn die Datei "Isdn" nicht im Verzeichnis /usr/X11R6/lib/X11/app-defaults
|
||
zu finden ist (wird normalweise bei "make xinstall" dort hinein kopiert),
|
||
dann muss dem "xisdn" die Resource-Datei "Isdn" mittels
|
||
|
||
export XENVIRONMENT=<Pfad_der_Resource_Datei>/Isdn
|
||
|
||
bekannt gemacht werden.
|
||
|
||
Der X-Client laeuft ueber TCP/IP und muss daher nicht auf dem gleichen Host
|
||
laufen wie der isdnlog. Der isdnlog ist in der Lage, mehrere Clients
|
||
gleichzeitig zu bedienen.
|
||
|
||
Dem xisdn koennen folgende Parameter mit auf dem Weg gegeben werden:
|
||
|
||
xisdn: usage: xisdn ["X11 options"] [ -p: ] [host]
|
||
|
||
Es koennen alle ueblichen X11 Optionen angegeben werden (siehe "man X").
|
||
|
||
-pX Es kann die Portadresse vom isdnlog mit angegeben werden (-p 20011,
|
||
-p4711).
|
||
|
||
Host Der Host, auf dem isdnlog laeuft.
|
||
|
||
Werden dem xisdn keine Parameter mitgegeben, dann versucht er zum lokalen
|
||
isdnlog zu verbinden. Als Default-Port nimmt er den Eintrag von der Datei
|
||
/etc/services. Ist dort der Service "isdnlog" nicht bekannt (dieser wird
|
||
bei "make xinstall" in die /etc/services" eingetragen), wird der
|
||
"einkompilierte" Port genommen. Die Prioritaet vom Port (gilt auch fuer den
|
||
isdnlog):
|
||
|
||
1. -pXXX
|
||
2. /etc/services
|
||
3. #define SERV_PORT XXX (im Makefile abgelegt: SERV_PORT = 20011)
|
||
|
||
Kurze Beschreibung der Oberflaeche:
|
||
|
||
Die Oberflaeche ist in 3 Bereiche unterteilt: Ein Menubar mit Funktionen und
|
||
Hilfe und zwei scrollbaren Listen: die obere mit aktuell bestehenden und die
|
||
untere mit bereits abgeschlossenen (bzw. abgebrochenen) Verbindungen. Die
|
||
Zeilen in der letzten Liste koennen ausgewaehlt und dann mit
|
||
'Funktionen->Loeschen' entfernt werden. Die Spalten tragen die folgenden
|
||
Informationen (von links her): Monat, Tag, Verbindungsanfang, Dauer der
|
||
Verbindung, Gebuehren, Waehrung, MSN, Richtung, Gegenstelle, deren Ort, Status.
|
||
|
||
Mit 'Funktionen->Protokoll' koennen alle Meldungen vom Server im separaten
|
||
Dialog ausgegeben werden.
|
||
|
||
Die Informationen die beim isdnlog mit -xX eingestellt wurden, erscheinen dann
|
||
im Protokollfenster. Aber dafuer muss der Benutzer, der xisdn startet auch die
|
||
Rechte in der Datei /etc/isdn/isdnlog.users haben.
|
||
|
||
Der xisdn beinhaltet Teile von Xmt-2.1.2
|
||
Copyright (c) 1992, 1993, 1994 by Dovetail Systems.
|
||
|
||
Diese Programmteile unterliegen _nicht_ dem GPL. Sie duerfen daher auch
|
||
nicht anderweitig verwendet werden, als fuer den xisdn.
|
||
Weitere Informationen sind bitte den COPYRIGHT-Dateien
|
||
im Verzeichnis "client/Xmt" zu entnehmen.
|
||
|
||
|
||
13. ChargeInt
|
||
-------------
|
||
|
||
Die folgenden Seiten zum ChargeInt-Patch im contrib-Verzeichnis wurden
|
||
von Georg v.Zezschwitz (gvz@pop.de) geschrieben, der den ChargeInt-Patch
|
||
entwickelt hat. Der Patch haengt nicht direkt mit isdnlog zusammen, ist
|
||
aber im Zusammenspiel mit isdnlog sehr hilfreich, um ohne Leistungs-
|
||
Einbussen der Telekom ein paar Mark weniger ueberweisen zu muessen.
|
||
|
||
|
||
Was ist ChargeInt?
|
||
------------------
|
||
|
||
ChargeInt besteht aus einem Patch fuer den ISDN-Teil der Linux-Kernels und
|
||
einem Patch fuer isdn4kutils. Er fuehrt einen weiteren Parameter fuer
|
||
isdnctrl ein: den ChargeInt-Parameter. Mit dem ChargeInt-Parameter wird das
|
||
aktuelle Gebuehrenintervall einer bestimmten Verbindung angegeben, z.b.
|
||
90 Sekunden.
|
||
|
||
Wie wirkt ChargeInt?
|
||
|
||
Ohne ChargeInt prueft isdn4linux permanent, ob fuer eine gewisse Zeit (ueber
|
||
huptimeout konfiguriert) die bestehende Verbindung nicht genutzt wurde.
|
||
Ist diese Zeit abgelaufen, wird aufgelegt.
|
||
Demgegenueber verhaelt sich die kostenbewusste Nutzerin natuerlich so, dass
|
||
sie die fuer 12 Pf bezahlte Leistung der Telekom auch gerne bis zur letzten
|
||
Sekunde ausschoepfen wuerde, also erst dann auflegt, wenn in den naechsten
|
||
1-2 Sekunden die naechste Einheit anstehen wuerde.
|
||
ChargeInt macht eigentlich nichts weiter, als die Pruefung, ob in den
|
||
letzten Sekunden kein Traffic angefallen ist, nur dann durchzufuehren,
|
||
wenn die naechste Einheit der Telekom anfaengt.
|
||
Ohne ChargeInt steht man vor dem Konflikt:
|
||
|
||
- Eine niedrige Huptimeout fuehrt dazu, dass evtl. zu schnell aufgelegt wird,
|
||
also das Lesen einer WWW-Seite schon zum Auflegen fuehrt, obwohl man
|
||
bequem in der gleichen Einheit noch die zweite haette laden koennen
|
||
(so man nicht T-Online benutzt, wo sich die Durchschnittseite eh erst
|
||
nach 3 Einheiten voll darstellt :-)
|
||
|
||
- Ein hoher Huptimeout fuehrt dazu, dass man haeufiger in die naechste
|
||
Einheit "reinrutscht", obwohl auf der Leitung gar keine Aktivitaet mehr
|
||
stattfindet.
|
||
|
||
Also ist es am sinnigsten, einen kurzen Huptimeout einzustellen (empfohlen:
|
||
3-5 Sekunden), aber nur kurz vor Ablauf der aktuellen Einheit dieses
|
||
Kriterium abzupruefen.
|
||
|
||
|
||
Pro und Kontra von ChargeInt
|
||
----------------------------
|
||
|
||
Generell spricht nichts dagegen, ChargeInt einzukompilieren. Der Patch
|
||
ist "abwaertskompatibel", d.h., wer nicht explizit per Hand oder Programm
|
||
ein
|
||
|
||
isdnctrl device chargeint Takt
|
||
|
||
gibt, wird keinerlei Aenderungen feststellen. Zudem enthaelt der Patch
|
||
fuer isdnctrl die nette Moeglichkeit, mit einem einzigen isdnctrl-Befehl
|
||
gleich etliche Parameter auf einmal setzen zu koennen. (s.u.)
|
||
|
||
|
||
Wann sollte ich ChargeInt (nicht) aktivieren?
|
||
|
||
Wer mit synchronem PPP arbeitet und eine dynamische IP bezieht, duerfte
|
||
ein Verhalten wuenschen, wie es Otto-Normal-Dumm-Windows-User praktiziert:
|
||
Explizit Verbindung aufbauen, Rumsurfen, explizit Verbindung abbauen.
|
||
Zum einen kann etwa eine FTP-Session nicht ohne weiteres bei dynamischer
|
||
IP-Vergabe fortgesetzt werden, da sich die einem selbst zugewiesene
|
||
IP-Adresse bei einer erneuten Anwahl aendert. Dies gilt fuer alle
|
||
TCP-Verbindungen (z.b. Telnet, rlogin). Wer mit dynamischer IP-Adressvergabe
|
||
leben muss, wird grundsaetzlich seine Verbindung waehrend einer Sitzung
|
||
stehen lassen wollen und eher noch einen ping starten, damit auch die
|
||
Gegenseite nicht auflegt. Fuer diese User/innen ist ChargeInt also
|
||
ueberfluessig.
|
||
|
||
Ueberfluessig ist ChargeInt auch, wenn z.b. Daten im Batch-Betrieb (UUCP
|
||
ueber TCP/IP) abgeholt werden und anschliessend explizit aufgelegt wird.
|
||
|
||
Falsch ist ChargeInt dann, wenn eine Wiederanwahl so zeitaufwendig waere,
|
||
dass sie in keiner Relation zu den Mehrkosten fuer eine kontinuierliche
|
||
Verbindung steht.
|
||
|
||
ChargeInt ist ideal fuer Leute, die
|
||
- eine feste IP-Adresse haben
|
||
- gerne mal 1 Minute oder laenger die Seite, die sie sich gezogen
|
||
haben, auch lesen.
|
||
- oder z.b. Heimarbeit betreiben und ihr Trommelfeuer auf die Tastatur
|
||
auch mal kurz unterbrechen, um Nachzudenken oder Tee zu kochen oder...
|
||
|
||
|
||
Wie patche ich ChargeInt ein?
|
||
-----------------------------
|
||
|
||
ChargeInt ist im isdnlog-Tarfile bereits enthalten. Historisch ist ChargeInt
|
||
unabhaengig von isdnlog entwickelt worden und beide koennen nach wie vor
|
||
unabhaengig von einander betrieben werden, aber die eleganteste und einfachste
|
||
Methode ist, ChargeInt ueber isdnlog zu steuern (siehe Konfiguration).
|
||
|
||
ChargeInt befindet sich innerhalb von isdnlog in folgendem Verzeichnis:
|
||
|
||
contrib/chargeint/patch-chargeint-2.04
|
||
contrib/chargeint/patch-chargeint-kutils
|
||
|
||
Die Primary-Site ist
|
||
|
||
ftp://ftp.pop.de/pub/linux/isdn4linux/LOCAL/chargeint.tar.gz
|
||
|
||
, allerdings ist der Patch seit Linux 2.04 (Juli 1996) unveraendert geblieben.
|
||
Eine etwas ausfuehrlichere HTML-Doku ist unter
|
||
|
||
http://www.provi.de/~gvz/chargeint.html
|
||
|
||
abrufbar.
|
||
|
||
|
||
Angenommen, der Kernel liegt in /usr/src/linux und isdn4kutils in
|
||
/usr/src/isdn4k-utils-2.0, die Patche selbst im Home-Verzeichnis,
|
||
dann reichen folgende Befehle:
|
||
|
||
cd /usr/src
|
||
patch -p0 -l -F10 < ~/patch-chargeint-2.04
|
||
rm -rf isdn4k-utils-2.0/isdn/RCS
|
||
patch -p0 -l ~/patch-chargeint-kutils
|
||
|
||
Der patch-chargeint-2.04 wurde urspruenglich gegen Linux 2.0.4 erzeugt,
|
||
klappt aber mit der -F10 Option auch bei neueren Kerneln.
|
||
|
||
Wer bei dieser Gelegenheit den Kernel zum ersten Mal kompiliert, mache
|
||
bitte nicht ChargeInt verantwortlich, wenn es nicht klappt!
|
||
|
||
|
||
Wie konfiguriere ich ChargeInt?
|
||
-------------------------------
|
||
|
||
Parameter fuer die Hangup-Kontrolle
|
||
|
||
Das Gebuehrenintervall wird ueber den Parameter chargeint mitgeteilt.
|
||
Der Parameter huptimeout erhaelt eine andere Bedeutung: 2 Sekunden, bevor
|
||
die naechste Einheit faellig wird, prueft Chargeint, ob in den letzten
|
||
huptimeout Sekunden kein Traffic war. Bei "Stille" wird aufgelegt, sonst
|
||
weitergemacht. Man koennte auch anders sagen: Durch Chargeint wird der
|
||
huptimeout-Parameter nur kurz vor Ablauf der Gebuehreneinheit abgefragt.
|
||
|
||
Ich setze bei Cityverbindungen huptimeout auf 5 Sekunden, bei Fernver-
|
||
bindungen auf 3 Sekunden.
|
||
|
||
Im Juli 96 wurde isdnlog so modifiziert, dass isdnlog selbstaendig beim
|
||
Aufbau einer Verbindung berechnet, welche Taktzeit zur Zeit von der
|
||
Telekom vorgegeben wird und diese setzt. Otto Normaluserin muss sich also
|
||
nur noch darum kuemmern, dass
|
||
- die Systemuhr halbwegs richtig geht
|
||
- die Tarif-Zonen fuer die einzelnen Leitungen in der
|
||
/etc/isdn/isdn.conf korrekt angegeben sind.
|
||
|
||
|
||
Flexible Syntax fuer isdnctrl
|
||
-----------------------------
|
||
Als ich den chargeint-Parameter in isdnctrl einbauen wollte, juckte es
|
||
mich in den Fingern, das Ding gleich ein bisschen umzuschreiben. Mein
|
||
ISDN-Router daheim ist ein 386DX40, und die endlos vielen isdnctrl-Befehle
|
||
beim Booten, die die 5 ISDN-Verbindungen eintragen, brauchten ihre Zeit.
|
||
Daher habe ich eine Moeglichkeit eingebaut, mehrere Parameter auf einmal
|
||
setzen zu koennen. Auch hier gilt die Abwaertskompatibilitaet, wer also
|
||
nur einen Parameter aendern will, schreibt weiterhin:
|
||
|
||
isdnctrl chargeint isdn 90
|
||
|
||
Z.b. beim Booten sind aber auch solche Anweisungen moeglich:
|
||
|
||
isdnctrl l2_prot isdn0 hdlc eaz 232282 addphone in 40110 40112 \
|
||
out 2519612 huptimeout 5
|
||
|
||
Waehrend also die Syntax fuer das erste Kommando unveraendert
|
||
|
||
Kommando isdn-device [Parameter 1] (Parameter 2)
|
||
|
||
lautet, wird bei folgenden Kommandos im Aufruf von isdnctrl das Isdn-Device
|
||
weggelassen.
|
||
|
||
|
||
14. Gebuehren-GAU Begrenzer
|
||
---------------------------
|
||
|
||
isdnlog bietet 4 unterschiedliche (auch kombinierbare) Moeglichkeiten,
|
||
die maximal pro Zeiteinheit zu entrichtenden Gebuehren an die Telekom
|
||
sowie den Internet-Provider wirkungsvoll zu begrenzen.
|
||
|
||
Wird isdnlog terminiert, merkt es sich die bislang aufgelaufenen
|
||
Geld-, Zeit-, sowie Durchsatz-Betraege in der Datei "/etc/isdn/charge.dat"
|
||
und liest diese beim naechsten Start wieder ein.
|
||
|
||
|
||
14.1 Watchdog
|
||
-------------
|
||
|
||
In seltenen Faellen "glaubt" isdn4linux, aufgelegt zu haben. Die VSt
|
||
sieht das jedoch ganz anders, und laesst den Gebuehrenzaehler weiterlaufen.
|
||
|
||
Hiergegen hilft die Cmd-Line-Option "-H x" von isdnlog.
|
||
Sobald isdnlog feststellt, das seit mehr als "x" Gebuehrenimpulsen (AOC-D)
|
||
von der VSt kein Traffic mehr stattfand (Durchsatz rein sowie raus = 0)
|
||
faehrt isdnlog das gesamte isdn4linux runter.
|
||
|
||
Dies wird in 4 Stufen versucht:
|
||
|
||
1. Stufe: Es wird ein "isdnctrl hangup isdnX" ausgefuehrt
|
||
|
||
2. Stufe: Es wird der Shell-Script "/etc/isdn/reload" ausgefuehrt
|
||
Dieser sollte das Teles-/HiSax-Modul ent- und wieder laden.
|
||
(Siehe "samples/reload")
|
||
|
||
3. Stufe: Es wird ein "isdnctrl system off" ausgefuehrt
|
||
|
||
4. Stufe: Der Rechner wird rebootet ("/sbin/reboot")
|
||
|
||
In der Parameterdatei wird dieses Feature mit
|
||
|
||
watchdog="value"
|
||
|
||
aufgerufen.
|
||
|
||
|
||
14.2 CHARGEMAX
|
||
--------------
|
||
|
||
Mit dem Eintrag
|
||
CHARGEMAX = x
|
||
in der "/etc/isdn/isdn.conf" kann angegeben werden, das man gewillt
|
||
ist, maximal DM x pro Tag an Telefongebuehren auszugeben.
|
||
Sobald dieses Limit ueberschritten wird, fuehrt isdnlog den Shell-Script
|
||
"/etc/isdn/stop" aus (siehe "samples/stop"), der das isdn4linux
|
||
abschalten sollte.
|
||
|
||
|
||
14.3 CONNECTMAX
|
||
---------------
|
||
|
||
Mit dem Eintrag
|
||
CONNECTMAX = x,y
|
||
in der "/etc/isdn/isdn.conf" kann angegeben werden, das man gewillt
|
||
ist, maximal x Sekunden pro Monat Online zu sein.
|
||
|
||
(Ich persoenlich habe dort die 5 Freistunden (5 * 60 * 60 = 18000 Sekunden)
|
||
meines Providers eingetragen)
|
||
|
||
Sobald dieses Limit ueberschritten wird, fuehrt isdnlog den Shell-Script
|
||
"/etc/isdn/stop" aus (siehe "samples/stop"), der das isdn4linux
|
||
abschalten sollte.
|
||
|
||
Getrennt durch ein Komma (",") muss hinter der Anzahl Sekunden angegeben
|
||
werden, in welcher Form der Provider Online-Zeit abrechnet:
|
||
|
||
0 = es wird auf die Sekunde genau abgerechnet
|
||
1 = es wird "pro angefangene Minute" abgerechnet
|
||
|
||
|
||
14.4 BYTEMAX
|
||
------------
|
||
|
||
Mit dem Eintrag
|
||
BYTEMAX = x,y
|
||
in der "/etc/isdn/isdn.conf" kann angegeben werden, das man gewillt
|
||
ist, maximal x Byte pro Monat vom Provider zu saugen.
|
||
|
||
(Dies ist relevant bei Providern, die nach Volumen abrechnen)
|
||
|
||
Sobald dieses Limit ueberschritten wird, fuehrt isdnlog den Shell-Script
|
||
"/etc/isdn/stop" aus (siehe "samples/stop"), der das isdn4linux
|
||
abschalten sollte.
|
||
|
||
Getrennt durch ein Komma (",") muss hinter der Anzahl Byte angegeben
|
||
werden, in welcher Form der Provider abrechnet:
|
||
|
||
0 = auf's Byte genau
|
||
1 = auf's KByte genau
|
||
2 = auf's Mbyte genau
|
||
|
||
8 = nur die _zum_ Provider geschickten Bytes sollen zaehlen
|
||
16 = die Summe aus _zum_ Provider und _vom_ Provider zaehlen
|
||
|
||
Wird weder 8 noch 16 angegeben, meint das: nur die _vom_ Provider
|
||
gesaugten Byte zaehlen.
|
||
|
||
|
||
15. Dual-Mode
|
||
-------------
|
||
|
||
Wie eingangs erwaehnt, kann isdnlog bei allen rausgehenden Verbindungen,
|
||
die nicht mit der Teles-Karte entstanden sind (ISDN-Telefon, Modem/Fax)
|
||
die entsprechenden Telefonnummern leider nicht anzeigen.
|
||
|
||
Mit dem Dual-Mode ist genau dies jedoch moeglich.
|
||
|
||
Dazu muss der Rechner mit einer zweiten Teles-Karte ausgestattet, und
|
||
darauf ein Teles-/HiSax-Treiber installiert werden.
|
||
|
||
Bei mir sieht das so aus:
|
||
|
||
modprobe hisax io=0xd80,0xe80 irq=12,9 mem=0xd0000,0xd2000 type=1,1
|
||
protocol=2,2 id=bri1%echo
|
||
|
||
Dann muss diese zweite Karte (diese muss beim laden des HiSax-Treibers
|
||
auch auf jeden Fall als *zweite* Karte angegeben werden!) _verkehrt_
|
||
am S0-Bus angeschlossen werden:
|
||
|
||
Beim S0 Kabel an der Karte die aeusseren zwei Draehte auf die inneren
|
||
zwei Anschluesse des Steckers legen. Die beiden inneren nicht
|
||
anschliessen !!!, das legt den Bus lahm.
|
||
|
||
B 3 -- RX+ 2a ---------------\
|
||
U 4 -- TX+ 1a -- offen ------------
|
||
S 5 -- TX- 1b -- offen ------------ Karte
|
||
6 -- RX- 2b ---------------/
|
||
|
||
|
||
Abschliessend muss isdnlog mit der weiteren Option "-2" gestartet werden.
|
||
|
||
|
||
16. SQL-Anbindung
|
||
-----------------
|
||
|
||
Wird isdnlog mit "POSTGRES=1" erstellt, traegt isdnlog alle
|
||
Verbindungsinformationen zusaetzlich in eine Postgres95 SQL-Datenbank ein.
|
||
(Datenbank "isdn", Tabelle "isdn2")
|
||
|
||
Da isdnlog die Eintraege im europaeischen Datumsformat (tt.mm.jjjj)
|
||
vornimmt, muss postgres95 zwingend mit EUROPEAN_DATES=1
|
||
(siehe "postgres95/src/Makefile.global") compiliert werden!
|
||
|
||
Die Datenbank muss zuvor folgendermassen erstellt werden:
|
||
|
||
createdb isdn
|
||
psql isdn < script
|
||
|
||
Mit folgendem "script":
|
||
|
||
-------------------------
|
||
create table isdn2 (
|
||
sdate date,
|
||
stime time,
|
||
calling varchar(30),
|
||
called varchar(30),
|
||
charge int4,
|
||
dir char,
|
||
in_bytes int4,
|
||
out_bytes int4,
|
||
msec int4,
|
||
sec int4,
|
||
status int4,
|
||
service int4,
|
||
source int4,
|
||
vrsion int4,
|
||
factor real,
|
||
currency varchar(30),
|
||
pay real
|
||
);
|
||
\q
|
||
-------------------------
|
||
|
||
Da isdnlog normalerweise als User "root" laeuft, muss "root" das Recht
|
||
zum Eintragen gegeben werden:
|
||
|
||
grant insert on isdn2 to root;
|
||
|
||
Wie bei postgres95 ueblich kann ueber die Environment-Variablen
|
||
$PGHOST
|
||
sowie
|
||
$PGPORT
|
||
auch ein postmaster auf einem anderen Host angesprochen werden.
|
||
|
||
|
||
17. Probleme?
|
||
-------------
|
||
|
||
Sollte isdnlog nicht wie beschrieben arbeiten, muessen folgende Punkte
|
||
geprueft werden:
|
||
|
||
- Funktioniert isdn4linux ? D.h. kann eine ISDN-Verbindung zu einer
|
||
Gegenstelle aufgebaut werden?
|
||
|
||
- Wurde mittels "telesctrl <DriverID> 1 4" das D-Channel-Logging
|
||
eingeschaltet?
|
||
|
||
Als kostenlose Testmoeglichkeit fuer isdnlog bietet es sich an, den Hoerer
|
||
eines ISDN-Telefon's abzunehmen, und gleich wieder aufzulegen. Dies muss
|
||
isdnlog als "HANGUP" melden.
|
||
|
||
Daneben kann man sich natuerlich auch selbst anrufen, wobei man am besten
|
||
die MSN anruft, auf der isdn4linux nur die Dienstkennung DATA zulaesst.
|
||
Also wird dieser Testanruf von isdn4linux abgelehnt, was isdn4linux auch
|
||
dementsprechend melden sollte.
|
||
|
||
Falls der begruendete Verdacht auf ein Fehlverhalten von isdnlog besteht,
|
||
bitte ich darum, mir ein mit "isdnlog -v1" erstelltes Protokoll nebst
|
||
einer aussagekraeftigen Fehlerbeschreibung zuzuschicken.
|
||
|
||
Das Protokoll sollte nur noch die
|
||
"Q.931 frame ..."
|
||
sowie
|
||
"hex: ..."
|
||
Zeilen enthalten, der Rest wird von isdnlog nicht benoetigt!
|
||
|
||
Diese Fehlermeldung sollte bitte an "isdnlog@Kool.f.EUnet.de" geschickt
|
||
werden.
|
||
|
||
|
||
- Bei jeder Anwahl von draussen an meine Teles-Karte meldet mir isdnlog
|
||
2 HANGUP's?
|
||
|
||
Bei einem eingehenden Ruf melden alle Geraete, die sich zustaendig
|
||
fuehlen, an die Vermittlungsstelle, dass sie "klingeln".
|
||
(Die Klingel-Wiederholungen machen bei ISDN die Geraete selbst.)
|
||
|
||
Das Geraet, an dem der Ruf angenommen wird, bekommt den CONNECT,
|
||
alle anderen, die geklingelt haben, ein HANGUP, damit sie mit
|
||
dem Klingeln wieder aufhoeren. Dasselbe passiert natuerlich auch,
|
||
wenn der Anrufer vor dem Abnehmen schon auflegt.
|
||
|
||
D.h. der erste HANGUP stammt vom 2. B-Kanal der Teles-Karte, der den
|
||
Anruf ablehnt!
|
||
|
||
Die Teles-Karte spielt die Rolle von zwei Geraeten, wohl weil ein
|
||
Geraet zu einer Zeit immer nur eine Dienstkennung haben kann,
|
||
die Teles koennte aber gleichzeitig eine Voice- und eine Data-
|
||
Verbindung fahren (nur (noch?) nicht unter i4l).
|
||
Fehlt also nach dem CONNECT der Teles der HANGUP des zweiten
|
||
Kanals, ist das ein Indiz dafuer, dass dieser haengt.
|
||
|
||
- Es wird bei isdnlog, isdnrep und xisdn immer nur die letzte Ziffer der
|
||
eigenen MSN's angezeigt. Das Verhalten tritt bei bilingualen NT's auf.
|
||
Dann muss isdnlog mit der Option -b gestartet werden.
|
||
|
||
- Es werden die Programme nicht gestartet, die zu den Events ausgefuehrt
|
||
werden sollen.
|
||
Dort gibt es mehrere Ursachen. Haeufig liegt das Programm nicht
|
||
im Pfad, weil der isdnlog meistens in der Bootphase gestartet wird.
|
||
Daher sollte das Programm mit vollem Pfad gestartet werden.
|
||
Die folgende Zeile fuehrt zu mehreren Problemen:
|
||
"/usr/local/bin/myplayer '~fred/*.au'"
|
||
Die Anfuerungszeichen und die Hochkomma werden so dem execvp() uebergeben.
|
||
Der kann dieses aber nicht aufloesen. Also wird versucht das Programm
|
||
"/usr/local/bin/myplayer zu starten.
|
||
Auch der Parameter fuehrt zu Problemen. Das Hochkomma (') wird mit
|
||
uebergeben. Ausserdem wird ~fred NICH in /home/fred umgewandelt. Und auch
|
||
*.au wird so uebergeben und es wird versucht vom Programm *.au abzuspielen.
|
||
Die Zeile sollte also richtig so aussehen:
|
||
/usr/local/bin/myplayer /home/fred/telefon.au
|
||
|
||
Bei Verwendung vom xisdn:
|
||
|
||
Der xisdn meldet:
|
||
|
||
- "Nicht autorisierter Zugriff auf Server"
|
||
Der Benutzer, der xisdn gestartet hat, ist nicht in der
|
||
Datei /etc/isdn/isdnlog.users eingetragen, oder
|
||
er darf xisdn von dem Host nicht starten.
|
||
|
||
- "Server und Client haben unterschiedliche Protkollversionen"
|
||
Der xisdn und isdnlog kommen jeweils aus verschiedenen Versions-Paketen.
|
||
Die Protokollversion hat nichts mit der Version von isdnlog zu tun.
|
||
Der Client kann unter Umstaenden laufen, aber es kommt bestimmt
|
||
zu Fehlverhalten. Daher sollten beide Programme immer aus einem
|
||
Paket stammen. Wenn ein beliebiger Client mit isdnlog
|
||
Version 2.23 oder 2.30 gestartet wird, kommt die obige Meldung leider
|
||
nicht. Es kann dann auch zu Fehlverhalten fuehren, welches
|
||
vom Client nicht gemeldet wird.
|
||
|
||
Wenn keine Gespreache und keine Verbindungen angezeigt werden, oder nur
|
||
bestimmte MSN's, dann liegt der Fehler mit Sicherheit bei den Rechten des
|
||
entsprechenden Benutzers in der Datei /etc/isdn/isdnlog.users.
|
||
|
||
Wenn der isdnlog mit einem Segmentation-fault oder mit der Meldung
|
||
"Got signal 11" abbricht, dann sollten folgende Schritte durchgefuehrt
|
||
werden, um Debuginformationen zu erlangen, die an die
|
||
"isdnlog@Kool.f.EUnet.de" zu senden sind:
|
||
|
||
Im isdnlog-Verzeichnis
|
||
|
||
make clean
|
||
# Nun im "Makefile" "COPTS = -O3" in "COPTS = -g" aendern
|
||
make install
|
||
|
||
ulimit -c unlimited
|
||
bin/isdnlog "Parameter _ohne_ -D"
|
||
|
||
Die angegebenen Flags (-x, -l oder -m) _muessen_ 2048 enthalten, da sonst
|
||
kein Segmentation-fault auftritt.
|
||
|
||
Wenn ein Segmentation-fault auftritt:
|
||
|
||
gdb bin/isdnlog
|
||
# Im Debugger "where" eingeben.
|
||
|
||
Den _gesamten_ Output an die oben angegebene Adresse senden.
|
||
|
||
|
||
18. Verwendete Dateien
|
||
----------------------
|
||
|
||
Folgende Files werden von diesem System verwendet:
|
||
|
||
/sbin/isdnlog - Das Protokoll-Programm
|
||
/usr/sbin/isdnrep - Das Report-Programm
|
||
/usr/sbin/isdnconf - Das Konfigurationstool
|
||
/etc/isdn/isdnlog.conf - Die alte Config-Datei
|
||
/etc/isdn/isdn.conf - Die neue Config-Datei
|
||
~/.isdn - Die Config-Datei des Benutzers
|
||
/etc/isdn/isdnlog.users - Die User-Access-Datei
|
||
/etc/isdn/avon - altes Vorwahl-Verzeichnis (ASCII)
|
||
/etc/isdn/avon.pag - altes Vorwahl-Verzeichnis (ISAM-Version)
|
||
/etc/isdn/avon.dir - altes Vorwahl-Verzeichnis (Index)
|
||
/etc/isdn/charge.dat - Zwischenspeicher fuer die ChargeMax-Funktion
|
||
/etc/isdn/reload - Script zum Wiederanfahren eines verklemmten i4l
|
||
/etc/isdn/stop - Script zum Stoppen bei erreichen von CHARGEMAX
|
||
/usr/lib/areacode - Neues Vorwahl-Verzeichnis
|
||
/var/log/isdn.log - Das Logbuch
|
||
/var/run/isdnlog.pid - Enthaelt die PID des laufenden isdnlog
|
||
/dev/isdnctrl0 - Gibt das Q.931 Protokoll des Teles-Treibers aus
|
||
/dev/isdninfo - Interne Meldungen von isdn4linux
|
||
/tmp/isdnctrl0 - Protokoll obiger Devices als ASCII-Datei
|
||
/usr/X11R6/lib/X11/app-defaults/Isdn - Resourcefile fuer xisdn
|
||
|
||
|
||
19. Verwendete Environment-Variablen
|
||
------------------------------------
|
||
|
||
Folgende Environment-Variablen werden von diesem System verwendet:
|
||
|
||
$ISDNLOG = Verzeichnis, in dem sich die Konfigurations-Dateien
|
||
befinden (z.b. "export ISDN_CONF_PATH=/etc/isdn")
|
||
|
||
$XENVIRONMENT = Vollstaendiger Pfad der Resourcen-Datei fuer den
|
||
X-Client "xisdn"
|
||
|
||
|
||
20. Verwendete Abkuerzungen
|
||
---------------------------
|
||
|
||
VSt = Vermittlungsstelle (das Amt)
|
||
|
||
AOCD = Advice of Charge during call
|
||
(Gebuehreninfo waehrend der Verbindung == Gebuehreninfo A)
|
||
|
||
AOCE = Advice of Charge at end of call
|
||
(Gebuehreninfo am Ende der Verbindung)
|
||
|
||
Q.931 = Das von der ITU genormte Protokoll auf dem D-Kanal
|
||
|
||
D-Kanal = Der Steuerungskanal im ISDN
|
||
|
||
B-Kanal = Der Datenkanal im ISDN
|
||
|
||
tei = Terminal Endpoint Identifier
|
||
|
||
Gegner = Eine Gegenstelle
|
||
|
||
MSN = Multiple subscriber number (Telefonnummer)
|
||
|
||
E-DSS1 = Das Euro-ISDN-Protokoll
|
||
|
||
1TR6 = Das nationale ISDN-Protokoll
|
||
|
||
SI = Service-Indicator (Dienstkennung)
|
||
|
||
CLIP = Calling Line Identification Presentation
|
||
|
||
CLIR = Calling Line Identification Restriction
|
||
|
||
COLP = Connected Line Identification Presentation
|
||
|
||
COLR = Connected Line Identification Restriction
|
||
|
||
|
||
21. Danksagung
|
||
--------------
|
||
|
||
Bedanken moechte ich mich vor allem bei
|
||
Fritz Elfert (fritz@wuemaus.franken.de)
|
||
fuer isdn4linux, sowie
|
||
Jan den Ouden (denouden@groovin.xs4all.nl)
|
||
fuer den Teles-Treiber.
|
||
|
||
Bei
|
||
Beat Doebeli (doebeli@vptt.ch)
|
||
fuer den Einbau jeglicher D-Channel Messages, sowie
|
||
Michael Bongartz (micha@mubo.saar.de)
|
||
fuer die Entdeckung der AOC-D sowie AOC-E Bytes im D-Kannel-Protokoll
|
||
|
||
Bei
|
||
Kai Voelcker (kai@fantaghiro.deceiver.org)
|
||
sowie
|
||
Martin Stover (mstover@Stover.f.EUnet.de)
|
||
und vielen anderen aus der isdn4linux Mailing-Liste fuer ihre Muehen
|
||
beim Testen von isdnlog, staendigen neuen Ideen dafuer sowie
|
||
fuer die unzaehligen Testdaten.
|
||
|
||
Bei
|
||
Karsten Keil (isdn4@temic-ech.spacenet.de)
|
||
fuer die 1TR6 Unterstuetzung von isdnlog, und natuerlich vor allem fuer
|
||
seinen HiSax-Treiber sowie das neue Protokoll zwischen HiSax und isdnlog.
|
||
|
||
Bei
|
||
Jochen Heuer (jogi@planetzork.ping.de)
|
||
fuer seinen Kampf mit den neuen Tarifen der Telekom
|
||
|
||
Bei
|
||
Hardy Buchholz (hardy@Kool.f.EUnet.de)
|
||
der viele Ideen zum CHARGEMAX beigetragen hat
|
||
|
||
Bei
|
||
Ad Aerts (ad@aasup.nl)
|
||
der die Gebuehrenauswertung fuer die Niederlande beigesteuert hat
|
||
|
||
Bei
|
||
Markus Maeder (mmaeder@cyberlink.ch)
|
||
der die Gebuehrenauswertung fuer die Schweiz korrigiert hat
|
||
|
||
Bei
|
||
Markus Leist (markus@hal.dirnet.com)
|
||
fuer die Anbindung an postgres95
|
||
|
||
Sowie bei
|
||
Ullrich von Bassewitz (uz@musoftware.com)
|
||
fuer die "AreaCode" Library (AVON-Verzeichnis)
|
||
|
||
Gar nicht genug danken kann ich Dr.-Ing. Joachim Goeller sowie
|
||
Sebastian Goeller, die mir unzaehlige Informationen zum D-Kanal
|
||
Protokoll geliefert haben.
|
||
|
||
Und natuerlich bei der deutschen Telekom, die mir seit nunmehr zwei Jahren
|
||
falsche (aber von isdnlog erkannte) AOC-E Elemente schickt ;-)
|
||
|
||
Aber ganz besonders bei
|
||
Stefan Luethje (luethje@sl-gw.lake.de)
|
||
von dem sicherlich mittlerweile 50% des isdnlog-Codes bestehen.
|
||
|
||
|
||
Viel Spass mit isdnlog wuenscht
|
||
|
||
Andreas Kool (akool@Kool.f.EUnet.de)
|