diff options
-rw-r--r-- | main/kamailio/APKBUILD | 105 | ||||
-rw-r--r-- | main/kamailio/kamailio-3-backslash.patch (renamed from testing/kamailio/kamailio-3-backslash.patch) | 0 | ||||
-rw-r--r-- | main/kamailio/kamailio-backslash.patch | 36 | ||||
-rw-r--r-- | main/kamailio/kamailio.cfg | 56 | ||||
-rw-r--r-- | main/kamailio/kamailio.initd | 2 | ||||
-rw-r--r-- | main/kamailio/kamailio.pre-install | 4 | ||||
-rw-r--r-- | testing/kamailio/APKBUILD | 167 | ||||
-rw-r--r-- | testing/kamailio/kamailio.cfg | 107 | ||||
-rw-r--r-- | testing/kamailio/kamailio.initd | 26 | ||||
-rw-r--r-- | testing/kamailio/kamailio.post-install | 5 | ||||
-rw-r--r-- | testing/kamailio/kamailio.pre-install | 5 |
11 files changed, 101 insertions, 412 deletions
diff --git a/main/kamailio/APKBUILD b/main/kamailio/APKBUILD index 84355bb18a..fe066f4663 100644 --- a/main/kamailio/APKBUILD +++ b/main/kamailio/APKBUILD @@ -1,33 +1,54 @@ # Contributor: Michael Mason <ms13sp@gmail.com> # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=kamailio -pkgver=1.5.4 -pkgrel=1 +pkgver=3.0.2 +pkgrel=4 pkgdesc="Open Source SIP Server" url="http://www.kamailio.org/" pkgusers="kamailio" pkggroups="kamailio" license="GPL" depends= -makedepends="bison flex expat-dev postgresql-dev mysql-dev pcre-dev +makedepends="bison flex expat-dev postgresql-dev pcre-dev mysql-dev libxml2-dev curl-dev unixodbc-dev confuse-dev" -install="$pkgname.pre-install $pkgname.post-install" -subpackages="$pkgname-doc $pkgname-mysql $pkgname-postgres $pkgname-pcre - $pkgname-presence $pkgname-mediaproxy $pkgname-unixodbc" -source="http://www.kamailio.org/pub/kamailio/$pkgver/src/$pkgname-$pkgver-notls_src.tar.gz +install= +subpackages="$pkgname-doc $pkgname-postgres $pkgname-presence $pkgname-pcre + $pkgname-mediaproxy $pkgname-unixodbc $pkgname-mysql" +source="http://www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-${pkgver}_src.tar.gz kamailio.cfg kamailio.initd - kamailio-backslash.patch + kamailio.pre-install + kamailio.post-install + kamailio-3-backslash.patch " +_builddir="$srcdir"/$pkgname-$pkgver + + +_default="carrierroute xmlrpc tm" +_presence="presence presence_xml presence_mwi pua pua_bla pua_mi pua_usrloc pua_xmpp rls xcap_client presence_dialoginfo pua_dialoginfo" +_pcre="dialplan lcr regex" +_postgres="db_postgres" +_mysql="db_mysql" +_mediaproxy="mediaproxy" +_odbc="db_unixodbc" +# Makefile does not handle newline +_modules="$_default $_postgres $_mediaproxy $_odbc $_presence $_mysql $_pcre" + + prepare() { - cd "$srcdir/$pkgname-$pkgver-notls" - patch -p1 -i "$srcdir"/kamailio-backslash.patch || return 1 + cd "$_builddir" + patch -p1 -i "$srcdir"/kamailio-3-backslash.patch || return 1 - sed -i -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \ - -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' Makefile.defs \ + sed -i \ + -e "s:-O9 -funroll-loops:$CFLAGS:g" \ + Makefile.defs \ || return 1 - cd scripts + +# -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \ +# -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' \ + + cd utils/kamctl/ sed -i -e 's:/var/run/kamailio.pid:/var/run/kamailio/kamailio.pid:g' \ kamctl.base kamctlrc || return 1 # we actually dont need bash @@ -37,32 +58,37 @@ prepare() { cd dbtext/kamailio sed -i -e 's:email_address(string):email_address(string,null):' subscriber \ || return 1 + } build() { - cd "$srcdir/$pkgname-$pkgver-notls" - make prefix=/usr \ - cfg-dir=/etc/kamailio/ \ + cd "$_builddir" + + # workaround parallel build issue + make -C lib/kcore strcommon.o || return 1 + + make LOCALBASE=/usr \ + cfg_target=/etc/kamailio/ \ MODS_MYSQL=yes \ MODS_PCRE=yes \ - MODS_PRESENCE=yes \ MODS_RADIUS= \ TLS= \ - include_modules="db_postgres mediaproxy db_unixodbc carrierroute" \ + include_modules="$_modules" \ all || return 1 } package() { - cd "$srcdir/$pkgname-$pkgver-notls" - make prefix=/usr \ - cfg-dir=/etc/kamailio/ \ + cd "$_builddir" + make LOCALBASE=/usr \ + cfg_target=/etc/kamailio/ \ MODS_MYSQL=yes \ MODS_PCRE=yes \ - MODS_PRESENCE=yes \ MODS_RADIUS= \ TLS= \ - include_modules="db_postgres mediaproxy db_unixodbc carrierroute" \ - basedir="$pkgdir" install || return 1 + include_modules="$_modules" \ + basedir="$pkgdir" \ + cfg_prefix="$pkgdir" \ + install || return 1 # move default config to -doc package and use our own default config @@ -83,6 +109,14 @@ _mv_mod() { done } +_mv_mod_k() { + local moddir=usr/lib/kamailio/modules_k i= + mkdir -p "$subpkgdir"/$moddir + for i in $@; do + mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1 + done +} + mysql() { pkgdesc="MySQL support for kamailio" @@ -104,29 +138,30 @@ postgres() { pcre() { pkgdesc="Regular expressions support for kamailio" - _mv_mod dialplan lcr regex + _mv_mod dialplan lcr + _mv_mod_k regex } presence() { - pkgdesc="Precense support for kamailio" - _mv_mod presence presence_xml presence_mwi pua pua_bla pua_mi \ - pua_usrloc pua_xmpp rls xcap_client presence_dialoginfo \ - pua_dialoginfo + pkgdesc="Presence support for kamailio" + _mv_mod_k $_presence } mediaproxy() { pkgdesc="Mediaproxy support for kamailio" depends="kamailio" - _mv_mod mediaproxy + _mv_mod $_mediaproxy } unixodbc() { pkgdesc="UnixODBC support for kamailio" depends="kamailio" - _mv_mod db_unixodbc + _mv_mod_k $_odbc } -md5sums="127233aff2f20566b54f84555602132d kamailio-1.5.4-notls_src.tar.gz -eb665248ee39cf755a247286affc5cbb kamailio.cfg -8ac6c260f090aea0ca344f18f9a2a904 kamailio.initd -3259980a45d9ad3fc6fca83414021d07 kamailio-backslash.patch" +md5sums="dd039e078a77032a423fb15f9685ad31 kamailio-3.0.2_src.tar.gz +a3c959ec568c43a905710e7d25cd8c25 kamailio.cfg +81100c479890a2a8c2628db22fdd1a0c kamailio.initd +c646af2dd31f5c4289a2f802c873d98f kamailio.pre-install +3fbaf633ff1620d0d526fc4047c7bed9 kamailio.post-install +36f81be3a082a81497e261ac8e6c5414 kamailio-3-backslash.patch" diff --git a/testing/kamailio/kamailio-3-backslash.patch b/main/kamailio/kamailio-3-backslash.patch index f132aebab4..f132aebab4 100644 --- a/testing/kamailio/kamailio-3-backslash.patch +++ b/main/kamailio/kamailio-3-backslash.patch diff --git a/main/kamailio/kamailio-backslash.patch b/main/kamailio/kamailio-backslash.patch deleted file mode 100644 index 9cc6036895..0000000000 --- a/main/kamailio/kamailio-backslash.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/scripts/kamdbctl.base b/scripts/kamdbctl.base -index 83f5a8a..5b640be 100644 ---- a/scripts/kamdbctl.base -+++ b/scripts/kamdbctl.base -@@ -32,13 +32,13 @@ INSTALL_PRESENCE_TABLES=${INSTALL_PRESENCE_TABLES:-ask} - - # Used by dbtext and db_berkeley to define tables to be created, used by - # postgres to do the grants --STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases lcr domain grp -- uri speed_dial gw pdt subscriber location re_grp trusted -- address missed_calls usr_preferences aliases silo dialog -+STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases lcr domain grp \ -+ uri speed_dial gw pdt subscriber location re_grp trusted \ -+ address missed_calls usr_preferences aliases silo dialog \ - dispatcher dialplan} --EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy carrierroute -+EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy carrierroute \ - carrier_name domain_name carrierfailureroute userblacklist globalblacklist htable purplemap} --PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap -+PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap \ - pua rls_presentity rls_watchers} - - # SQL definitions -@@ -61,9 +61,9 @@ GREP=${GREP:-grep} - SED=${SED:-sed} - - # define what modules should be installed --STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group permissions -- registrar usrloc msilo alias_db uri_db -- speeddial avpops auth_db pdt dialog dispatcher -+STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group permissions \ -+ registrar usrloc msilo alias_db uri_db \ -+ speeddial avpops auth_db pdt dialog dispatcher \ - dialplan} - EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute userblacklist htable purple} - diff --git a/main/kamailio/kamailio.cfg b/main/kamailio/kamailio.cfg index 9c101a871f..1558cce9ca 100644 --- a/main/kamailio/kamailio.cfg +++ b/main/kamailio/kamailio.cfg @@ -1,34 +1,39 @@ -# Demonstration Kamailio Configuration for AlpineLinux - +# Sample Kamailio Configuration +# 23 June 2010 - For Alpine Linux +# Accepts all registrations; routes calls to any registered AOR #-------------------------------------------------------- # Section 1: Global Definitions #-------------------------------------------------------- -debug = 3 +debug = 2 fork = yes log_stderror = no -listen = 0.0.0.0 +# listen = 0.0.0.0 port = 5060 children = 4 dns = no rev_dns = no -mpath = "/usr/lib/kamailio/modules/" +mpath = "/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/" + #-------------------------------------------------------- # Section 2: Modules #-------------------------------------------------------- -loadmodule "sl.so" loadmodule "tm.so" +loadmodule "sl.so" +loadmodule "tmx.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "mi_fifo.so" +loadmodule "pv.so" +loadmodule "xlog.so" #-------------------------------------------------------- -# Section 1: Module Configuration +# Section 3: Module Configuration #-------------------------------------------------------- modparam ( "usrloc", "db_mode", 0 ) @@ -36,26 +41,30 @@ modparam ( "rr", "enable_full_lr", 1 ) modparam ( "mi_fifo", "fifo_name", "/tmp/kamailio_fifo") #-------------------------------------------------------- -# Section 1: Main Route Block +# Section 4: Main Route Block #-------------------------------------------------------- route - { + { + # Uncomment next line if you want to see + # each incoming message + xlog( "L_INFO", "$rm: $fu -> $ru" ); + if (!mf_process_maxfwd_header("10")) { sl_send_reply("483", "Too Many Hops"); return; } - - if (msg:len > max_len) + + if (msg:len > 4096) { - sl_send_reply("513", "Message Overflow"); + sl_send_reply("513", "Message too big" ); return; } if (method == "REGISTER" ) { - route(2); + route(REGISTER); return; } @@ -66,42 +75,33 @@ route return; } - route(1); + route(RELAY); } #-------------------------------------------------------- -# Section 1: Secondary Route Blocks +# Section 5: Secondary Route Blocks #-------------------------------------------------------- # - Default message handler -route[1] { +route[RELAY] { if (!t_relay()) { sl_reply_error(); } } #- Registration Request -route[2] { +route[REGISTER] { if (!save("location")) { sl_reply_error(); } } #-------------------------------------------------------- -# Section 1: Reply Route Block +# Section 6: Reply Route Block #-------------------------------------------------------- #-------------------------------------------------------- -# Section 1: Failure Route Block +# Section 7: Failure Route Block #-------------------------------------------------------- - - - - - - - - - diff --git a/main/kamailio/kamailio.initd b/main/kamailio/kamailio.initd index a70b1781e8..ee4e2ecef1 100644 --- a/main/kamailio/kamailio.initd +++ b/main/kamailio/kamailio.initd @@ -4,7 +4,7 @@ daemon=/usr/sbin/kamailio pidfile=/var/run/kamailio/kamailio.pid depend() { - need net logger + need net after firewall } diff --git a/main/kamailio/kamailio.pre-install b/main/kamailio/kamailio.pre-install index f0ed06b7fa..78dfa38bf3 100644 --- a/main/kamailio/kamailio.pre-install +++ b/main/kamailio/kamailio.pre-install @@ -1,5 +1,5 @@ #!/bin/sh -addgroup kamailio 2>/dev/null -adduser -G kamailio -h /var/run/kamailio -s /bin/false -S -D -H kamailio 2>/dev/null +adduser -H -h /var/empty -s /bin/false -D kamailio 2>/dev/null + exit 0 diff --git a/testing/kamailio/APKBUILD b/testing/kamailio/APKBUILD deleted file mode 100644 index fe066f4663..0000000000 --- a/testing/kamailio/APKBUILD +++ /dev/null @@ -1,167 +0,0 @@ -# Contributor: Michael Mason <ms13sp@gmail.com> -# Maintainer: Natanael Copa <ncopa@alpinelinux.org> -pkgname=kamailio -pkgver=3.0.2 -pkgrel=4 -pkgdesc="Open Source SIP Server" -url="http://www.kamailio.org/" -pkgusers="kamailio" -pkggroups="kamailio" -license="GPL" -depends= -makedepends="bison flex expat-dev postgresql-dev pcre-dev mysql-dev - libxml2-dev curl-dev unixodbc-dev confuse-dev" -install= -subpackages="$pkgname-doc $pkgname-postgres $pkgname-presence $pkgname-pcre - $pkgname-mediaproxy $pkgname-unixodbc $pkgname-mysql" -source="http://www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-${pkgver}_src.tar.gz - kamailio.cfg - kamailio.initd - kamailio.pre-install - kamailio.post-install - kamailio-3-backslash.patch - " - -_builddir="$srcdir"/$pkgname-$pkgver - - -_default="carrierroute xmlrpc tm" -_presence="presence presence_xml presence_mwi pua pua_bla pua_mi pua_usrloc pua_xmpp rls xcap_client presence_dialoginfo pua_dialoginfo" -_pcre="dialplan lcr regex" -_postgres="db_postgres" -_mysql="db_mysql" -_mediaproxy="mediaproxy" -_odbc="db_unixodbc" -# Makefile does not handle newline -_modules="$_default $_postgres $_mediaproxy $_odbc $_presence $_mysql $_pcre" - - -prepare() { - cd "$_builddir" - patch -p1 -i "$srcdir"/kamailio-3-backslash.patch || return 1 - - sed -i \ - -e "s:-O9 -funroll-loops:$CFLAGS:g" \ - Makefile.defs \ - || return 1 - -# -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \ -# -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' \ - - cd utils/kamctl/ - sed -i -e 's:/var/run/kamailio.pid:/var/run/kamailio/kamailio.pid:g' \ - kamctl.base kamctlrc || return 1 - # we actually dont need bash - sed -i -e 's:/bin/bash:/bin/sh:' kamctl kamdbctl \ - || return 1 - # Set email_address field as not required field (could be null) - cd dbtext/kamailio - sed -i -e 's:email_address(string):email_address(string,null):' subscriber \ - || return 1 - -} - -build() { - cd "$_builddir" - - # workaround parallel build issue - make -C lib/kcore strcommon.o || return 1 - - make LOCALBASE=/usr \ - cfg_target=/etc/kamailio/ \ - MODS_MYSQL=yes \ - MODS_PCRE=yes \ - MODS_RADIUS= \ - TLS= \ - include_modules="$_modules" \ - all || return 1 -} - -package() { - cd "$_builddir" - make LOCALBASE=/usr \ - cfg_target=/etc/kamailio/ \ - MODS_MYSQL=yes \ - MODS_PCRE=yes \ - MODS_RADIUS= \ - TLS= \ - include_modules="$_modules" \ - basedir="$pkgdir" \ - cfg_prefix="$pkgdir" \ - install || return 1 - - # move default config to -doc package and use our own default config - - mv "$pkgdir"/etc/kamailio/kamailio.cfg \ - "$pkgdir"/usr/share/doc/kamailio/ - install -m644 -D "$srcdir"/kamailio.cfg \ - "$pkgdir"/etc/kamailio/kamailio.cfg - - install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname - install -d -o kamailio "$pkgdir"/var/run/kamailio -} - -_mv_mod() { - local moddir=usr/lib/kamailio/modules i= - mkdir -p "$subpkgdir"/$moddir - for i in $@; do - mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1 - done -} - -_mv_mod_k() { - local moddir=usr/lib/kamailio/modules_k i= - mkdir -p "$subpkgdir"/$moddir - for i in $@; do - mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1 - done -} - - -mysql() { - pkgdesc="MySQL support for kamailio" - depends="kamailio mysql-client" - _mv_mod db_mysql - mkdir -p "$subpkgdir"/usr/share/kamailio - mv "$pkgdir"/usr/share/kamailio/mysql \ - "$subpkgdir"/usr/share/kamailio/ -} - -postgres() { - pkgdesc="PostgreSQL support for kamailio" - depends="kamailio postgresql-client" - _mv_mod db_postgres - mkdir -p "$subpkgdir"/usr/share/kamailio - mv "$pkgdir"/usr/share/kamailio/postgres \ - "$subpkgdir"/usr/share/kamailio/ -} - -pcre() { - pkgdesc="Regular expressions support for kamailio" - _mv_mod dialplan lcr - _mv_mod_k regex -} - -presence() { - pkgdesc="Presence support for kamailio" - _mv_mod_k $_presence -} - -mediaproxy() { - pkgdesc="Mediaproxy support for kamailio" - depends="kamailio" - _mv_mod $_mediaproxy -} - -unixodbc() { - pkgdesc="UnixODBC support for kamailio" - depends="kamailio" - _mv_mod_k $_odbc -} - -md5sums="dd039e078a77032a423fb15f9685ad31 kamailio-3.0.2_src.tar.gz -a3c959ec568c43a905710e7d25cd8c25 kamailio.cfg -81100c479890a2a8c2628db22fdd1a0c kamailio.initd -c646af2dd31f5c4289a2f802c873d98f kamailio.pre-install -3fbaf633ff1620d0d526fc4047c7bed9 kamailio.post-install -36f81be3a082a81497e261ac8e6c5414 kamailio-3-backslash.patch" diff --git a/testing/kamailio/kamailio.cfg b/testing/kamailio/kamailio.cfg deleted file mode 100644 index 1558cce9ca..0000000000 --- a/testing/kamailio/kamailio.cfg +++ /dev/null @@ -1,107 +0,0 @@ -# Sample Kamailio Configuration -# 23 June 2010 - For Alpine Linux -# Accepts all registrations; routes calls to any registered AOR - -#-------------------------------------------------------- -# Section 1: Global Definitions -#-------------------------------------------------------- -debug = 2 -fork = yes -log_stderror = no -# listen = 0.0.0.0 -port = 5060 -children = 4 - -dns = no -rev_dns = no - -mpath = "/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/" - -#-------------------------------------------------------- -# Section 2: Modules -#-------------------------------------------------------- - -loadmodule "tm.so" -loadmodule "sl.so" -loadmodule "tmx.so" -loadmodule "rr.so" -loadmodule "maxfwd.so" -loadmodule "usrloc.so" -loadmodule "registrar.so" -loadmodule "mi_fifo.so" -loadmodule "pv.so" -loadmodule "xlog.so" - -#-------------------------------------------------------- -# Section 3: Module Configuration -#-------------------------------------------------------- - -modparam ( "usrloc", "db_mode", 0 ) -modparam ( "rr", "enable_full_lr", 1 ) -modparam ( "mi_fifo", "fifo_name", "/tmp/kamailio_fifo") - -#-------------------------------------------------------- -# Section 4: Main Route Block -#-------------------------------------------------------- - -route - { - # Uncomment next line if you want to see - # each incoming message - xlog( "L_INFO", "$rm: $fu -> $ru" ); - - if (!mf_process_maxfwd_header("10")) - { - sl_send_reply("483", "Too Many Hops"); - return; - } - - if (msg:len > 4096) - { - sl_send_reply("513", "Message too big" ); - return; - } - - if (method == "REGISTER" ) - { - route(REGISTER); - return; - } - - loose_route(); - - if (!lookup("location")) { - sl_send_reply("404", "User Not Found"); - return; - } - - route(RELAY); - -} -#-------------------------------------------------------- -# Section 5: Secondary Route Blocks -#-------------------------------------------------------- - -# - Default message handler -route[RELAY] { - if (!t_relay()) { - sl_reply_error(); - } -} - -#- Registration Request -route[REGISTER] { - if (!save("location")) { - sl_reply_error(); - } -} - -#-------------------------------------------------------- -# Section 6: Reply Route Block -#-------------------------------------------------------- - - -#-------------------------------------------------------- -# Section 7: Failure Route Block -#-------------------------------------------------------- - diff --git a/testing/kamailio/kamailio.initd b/testing/kamailio/kamailio.initd deleted file mode 100644 index ee4e2ecef1..0000000000 --- a/testing/kamailio/kamailio.initd +++ /dev/null @@ -1,26 +0,0 @@ -#!/sbin/runscript - -daemon=/usr/sbin/kamailio -pidfile=/var/run/kamailio/kamailio.pid - -depend() { - need net - after firewall -} - -start() { - ebegin "Starting Kamailio" - start-stop-daemon --start --quiet --pidfile $pidfile --exec $daemon \ - -- \ - -u ${KAMAILIO_USER:-kamailio} \ - -g ${KAMAILIO_GROUP:-kamailio} \ - -P $pidfile \ - ${KAMAILIO_OPTS:-} - eend $? -} - -stop() { - ebegin "Stopping Kamailio" - start-stop-daemon --stop --quiet --pidfile $pidfile - eend $? -} diff --git a/testing/kamailio/kamailio.post-install b/testing/kamailio/kamailio.post-install deleted file mode 100644 index 19fc932dd6..0000000000 --- a/testing/kamailio/kamailio.post-install +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -chown -R kamailio:kamailio /var/run/kamailio -chgrp kamailio /etc/kamailio/kamailio.cfg -exit 0 diff --git a/testing/kamailio/kamailio.pre-install b/testing/kamailio/kamailio.pre-install deleted file mode 100644 index 78dfa38bf3..0000000000 --- a/testing/kamailio/kamailio.pre-install +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -adduser -H -h /var/empty -s /bin/false -D kamailio 2>/dev/null - -exit 0 |