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.
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#