summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-01-19 13:26:55 +0000
committerLennart Poettering <lennart@poettering.net>2004-01-19 13:26:55 +0000
commite4c3dc5c0d1dc9cdd47fdb4ffb1ac49b9b768e5b (patch)
tree1517947448ad0dc962770f5636efb1a520ded994
parent2db4e16e39a91180dae55014176b20efa0b0c686 (diff)
prelimernary documentation
git-svn-id: file:///home/lennart/svn/public/ivam2/trunk@42 dbf6933d-3bce-0310-9bcc-ed052ba35b35
-rw-r--r--Makefile.am4
-rw-r--r--conf/msntab10
-rw-r--r--configure.ac2
-rw-r--r--doc/Makefile.am21
-rw-r--r--doc/README13
-rw-r--r--doc/README.html.in212
-rw-r--r--doc/style.css32
-rw-r--r--man/Makefile.am48
-rw-r--r--man/ivamd.8.xml.in184
-rw-r--r--man/msntab.5.xml.in199
-rw-r--r--man/xmltoman.css30
-rw-r--r--man/xmltoman.dtd39
-rw-r--r--man/xmltoman.xsl120
13 files changed, 892 insertions, 22 deletions
diff --git a/Makefile.am b/Makefile.am
index 1990d86..5022d99 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,14 +17,14 @@
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
EXTRA_DIST = bootstrap.sh README LICENSE
-SUBDIRS=src clients ulaw conf doc
+SUBDIRS=src clients ulaw conf doc man
MAINTAINERCLEANFILES = README
noinst_DATA = README
README:
rm -f README
-# $(MAKE) -C doc README
+ $(MAKE) -C doc README
cd $(srcdir) && ln -s doc/README README
homepage: dist
diff --git a/conf/msntab b/conf/msntab
index 4b063d3..0cfda89 100644
--- a/conf/msntab
+++ b/conf/msntab
@@ -17,7 +17,11 @@
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-# The MSNs are matched with standard POSIX shell globbing.
+# The MSNs are matched with an extended POSIX shell glob matcher based
+# on fnmatch(3). The extension is: you may specifiy more than one glob
+# expression separated by commas ore semicolons. If you specify a
+# tilde as first character regular expression matching (see regexec(3)
+# for more information) is used instead.
# The options defined are:
# rings=n -> specify after how many rings a call should be accepted
@@ -33,8 +37,8 @@
# If no line matches, the call is ignored.
-# local MSN remote MSN options action
-* * rings=8,pipehack ivam-autobox
+# local MSN remote MSN options action
+* * rings=8,pipehack ivam-autobox
# Some more examples
diff --git a/configure.ac b/configure.ac
index 382db92..a310c3c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -178,5 +178,5 @@ fi
AM_CONDITIONAL([USE_GENGETOPT], [test "x$gengetopt" = xyes])
-AC_CONFIG_FILES([Makefile src/Makefile clients/Makefile ulaw/Makefile doc/Makefile conf/Makefile])
+AC_CONFIG_FILES([Makefile src/Makefile clients/Makefile ulaw/Makefile doc/Makefile conf/Makefile doc/README.html man/Makefile])
AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 34fa300..8a8f63f 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,5 @@
# $Id$
-#
+
# This file is part of ivam2.
#
# ivam2 is free software; you can redistribute it and/or modify it
@@ -16,6 +16,21 @@
# along with ivam2; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-pkgdata_DATA = README.VoiceBox
+noinst_DATA = README.html README
+EXTRA_DIST = $(noinst_DATA) style.css README.html.in README.VoiceBox REQUIREMENTS TODO
+
+MAINTAINERCLEANFILES = README README.html
+CLEANFILES =
+
+if USE_LYNX
+README: README.html
+ lynx --dump $^ | sed 's,file://localhost/.*/doc/README.html,README,' > $@
+
+CLEANFILES += README
+endif
+
+tidy: README.html
+ tidy -e < README.html
+
+.PHONY: tidy
-EXTRA_DIST = README README.VoiceBox TODO REQUIREMENTS
diff --git a/doc/README b/doc/README
deleted file mode 100644
index 65f09a2..0000000
--- a/doc/README
+++ /dev/null
@@ -1,13 +0,0 @@
-Not much yet
-
-Quick installation HOWTO:
-
- - Install the requirements
- - ./configure && make && make install in the ivam directory
- - create a user and a group "ivam"
- - create a directory /var/spool/ivam2 and make "ivam:ivam" the owner of that directory
- - edit /etc/ivam2/msntab
- - create some links in /etc/rc?.d for the ivam2 init script
- - reboot or run "/etc/init.d/ivam2 start"
-
-$Id$
diff --git a/doc/README.html.in b/doc/README.html.in
new file mode 100644
index 0000000..1128784
--- /dev/null
+++ b/doc/README.html.in
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<title>ivam2 @PACKAGE_VERSION@</title>
+<link rel="stylesheet" type="text/css" href="style.css" />
+</head>
+
+<body>
+<h1><a name="top">ivam2 @PACKAGE_VERSION@</a></h1>
+
+<p><i>Copyright 2003,2004 Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;</i></p>
+
+<ul class="toc">
+ <li><a href="#license">License</a></li>
+ <li><a href="#news">News</a></li>
+ <li><a href="#overview">Overview</a></li>
+ <li><a href="#status">Status</a></li>
+ <li><a href="#documentation">Documentation</a></li>
+ <li><a href="#requirements">Requirements</a></li>
+ <li><a href="#installation">Installation</a></li>
+ <li><a href="#acks">Acknowledgements</a></li>
+ <li><a href="#download">Download</a></li>
+</ul>
+
+<h2><a name="license">License</a></h2>
+
+<p>This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.</p>
+
+<p>This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.</p>
+
+<p>You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</p>
+
+<h2><a name="news">News</a></h2>
+
+<div class="news-date">Sun Jan 11 2004: </div>
+
+<p class="news-text"><a href="@PACKAGE_URL@ivam2-0.1.tar.gz">Version 0.1</a> released, the initial release</p>
+
+<h2><a name="overview">Overview</a></h2>
+
+<p><tt>ivam2</tt> is an automatic phone answering machine software for ISDN
+and Linux. It is the completely rewritten successor of <a
+href="http://ivam.sf.net/">ivam</a> featuring many additions.</p>
+
+<p><tt>ivam2</tt> is seperated in two parts: the core daemon written
+in C and the automate logic coded in <a
+href="http://www.python.org/">Python</a>. The latter is pluggable and
+may be replaced by different implementations on a per phone number
+basis (both caller and callee). This makes <tt>ivam2</tt> a very
+powerful application server for telephony services. The software is
+very scalable, multiple ISDN channels may be controlled from a single
+daemon. To write telephony applications for <tt>ivam2</tt> is not
+complicated. In fact, they are simple executables which read audio
+data of the caller from STDIN and write audio data for the caller to
+STDOUT. DTMF sequences may be read from a FIFO special file. A
+framework for writing telephony applications in Python is provided, a
+simple answering machine script based on this framework as well. You
+are free to write applications in other languages such as Perl or
+C.</p>
+
+<h2><a name="status">Status</a></h2>
+
+<p>Version @PACKAGE_VERSION@ is more or less stable and feature complete.</p>
+
+<h2><a name="documentation">Documentation</a></h2>
+
+<p>Have a look on the man pages <a href="@PACKAGE_URL@ivamd.8.xml"><tt>ivamd(8)</tt></a>, <a href="@PACKAGE_URL@ivam2.conf.xml"><tt>ivam2.conf(5)</tt></a>, <a href="@PACKAGE_URL@msntab"><tt>msntab(5)</tt></a>, <a href="@PACKAGE_URL@ivam-autobox.1.xml"><tt>ivam-autobox(1)</tt></a>, <a href="@PACKAGE_URL@ivam-voicebox.1.xml"><tt>ivam-voicebox(1)</tt></a>, <a href="@PACKAGE_URL@ivam-echo.1.xml"><tt>ivam-echo(1)</tt></a>, <a href="@PACKAGE_URL@ivam-play.1.xml"><tt>ivam-play(1)</tt></a>, <a href="@PACKAGE_URL@ivam-createvb.1.xml"><tt>ivam-createvb(1)</tt></a>, <a href="@PACKAGE_URL@ivam-spool.1.xml"><tt>ivam-spool(5)</tt></a>. (An XSLT capable browser is required)</p>
+
+<p>The core daemon <tt>ivamd</tt> is configured through both the
+command line arguments and the file <tt>msntab</tt>. The latter
+specifies which telephony application to start for which caller/callee
+pairs. An example:</p>
+
+<pre>47110816 * defaults @ignore
+47110815 12345678 defaults @hangup
+47110815 87654321 rings=2 ivam-play /path/to/an/ulaw/file.ulaw.gz
+47110815 47110815 rings=0,pipehack ivam-autobox
+47110815 * rings=8,pipehack ivam-autobox
+</pre>
+
+<p>This configuration can be explained as follows: all calls to the
+local phone number 47110816 are ignored. Calls to the local phone
+number 47110815 are dispatched as follows: if the caller is 87654321,
+he will listen to a static message after two rings. If someone is
+calling the local number from the same number he enters the voice box
+system immediately. All other callers will be dispatched to the voice
+box system after eight rings.</p>
+
+<p>For more information on this configuration file see the manual page <a href="@PACKAGE_URL@msntab.5.xml"><tt>msntab(5)</tt></a>.</p>
+
+<p>The one and only audio format <tt>ivam2</tt> uses is 8 bit uLaw at
+8000Hz. Audio files stored on harddisk are raw sample data without any
+header information. You are free to compress the audio files with
+<tt>gzip</tt> to save some bytes. You can create these files by
+recording them with a telephone and <a
+href="http://0pointer.de/lennart/projects/ivcall/"><tt>ivcall</tt></a>.</p>
+
+<p>Another way to create these files is by using <tt>sox</tt> to convert standard <tt>.wav</tt> files:</p>
+
+<pre>sox foo.wav -t raw -U -b -r 8000 welcome.ulaw</pre>
+
+<p>The distribution of <tt>ivam2</tt> comes with four telephony applications:</p>
+
+<ul>
+ <li><tt>ivam-echo</tt> is a simple (shell) script which writes all incoming
+ audio data back to the caller. This may be used for testing or latency
+ measuring purposes. Internally this is not much more than a simple
+ call to <tt>/bin/cat</tt>.</li>
+
+ <li><tt>ivam-play</tt> is a simple (shell) script which plays the
+ contents of a <tt>.ulaw(.gz)</tt> file to the caller.</li>
+
+ <li><tt>ivam-voicebox</tt> is a voice box application based on the
+ Python framework described above. Audio files are saved in a special
+ spool directory, by default
+ <tt>/var/spool/ivam2/[VOICEBOXNAME]</tt>. Many voice boxes may
+ coexist on the same system and configured individually. The voice
+ box supports recording of messages for unauthenticated users and
+ playback and deletion of messages for authenticates
+ users. Authentication is based on an arbitrary length PIN. When a
+ new voice message arrives a mail (including an Ogg Vorbis encoded version
+ of the voice messages) is sent to the owner of the voice
+ box.</li>
+
+ <li><tt>ivam-autobox</tt> is a more capable version of
+ <tt>ivam-voicebox</tt>. Internally both applications use the same
+ logic. <tt>ivam-autobox</tt> is able to create spool directories
+ <i>on-the-fly</i>. If a phone call to a local phone number has no
+ existent voice box assigned one is automatically created and the
+ administrator is notified.</li>
+
+</ul>
+
+<p>Have a look on the respective manual pages for more information on
+these applications.</p>
+
+<p>The default audio samples for <tt>ivam-voicebox</tt> and
+<tt>ivam-autobox</tt> are in german language as this is my native
+tongue. You probably want to replace them with messages in your own
+language. (<i>I am interested in adding high quality english language
+samples to the distribution. If you are a native speaker and think
+that you are capable of creating them, feel free to contact me.</i>)
+Have a look on the manual page <a
+href="@PACKAGE_URL@ivam-spool.5.xml"><tt>ivam-spool(5)</tt></a> for
+more information how to change the audio samples.</p>
+
+<h2><a name="requirements">Requirements</a></h2>
+
+<p>A current Linux kernel with <a
+href="http://www.isdn4linux.de/">isdn4linux</a> and a compatible and
+configured (active or passive) ISDN card is required.</p>
+
+<p><tt>ivam2</tt> relies on a current version of <a
+href="http://www.python.org/">Python</a>. It was developed on Python
+2.3, but there are user reports that it works on Python 2.2 without
+changes.</p>
+
+<p><tt>ivam2</tt> needs <a
+href="http://0pointer.de/lennart/projects/libdaemon/"><tt>libdaemon</tt></a> (>= 0.4)
+and <a href="http://www.liboop.org/"><tt>liboop</tt></a> (>= 1.0).</p>
+
+<p>If you plan to use the message notification feature of
+<tt>ivam2</tt> you need <tt>metamail</tt>, <tt>sox</tt> and <tt>oggenc</tt>
+installed on the local system.</p>
+
+<h2><a name="installation">Installation</a></h2>
+
+<p>As this package is made with the GNU <tt>autotools</tt> you should
+run <tt>./configure</tt> inside the distribution directory for
+configuring the source tree. After that you should run <tt>make</tt>
+for compilation and <tt>make install</tt> (as root) for installation
+of <tt>ivam2</tt>. A SysV compatible init script is installed to your
+init directory.</p>
+
+<p>After installation of the executables you need to create an user
+<tt>ivam</tt> and a matching group <tt>ivam</tt>. The spool directory
+(by default <tt>/var/spool/ivam2</tt>) has to be created and must be
+owned by <tt>ivam:ivam</tt>.</p>
+
+<p>You should edit the configuration file <tt>msntab</tt> to enable
+the telephony services you want to use.</p>
+
+
+<h2><a name="acks">Acknowledgements</a></h2>
+
+<p>Wolfram Schlich for many suggestions and beta testing.</p>
+
+<h2><a name="download">Download</a></h2>
+
+<p>The newest release is always available from <a href="@PACKAGE_URL@">@PACKAGE_URL@</a></p>
+
+<p>The current release is <a href="@PACKAGE_URL@ivam2-@PACKAGE_VERSION@.tar.gz">@PACKAGE_VERSION@</a></p>
+
+<p>Get <tt>ivam2</tt>'s development sources from the <a href="http://subversion.tigris.org/">Subversion</a> <a href="https://seth.intheinter.net:8081/svn/ivam2/">repository</a>.</p>
+
+<hr/>
+<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, January 2004</address>
+
+<div class="grey"><i>$Id$</i></div>
+
+</body>
+</html>
diff --git a/doc/style.css b/doc/style.css
new file mode 100644
index 0000000..59f2ec6
--- /dev/null
+++ b/doc/style.css
@@ -0,0 +1,32 @@
+/* $Id$ */
+
+/***
+ * This file is part of ivam2.
+ *
+ * ivam2 is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * ivam2 is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with ivam2; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ ***/
+
+body { color: black; background-color: white; margin: 0.5cm; }
+a:link, a:visited { color: #900000; }
+p { margin-left: 0.5cm; margin-right: 0.5cm; }
+div.news-date { margin-left: 0.5cm; font-size: 80%; color: #4f0000; }
+p.news-text { margin-left: 1cm; }
+h1 { color: #00009F; }
+h2 { color: #00009F; }
+h3 { color: #00004F; margin-left: 0.5cm; }
+ul { margin-left: .5cm; }
+ol { margin-left: .5cm; }
+pre { margin-left: .5cm; background-color: #f0f0f0; padding: 0.4cm;}
+.grey { color: #afafaf; }
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 0000000..3e30491
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,48 @@
+# $Id$
+
+# This file is part of ivam2.
+#
+# ivam2 is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# ivam2 is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with ivam2; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+SUFFIXES=.xml .xml.in .8 .5 .8.xml .5.xml
+
+pkgsysconfdir=$(sysconfdir)/@PACKAGE@
+
+man_MANS = ivamd.8 msntab.5
+
+noinst_DATA = ivamd.8.xml msntab.5.xml
+
+EXTRA_DIST = $(man_MANS) ivamd.8.xml.in msntab.5.xml.in xmltoman.css xmltoman.xsl xmltoman.dtd
+
+CLEANFILES = ivamd.8.xml msntab.5.xml
+
+.xml.in.xml: Makefile
+ sed -e 's,@sysconfdir\@,$(sysconfdir),g' \
+ -e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \
+ -e 's,@sbindir\@,$(sbindir),g' \
+ -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
+ -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' $< > $@
+
+if USE_XMLTOMAN
+
+CLEANFILES += $(man_MANS)
+
+.8.xml.8: Makefile
+ xmltoman $< > $@
+
+.5.xml.5: Makefile
+ xmltoman $< > $@
+
+endif
diff --git a/man/ivamd.8.xml.in b/man/ivamd.8.xml.in
new file mode 100644
index 0000000..0b753c5
--- /dev/null
+++ b/man/ivamd.8.xml.in
@@ -0,0 +1,184 @@
+<?xml version="1.0" standalone='no'?>
+<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
+<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>
+
+<!-- $Id$ -->
+
+<!--
+ This file is part of ivam2.
+
+ ivam2 is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ ivam2 is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with ivam2; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+ <manpage name="ivamd" section="8" desc="ISDN Voice Box Answering Machine Daemon">
+
+ <synopsis>
+ <cmd>ivamd [<arg>options</arg>]</cmd>
+ </synopsis>
+
+ <description>
+ <p>ivamd is an application server daemon for telephony
+ applications. It dispatches voice calls to subprocesses
+ according to a routing table msntab.</p>
+ </description>
+
+ <options>
+
+ <option>
+ <p><opt>-n | --no-daemon</opt></p>
+ <optdesc><p>
+ Do not daemonize (for debugging) (default: off)
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-s | --no-syslog</opt></p>
+ <optdesc><p>
+ Do not use syslog, use STDOUT instead (for debugging) (default: off).
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-h | --help</opt></p>
+ <optdesc><p>
+ Show help.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-k | --kill</opt></p>
+ <optdesc><p>
+ Kill a running daemon.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-c | --check-running</opt></p>
+ <optdesc><p>
+ Check if a daemon is running. Sets the return value to 0 if a daemon is already running or to 255 if not.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-v | --version</opt></p>
+ <optdesc><p>
+ Show version
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-C | --channels=</opt><arg>CHANNELS</arg></p>
+ <optdesc><p> Specifies how many ISDN channels to allocate. It
+ should be greater or equal to one. Keep in mind that a
+ standard ISDN card provides access to two distinct b channels
+ only. Unless you have special hardware or more than one ISDN
+ card in a single machine it makes no sense to set this
+ paramater to any value greater than 2. This value specifies
+ how many concurrent connections may be handled. (default:
+ 2)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--msntab=</opt><arg>MSNTABFILE</arg></p>
+ <optdesc><p>Specify another msntab file than the default. (default: @pkgsysconfdir@/msntab)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-L | --listen=</opt><arg>LISTENMSN</arg></p>
+ <optdesc><p> Specifies which local phone numbers ivamd shall
+ listen on. The incoming phone number is matched with shell
+ globbing as described in <manref name="fnmatch"
+ section="3"/> with the extension that you may
+ list more than one phone number seperated by commas or
+ semicolons. (This is described in <manref name="ttyI"
+ section="4"/> for the command AT&amp;L. Before
+ passing the MSNs to the ISDN modem emulation ivamd replaces
+ all occurences of "," to ";". This has certain advantages when
+ passing the options from the bourne shell.) In addition to
+ that you may specify more than one globbing string seperated
+ by colons for different ISDN channels. If you specify fewer
+ globbing strings than allocated channels the last globbing
+ string will be reused for all excessive channels. It is safe
+ to set this option to "*" as you may limit access to your
+ telephony applications with the msntab file in a more powerful
+ way. This option is only useful as "second line of defense" or
+ to assign specific phone numbers to specific
+ channels. (default: *)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-d | --device=</opt><arg>DEVICES</arg></p>
+ <optdesc><p>Specifies the TTY devices to use. You may specify
+ more than one device separated by colons. All devices
+ specified in this option will be opened, regardless of the
+ argument of the -C option. If you specify fewer devices than
+ the requested number of channels, all missing channels will be
+ allocated automatically from the /dev/ttyI pool. The devices
+ specified with this option are opened prior to the automatic
+ usage of the ttyI devices. (default: empty, thus all devices
+ will be allocated from the /dev/ttyI pool.)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--no-drop-root</opt></p>
+ <optdesc><p>If this option is given ivamd will not drop root
+ priviliges and change to ivam:ivam. To stay root is always
+ a bad idea, so don't use this for anything but
+ debugging. (default: off)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--reload</opt></p>
+ <optdesc><p>Send a running daemon a HUP signal, thus causing a msntab reload.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--info</opt></p>
+ <optdesc><p>Send a running daemon an USR1 signal, thus causing it to dump its msntab file to syslog.</p></optdesc>
+ </option>
+
+ </options>
+
+ <section name="Files">
+ <p><file>/var/run/ivamd.pid</file>: the pid file
+ for ivamd.</p>
+ </section>
+
+ <section name="Signals">
+ <p><arg>SIGINT, SIGTERM, SIGQUIT</arg> ivamd will quit. This is issued by passing -k to ivamd.</p>
+ <p><arg>SIGHUP</arg> ivamd will reload the msntab file immediately. Running connection are not interrupted.</p>
+ <p><arg>SIGUSR1</arg> ivamd will print the current contents of the msntab to syslog.</p>
+ </section>
+
+ <section name="Author">
+ <p>ivamd was written by Lennart Poettering
+ &lt;@PACKAGE_BUGREPORT@&gt;. ivamd is available
+ at <url
+ href="@PACKAGE_URL@"/>
+ </p>
+ </section>
+
+ <section name="See also">
+ <p>
+ <manref name="msntab" section="5"/>, <manref name="ivam-voicebox" section="8"/>
+ </p>
+ </section>
+
+ <section name="Comments">
+ <p>This man page was written using <manref name="xmltoman" section="1"
+ href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>
+ </section>
+
+ </manpage>
diff --git a/man/msntab.5.xml.in b/man/msntab.5.xml.in
new file mode 100644
index 0000000..c108a68
--- /dev/null
+++ b/man/msntab.5.xml.in
@@ -0,0 +1,199 @@
+<?xml version="1.0" standalone='no'?> <!--*-nxml-*-->
+<!DOCTYPE manpage SYSTEM "xmltoman.dtd">
+<?xml-stylesheet type="text/xsl" href="xmltoman.xsl" ?>
+
+<!-- $Id$ -->
+
+<!--
+ This file is part of ivam2.
+
+ ivam2 is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ ivam2 is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with ivam2; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+ <manpage name="msntab" section="5" desc="ivam2 MSN Routing Table">
+
+ <synopsis>
+ <cmd>@pkgsysconfdir@/msntab</cmd>
+ </synopsis>
+
+ <description>
+
+ <p>msntab is the phone call routing table for ivam2. For each incoming
+ call the first matching line in the file is used, all others are
+ ignored. Each line consists of four fields: an expression for
+ matching the local phone number, an expression for matching the
+ remote phone number, an option list and an executable file with
+ its arguments which is run for a matching call.</p>
+
+ <p>The phone numbers are matched by the following way: if the
+ first character of the matching expression is not a tilde, the
+ whole expression is matched using an extended version of POSIX
+ shell globbing based on <manref name="fnmatch" section="4"/>:
+ you may specify more than one glob expression seperated by
+ commas or semicolons. If the first character of the matching
+ expression is a tilde the expression from its second character
+ to the end is taken es regular expression and matched with
+ <manref name="regexec" section="4"/>.</p>
+
+ </description>
+
+ <options>
+
+ <option>
+ <p><opt>-n | --no-daemon</opt></p>
+ <optdesc><p>
+ Do not daemonize (for debugging) (default: off)
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-s | --no-syslog</opt></p>
+ <optdesc><p>
+ Do not use syslog, use STDOUT instead (for debugging) (default: off).
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-h | --help</opt></p>
+ <optdesc><p>
+ Show help.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-k | --kill</opt></p>
+ <optdesc><p>
+ Kill a running daemon.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-c | --check-running</opt></p>
+ <optdesc><p>
+ Check if a daemon is running. Sets the return value to 0 if a daemon is already running or to 255 if not.
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-v | --version</opt></p>
+ <optdesc><p>
+ Show version
+ </p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-C | --channels=</opt><arg>CHANNELS</arg></p>
+ <optdesc><p> Specifies how many ISDN channels to allocate. It
+ should be greater or equal to one. Keep in mind that a
+ standard ISDN card provides access to two distinct b channels
+ only. Unless you have special hardware or more than one ISDN
+ card in a single machine it makes no sense to set this
+ paramater to any value greater than 2. This value specifies
+ how many concurrent connections may be handled. (default:
+ 2)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--msntab=</opt><arg>MSNTABFILE</arg></p>
+ <optdesc><p>Specify another msntab file than the default. (default: @pkgsysconfdir@/msntab)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-L | --listen=</opt><arg>LISTENMSN</arg></p>
+ <optdesc><p> Specifies which local phone numbers ivamd shall
+ listen on. The incoming phone number is matched with shell
+ globbing as described in <manref name="fnmatch"
+ section="3">fnmatch</manref> with the extension that you may
+ list more than one phone number seperated by commas or
+ semicolons. (This is described in <manref name="ttyI"
+ section="4">ttyI</manref> for the command AT&amp;L. Before
+ passing the MSNs to the ISDN modem emulation ivamd replaces
+ all occurences of "," to ";". This has certain advantages when
+ passing the options from the bourne shell.) In addition to
+ that you may specify more than one globbing string seperated
+ by colons for different ISDN channels. If you specify fewer
+ globbing strings than allocated channels the last globbing
+ string will be reused for all excessive channels. It is safe
+ to set this option to "*" as you may limit access to your
+ telephony applications with the msntab file in a more powerful
+ way. This option is only useful as "second line of defense" or
+ to assign specific phone numbers to specific
+ channels. (default: *)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>-d | --device=</opt><arg>DEVICES</arg></p>
+ <optdesc><p>Specifies the TTY devices to use. You may specify
+ more than one device separated by colons. All devices
+ specified in this option will be opened, regardless of the
+ argument of the -C option. If you specify fewer devices than
+ the requested number of channels, all missing channels will be
+ allocated automatically from the /dev/ttyI pool. The devices
+ specified with this option are opened prior to the automatic
+ usage of the ttyI devices. (default: empty, thus all devices
+ will be allocated from the /dev/ttyI pool.)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--no-drop-root</opt></p>
+ <optdesc><p>If this option is given ivamd will not drop root
+ priviliges and change to ivam:ivam. To stay root is always
+ a bad idea, so don't use this for anything but
+ debugging. (default: off)</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--reload</opt></p>
+ <optdesc><p>Send a running daemon a HUP signal, thus causing a msntab reload.</p></optdesc>
+ </option>
+
+ <option>
+ <p><opt>--info</opt></p>
+ <optdesc><p>Send a running daemon an USR1 signal, thus causing it to dump its msntab file to syslog.</p></optdesc>
+ </option>
+
+ </options>
+
+ <section name="Files">
+ <p><file>/var/run/ivamd.pid</file>: the pid file
+ for ivamd.</p>
+ </section>
+
+ <section name="Signals">
+ <p><arg>SIGINT, SIGTERM, SIGQUIT</arg> ivamd will quit. This is issued by passing -k to ivamd.</p>
+ <p><arg>SIGHUP</arg> ivamd will reload the msntab file immediately. Running connection are not interrupted.</p>
+ <p><arg>SIGUSR1</arg> ivamd will print the current contents of the msntab to syslog.</p>
+ </section>
+
+ <section name="Author">
+ <p>ivamd was written by Lennart Poettering
+ &lt;@PACKAGE_BUGREPORT@&gt;. ivamd is available
+ at <url
+ href="@PACKAGE_URL@"/>
+ </p>
+ </section>
+
+ <section name="See also">
+ <p>
+ <manref name="msntab" section="5"/>, <manref name="ivam-voicebox" section="8"/>
+ </p>
+ </section>
+
+ <section name="Comments">
+ <p>This man page was written using <manref name="xmltoman" section="1"
+ href="http://masqmail.cx/xml2man/"/> by Oliver Kurth.</p>
+ </section>
+
+ </manpage>
diff --git a/man/xmltoman.css b/man/xmltoman.css
new file mode 100644
index 0000000..0811e82
--- /dev/null
+++ b/man/xmltoman.css
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/***
+ This file is part of ivam2.
+
+ ivam2 is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ ivam2 is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with ivam2; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+***/
+
+body { color: black; background-color: white; margin: 0.5cm; }
+a:link, a:visited { color: #900000; }
+h1 { text-transform:uppercase; font-size: 18pt; color: #00009F; }
+p { margin-left:1cm; margin-right:1cm; }
+.cmd { font-family:monospace; }
+.file { font-family:monospace; }
+.arg { text-transform:uppercase; font-family:monospace; font-style: italic; }
+.opt { font-family:monospace; font-weight: bold; }
+.manref { font-family:monospace; }
+.option .optdesc { margin-left:2cm; }
diff --git a/man/xmltoman.dtd b/man/xmltoman.dtd
new file mode 100644
index 0000000..c6031fb
--- /dev/null
+++ b/man/xmltoman.dtd
@@ -0,0 +1,39 @@
+<!-- $Id$ -->
+
+<!--
+ This file is part of ivam2.
+
+ ivam2 is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ ivam2 is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with ivam2; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+<!ELEMENT manpage (synopsis | description | section | options | seealso)*>
+<!ATTLIST manpage name CDATA #REQUIRED section CDATA #REQUIRED desc CDATA #IMPLIED>
+<!ELEMENT arg (#PCDATA)>
+<!ELEMENT p (#PCDATA | arg | url | manref | opt | file )*>
+<!ELEMENT synopsis (cmd | p)+>
+<!ELEMENT description (p)+>
+<!ELEMENT section (p | option)*>
+<!ATTLIST section name CDATA #REQUIRED>
+<!ELEMENT option (#PCDATA | p | optdesc)*>
+<!ELEMENT optdesc (#PCDATA | p )*>
+<!ELEMENT cmd (#PCDATA | arg)*>
+<!ELEMENT options (p | option)*>
+<!ELEMENT seealso (p)*>
+<!ELEMENT opt (#PCDATA)>
+<!ELEMENT file (#PCDATA)>
+<!ELEMENT manref EMPTY>
+<!ATTLIST manref name CDATA #REQUIRED section CDATA #REQUIRED href CDATA #IMPLIED>
+<!ELEMENT url EMPTY>
+<!ATTLIST url href CDATA #REQUIRED>
diff --git a/man/xmltoman.xsl b/man/xmltoman.xsl
new file mode 100644
index 0000000..2da97be
--- /dev/null
+++ b/man/xmltoman.xsl
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
+
+<!--
+ This file is part of ivam2.
+
+ ivam2 is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ ivam2 is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with ivam2; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+-->
+
+<xsl:template match="/manpage">
+ <xsl:text disable-output-escaping="yes">
+ &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
+ </xsl:text>
+ <html>
+
+ <head>
+ <title>
+ <xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)
+ </title>
+ <link rel="stylesheet" type="text/css" href="xmltoman.css"/>
+ </head>
+ <body>
+ <h1>Name</h1>
+ <p><xsl:value-of select="@name"/>
+ <xsl:if test="string-length(@desc) &gt; 0">
+ - <xsl:value-of select="@desc"/>
+ </xsl:if>
+ </p>
+ <xsl:apply-templates />
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template match="p">
+ <p>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="cmd">
+ <p class="cmd">
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="arg">
+ <span class="arg"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="opt">
+ <span class="opt"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="file">
+ <span class="file"><xsl:apply-templates/></span>
+</xsl:template>
+
+<xsl:template match="optdesc">
+ <div class="optdesc">
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="synopsis">
+ <h1>Synopsis</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="seealso">
+ <h1>Synopsis</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="description">
+ <h1>Description</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="options">
+ <h1>Options</h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="section">
+ <h1><xsl:value-of select="@name"/></h1>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="option">
+ <div class="option"><xsl:apply-templates/></div>
+</xsl:template>
+
+<xsl:template match="manref">
+ <xsl:choose>
+ <xsl:when test="string-length(@href) &gt; 0">
+ <a class="manref"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute><xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)</a>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="manref"><xsl:value-of select="@name"/>(<xsl:value-of select="@section"/>)</span>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="url">
+ <a class="url"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute><xsl:value-of select="@href"/></a>
+</xsl:template>
+
+</xsl:stylesheet>