ImonC

Aus Neobikers Wiki
Zur Navigation springen Zur Suche springen

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 den capiutils.


Die FLI4L Sourecen 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.

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:

echo "*.*     |/var/log/kernel-info" >> /etc/syslog.conf
kill -1 `cat /var/run/syslogd.pid`

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"
                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"
                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