ImonC
Zur ISDN Anrufsignalisierung verwende ich das Tool ImonC. Dieses benötigt auf dem Server mit der ISDN-Karte die beiden Daemons Imond und Telmond. Die Daemons laufen auf jedem Linux-System mit funktionsfähiger ISDN-Konfiguration, also auch auf Debian mit isdnlog (notwendig zur Anrufsignalisierung mit telmond!).
Hinweis: Bei mir ging die Anrufsignalisierung erst, nachdem ich mit isdnctrl verbose 2 vor Start von telmond den Loglevel erhöht habe. Der wird ansonsten unter Debian erst mit Konfiguration von anderen (ipppx/isdnx) Devices entsprechend erhöht, ansonsten liegt der Defaultmässig zu niedrig und telmond reagiert nicht auf Anrufe - und das obwohl isdnlog schon funktioniert.
Unter LENNY habe ich für telmond ausserdem den Kernel ohne die Option PRINTK_TIME übersetzen müssen, da sonst wegen der geänderten Syntax der Syslog Ausgabe des Kernels die Anrufe nicht mehr erkannt wurden. Besser wäre es hier, telmond die neue Syntax beizubringen...die Variante ging einfach schneller (und ich brauche die Uhrzeit im Mikrosekunden im Logfile nicht!).
Edit: Es gibt dafür die Kernel Option printk.time=0.
Die FLI4L Sourcen laden und entpacken.
mkdir -p /usr/src/fli4l cd /usr/src/fli4l wget http://www.fli4l.de/fileadmin/downloadzaehler.php?file=3.0.2/src.tar.gz tar xvzf src.tar.gz
Im buildroot Verzeichnis kann das Make-System verwendet werden. Alternativ kann man unter src/fli4l/base auch telmond.c und imond.c frei kompilieren. Hier gibt's meine binaries für Debian Etch und Kernel 2.6.
cd src/buildroot make imond telmond cd target/root/usr/local/bin strip * cp * /usr/local/bin
Telmond liest das syslog bei meiner Konfiguration aus einem eigenem File, welches in /etc/syslog.conf definiert wird:
mkfifo /var/log/kernel-info echo "kern.info |/var/log/kernel-info" >> /etc/syslog.conf kill -1 `cat /var/run/syslogd.pid`
Weiterhin werden folgende Konfigurationsfiles benötigt:
/etc/telmond.conf und /etc/imond.conf:
touch /etc/telmond.conf vi /etc/imond.conf Mo-Su 00-24 ippp0 -1:-1 240 yes yes 0193792: Dummy_Eintrag 0.0 1 #Mo-Su 00-24 ippp1 -1:-1 240 no yes 0193792: Tiscali_1,49ct 0.0149 1 #Mo-Su 00-24 ippp2 -1:-1 240 no yes 0191011: T-Online_1,59ct 0.0159 1 #Mo-Su 00-24 ippp3 -1:-1 240 no yes 0191771: Tiscali-8,8ct_+_0,44ct-0,88ct 0.0044 1
Auf Debian verwende ich folgendes Startskript:
/etc/init.d/imond
#!/bin/sh test -f /usr/local/bin/imond || exit 0 test -f /usr/local/bin/telmond || exit 0 START_IMOND='yes' # start imond: yes or no IMOND_PORT='5000' # port (tcp), don't open it to the outside IMOND_PASS='' # imond-password, may be empty IMOND_ADMIN_PASS='adminpw' # imond-admin-password, may be empty IMOND_ENABLE='yes' # accept "enable/disable" commands IMOND_DIAL='yes' # accept "dial/hangup" commands IMOND_ROUTE='yes' # accept "route" command IMOND_REBOOT='no' # accept "reboot" command DIALMODE='off' # standard dialmode: auto, manual, or off TELMOND_PORT='5001' # port (tcp), don't open in INPUT_ACCEPT_PORT_x IMOND_OPT="-port $IMOND_PORT -log-to-syslog /var/log /var/log" TELMOND_OPT="-port $TELMOND_PORT -log-to-syslog -syslog-fifo /var/log/kernel-info /var/log" #------------------------------------------------------------------------ # export some config variables for imond #------------------------------------------------------------------------ export START_IMOND IMOND_PASS IMOND_ADMIN_PASS IMOND_ENABLE IMOND_DIAL export IMOND_ROUTE IMOND_REBOOT DIALMODE echo $IMOND_PORT >/var/run/imond.port echo $TELMOND_PORT >/var/run/telmond.port case "$1" in start) echo -n "Starting imond server: telmond " isdnctrl verbose 2 rm /var/run/imond.pid /var/run/telmond.pid >/dev/null 2>&1 start-stop-daemon --start --quiet --pidfile /var/run/telmond.pid --exec \ /usr/local/bin/telmond -- $TELMOND_OPT while [ "`ps aux|grep -v grep|grep -c telmond`" -le 0 ]; do echo -n "." start-stop-daemon --start --quiet --pidfile /var/run/telmond.pid --exec \ /usr/local/bin/telmond -- $TELMOND_OPT sleep 1 done echo " imond." start-stop-daemon --start --quiet --pidfile /var/run/imond.pid --exec \ /usr/local/bin/imond -- $IMOND_OPT ;; stop) echo -n "Stopping imond server: telmond imond" start-stop-daemon --stop --quiet --pidfile /var/run/imond.pid start-stop-daemon --stop --quiet --pidfile /var/run/telmond.pid rm /var/run/imond.pid /var/run/telmond.pid >/dev/null 2>&1 echo "." ;; restart|force-reload) echo -n "Restarting imond server: stop..." ( start-stop-daemon --stop --quiet --pidfile /var/run/imond.pid start-stop-daemon --stop --quiet --pidfile /var/run/telmond.pid rm /var/run/imond.pid /var/run/telmond.pid >/dev/null 2>&1 ) while [ "`ps aux|grep -v grep|grep -c telmond`" -gt 0 ]; do echo -n "." ( killall -9 telmond >/dev/null 2>&1 ) ( killall -9 imond >/dev/null 2>&1 ) sleep 1 done echo -n " start telmond " isdnctrl verbose 2 start-stop-daemon --start --quiet --pidfile /var/run/telmond.pid --exec \ /usr/local/bin/telmond -- $TELMOND_OPT while [ "`ps aux|grep -v grep|grep -c telmond`" -le 0 ]; do echo -n "." start-stop-daemon --start --quiet --pidfile /var/run/telmond.pid --exec \ /usr/local/bin/telmond -- $TELMOND_OPT sleep 1 done echo -n " imond" start-stop-daemon --start --quiet --pidfile /var/run/imond.pid --exec \ /usr/local/bin/imond -- $IMOND_OPT echo "." ;; *) echo "Usage: /etc/init.d/imond {start|stop|restart|force-reload}" exit 1 ;; esac exit 0
Da ImonC bzw. eigentlich imond mehr kann, habe ich die folgenden FLI4L Dateien ebenfalls nach /usr/local/bin kopiert. Damit kann man bei Bedarf z.B zusätzlich einen ISDN-Kanal nach draussen zu einem weiteren Provider schalten...wenn DSL mal klemmt, geht wenigstens noch ISDN raus.
exchange4linux:/usr/local/bin# l total 192 -rwxr-xr-x 1 root staff 481 2007-01-20 17:41 add-default-route* -rwxr-xr-x 1 root staff 684 2007-01-20 17:41 delete-all-routes* -rwxr-xr-x 1 root staff 161 2007-01-20 17:43 dtou* -rwxr-xr-x 1 root staff 4598 2007-01-20 17:41 fli4lctrl* lrwxrwxrwx 1 root staff 6 2007-01-21 18:00 imond -> imond3* -rwxr-xr-x 1 root staff 47468 2007-01-20 17:45 imond2* -rwxr-xr-x 1 root staff 44852 2007-01-20 17:45 imond3* -rwxr-xr-x 1 root staff 44388 2007-01-20 15:52 imond-dev* lrwxrwxrwx 1 root staff 10 2007-01-20 16:58 imond-send -> imond-stat* -rwxr-xr-x 1 root staff 5048 2007-01-20 15:56 imond-stat* -rwxr-xr-x 1 root staff 1802 2007-01-20 17:43 support.sh* lrwxrwxrwx 1 root staff 8 2007-01-21 18:00 telmond -> telmond3* -rwxr-xr-x 1 root staff 10348 2007-01-20 17:45 telmond2* -rwxr-xr-x 1 root staff 10128 2007-01-21 12:21 telmond3* lrwxrwxrwx 1 root staff 25 2007-01-20 17:23 telmond-send -> /usr/local/bin/imond-stat* exchange4linux:/usr/local/bin#