There is a tutorial posted at
<http://kb.asipto.com/asterisk:realtime:kamailio-3.0.x-asterisk-1.6.2-astdb>
http://kb.asipto.com/asterisk:realtime:kamailio-3.0.x-asterisk-1.6.2-astdb
I am confused. It seems that this tutorial has Asterisk AND Kamailio on the
same physical server. If this is true, why would you do that. I thought the
point was to move Kamailio to a separate server to handle all the SIP
sessions and have Asterisk on another box to handle media, such as
voicemail, IVR's and such.
If I am correct, can someone give guidance on how to integrate if Asterisk
is on a separate server?
Thanks,
Kurt
There is a tutorial posted at
http://kb.asipto.com/asterisk:realtime:kamailio-3.0.x-asterisk-1.6.2-astdb
I am confused. It seems that this tutorial has Asterisk AND Kamailio on the
same physical server. If this is true, why would you do that. I thought the
point was to move Kamailio to a separate server to handle all the SIP
sessions and have Asterisk on another box to handle media, such as
voicemail, IVR's and such.
If I am correct, can someone give guidance on how to integrate if Asterisk
is on a separate server?
Thanks,
Kurt
> This should be a UNIX style path e.g. /tmp/kamailio.fifo The directory
where the fifo is must be writable by the kamailio user.
I thought the line modparam("mi_fifo", "fifo_mode",0666) set the
permissions on the folder/file.
Also, I tried changing the path to /tmp/kamailio.fifo that did not work
either
Please change as below:
> kamctlrc
> ## path to FIFO file
> OSER_FIFO="/tmp/kamailio_fifo"
kamailio.cfg
> # ----- mi_fifo params -----
>modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
I have also tried this. Here is what I am getting.
ERROR: Error opening Kamailio's FIFO /tmp/kamailio_fifo
ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name",
"/tmp/kamailio_fifo")' in your config
ERROR: and also have loaded the mi_fifo module.
Interesting side note:
After the initial installation and reboot, Kamailio came up and was running
and kamctl moni displayed the correct results. However after running
"service kamailio restart" I began getting the error again and have not
been able to clear it.
-----Original Message-----
From: sr-users-bounces(a)lists.sip-router.org
[mailto:sr-users-bounces@lists.sip-router.org] On Behalf Of
sr-users-request(a)lists.sip-router.org
Sent: Monday, December 06, 2010 3:37 AM
To: sr-users(a)lists.sip-router.org
Subject: sr-users Digest, Vol 67, Issue 17
Send sr-users mailing list submissions to
sr-users(a)lists.sip-router.org
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
or, via email, send a message with subject or body 'help' to
sr-users-request(a)lists.sip-router.org
You can reach the person managing the list at
sr-users-owner(a)lists.sip-router.org
When replying, please edit your Subject line so it is more specific than
"Re: Contents of sr-users digest..."
Today's Topics:
1. Re: lcr in 3.1 - no reload without Siremis? (Anders)
2. Error opening Kamailio's FIFO (Kurt Mullen)
3. Re: lcr in 3.1 - no reload without Siremis? (Juha Heinanen)
4. Re: Error opening Kamailio's FIFO (marius zbihlei)
5. Re: Error opening Kamailio's FIFO (Huy Nguyen)
----------------------------------------------------------------------
Message: 1
Date: Sun, 5 Dec 2010 14:32:20 -0500
From: Anders <vaerge(a)gmail.com>
Subject: Re: [SR-Users] lcr in 3.1 - no reload without Siremis?
To: Juha Heinanen <jh(a)tutpro.com>
Cc: sr-users(a)lists.sip-router.org
Message-ID:
<AANLkTimfd8CdXENb+oX6n2YNx54ohbudz8jUraX=yVGy(a)mail.gmail.com>
Content-Type: text/plain; charset=windows-1252
For anyone else who might not be able to find the old `kamctl lcr`-commands,
the alternatives to some can be found here:
http://www.kamailio.org/docs/modules/3.1.x/modules/lcr.html#id2960364
Being able to reload the lcr didn't solve my problem though - still not
finding any gw when I run next_gw(), so I'm still open for input...
On Sat, Dec 4, 2010 at 6:08 PM, Juha Heinanen <jh(a)tutpro.com> wrote:
> Anders writes:
>
>> But I added it manually to the tables, so maybe I needed to load them
>> to memory ? but ?kamctl lcr reload? has been discontinued, so no
>> loading. Is Siremis necessary as the input tool for lcr and gws?
>
> anders,
>
> read what is new in 3.1 wiki page and lcr manual. ?also, ctl help
> knows about lcr ctl commands.
>
> -- juha
>
------------------------------
Message: 2
Date: Sun, 5 Dec 2010 17:40:26 -0600
From: "Kurt Mullen" <kmullen(a)practical-pc.com>
Subject: [SR-Users] Error opening Kamailio's FIFO
To: <users(a)lists.kamailio.org>
Message-ID: <005301cb94d5$cb5a2aa0$620e7fe0$(a)practical-pc.com>
Content-Type: text/plain; charset="us-ascii"
I am getting this error when I try to run kamctl:
ERROR: Error opening Kamailio's FIFO FIFO
ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name",
"FIFO")' in your config
ERROR: and also have loaded the mi_fifo module.
I am able to start Kamailio with Kamailio start
I have poured over all the responses on Google for two days trying to fix
this error. I have tried everything I know of.
I have tried each example.
kamctlrc
DB Path is correct:
# database path used by dbtext or db_berkeley
DB_PATH="/usr/share/kamailio/dbtext"
## control engine: FIFO or UNIXSOCK
## - default FIFO
CTLENGINE="FIFO"
## path to FIFO file
OSER_FIFO="FIFO" (I have already tried commenting this out)
kamailio.cfg
loadmodule "mi_fifo.so"
Path to modules is correct:
mpath="modules_k:modules"
#!else
mpath="/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/"
#!endif
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio.fifo")
modparam("mi_fifo", "fifo_mode",0666)
This is installed on Ubuntu Server 10.10 64 bit Intel .
Can someone please help?
Kurt A. Mullen
Practical PC, LLC
(O) 830.542.4102 x204
(F) 210.767.3912
------------------------------
Message: 4
Date: Mon, 6 Dec 2010 11:28:08 +0200
From: marius zbihlei <marius.zbihlei(a)1and1.ro>
Subject: Re: [SR-Users] Error opening Kamailio's FIFO
To: <sr-users(a)lists.sip-router.org>
Message-ID: <4CFCACA8.4060701(a)1and1.ro>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"
On 12/06/2010 01:40 AM, Kurt Mullen wrote:
Hello,
>
> I am getting this error when I try to run kamctl:
>
> ERROR: Error opening Kamailio's FIFO FIFO
>
> ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name",
> "FIFO")' in your config
>
> ERROR: and also have loaded the mi_fifo module.
>
> I am able to start Kamailio with Kamailio start
>
> I have poured over all the responses on Google for two days trying to
> fix this error. I have tried everything I know of.
>
> I have tried each example.
>
> kamctlrc
>
> DB Path is correct:
>
> # database path used by dbtext or db_berkeley
>
> DB_PATH="/usr/share/kamailio/dbtext"
>
> ## control engine: FIFO or UNIXSOCK
>
> ## - default FIFO
>
> CTLENGINE="FIFO"
>
> ## path to FIFO file
>
> OSER_FIFO="FIFO" (I have already tried commenting this out)
>
This should be a UNIX style path e.g. /tmp/kamailio.fifo The directory where
the fifo is must be writable by the kamailio user.
Marius
>
> kamailio.cfg
>
> loadmodule "mi_fifo.so"
>
> Path to modules is correct:
>
> mpath="modules_k:modules"
>
> #!else
>
> mpath="/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/"
>
> #!endif
>
> # ----- mi_fifo params -----
>
> modparam("mi_fifo", "fifo_name", "/tmp/kamailio.fifo")
>
> modparam("mi_fifo", "fifo_mode",0666)
>
> This is installed on Ubuntu Server 10.10 64 bit Intel .
>
> Can someone please help?
>
> *Kurt A. Mullen*
>
> Practical PC, LLC
>
> (O) 830.542.4102 x204
>
> (F) 210.767.3912
>
Hi,
I'm having troubles fetching an xpath from an xml document using
presence_xml, so I probably do something wrong (using kamailio 3.0.x):
$xml(x=>doc) = '<?xml version="1.0" encoding="utf-8"?><presence
xmlns="urn:ietf:params:xml:ns:pidf"
entity="sip:test@mydomain.com"><tuple
id="86ae65b7-42de-4399-b635-295caad13aac"><status><basic>none</basic></status></tuple></presence>';
xlog("L_INFO", "all=$xml(x=>doc)\n");
-> prints the whole document, which is ok
xlog("L_INFO", "tmp1=$xml(x=>xpath:/)\n");
-> also prints the whole document (including the xml tag in the
beginning, not sure if this is ok)
xlog("L_INFO", "tmp2=$xml(x=>xpath:/presence)\n");
-> prints an empty string
How is this actually supposed to work? What I'd like to do in the end is
extracting for example the "none" from the "basic"-tag by specifying
"xpath:/presence/tuple/status/basic", which also returns an empty string
now, also when appended with "/text()".
Thanks a lot,
Andreas
I am getting this error when I try to run kamctl:
ERROR: Error opening Kamailio's FIFO FIFO
ERROR: Make sure you have the line 'modparam("mi_fifo", "fifo_name",
"FIFO")' in your config
ERROR: and also have loaded the mi_fifo module.
I am able to start Kamailio with Kamailio start
I have poured over all the responses on Google for two days trying to fix
this error. I have tried everything I know of.
I have tried each example.
kamctlrc
DB Path is correct:
# database path used by dbtext or db_berkeley
DB_PATH="/usr/share/kamailio/dbtext"
## control engine: FIFO or UNIXSOCK
## - default FIFO
CTLENGINE="FIFO"
## path to FIFO file
OSER_FIFO="FIFO" (I have already tried commenting this out)
kamailio.cfg
loadmodule "mi_fifo.so"
Path to modules is correct:
mpath="modules_k:modules"
#!else
mpath="/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/"
#!endif
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio.fifo")
modparam("mi_fifo", "fifo_mode",0666)
This is installed on Ubuntu Server 10.10 64 bit Intel .
Can someone please help?
Kurt A. Mullen
Practical PC, LLC
(O) 830.542.4102 x204
(F) 210.767.3912
Hello. I am new to this forum. Can someone point me in the correct direction regarding compiling the SER package from the sip-router git repository?
When I try to compile the binaries, it is having troubles finding the mysql.h header file. I have looked in some of the obvious places, but it is not installed either in the distro I for mysql nor in the sip-router directory's module folders. Here is the error I see in the make_and_install_output.txt file when I try to compile.
km_dbase.c:38: fatal error: mysql/mysql.h: No such file or directory
compilation terminated.
make[1]: *** [km_dbase.o] Error 1
make: *** [modules] Error 1
I am using the current ubuntu server distro. Is this a well known issue? I followed the download
instructions from the sip-router download page from this website so I assume it automatically pulled the most current release (?). Will I need to load a package from someplace else?
Mysql is currently installed onto my machine. But I cannot find mysql.h. WIll I need to get the
libs from mysql (if available) and will they include the header files?
thx in adv
I have Kamailio up and running and passing calls between users. However, it
is not authenticating. Therefore any one can access without user/password.
Kamailio.cfg
#!- define WITH_MYSQL
#
# *** To enable authentication execute:
#!- enable mysql
#!- define WITH_AUTH
#!- add users using 'kamctl'
#
# *** To enable IP authentication execute:
#!- enable mysql
#!- enable authentication
#!- define WITH_IPAUTH
#!- add IP addresses with group id '1' to 'address' table
Kurt A. Mullen
Practical PC, LLC
(O) 830.542.4102 x204
(F) 210.767.3912
Hello.
I have Kamailio ( K in further ) and 2x Asterisk boxes ( A1 and A2 in
further ) configured, so UAC registers at K and when it sends a call,
it's routed to A1 or A2, balanced.
The problem is, that I cannot find how to authorize INVITE requests, so
unregistered UAC could not send INVITE requests. Simply cannot find
anything.
I'm making registration, using www_authorize() and checking all INVITES
with proxy_authorize(). Just after kamailio is started - everything
works fine and as planned: registered UAC can call and not registered -
cannot. But after aproximately 40 seconds everything is stopped. Not
calls passed and everybody receives 407 Proxy Authorization is required.
So, the question: how it is correctly to verify that incoming INVITE on
K is authorized? It seems to me that I'm doing that in wrong way.
Thank you.
Hello,
We are running Kamailio 1.5.
I'm trying to use the forward() function with a variable like this:
forward($shv(voip1-edge1));
That fails to parse.
I then tried this, which I thought would fail:
forward("$shv(voip1-edge1)");
That parsed correctly, but it then failed to resolve the domain '$shv(voip1-edge1)' as expected. Why can this function not use variables?
I tried to make a workaround by doing this:
$du=$ru;
$dd=$shv(voip1-edge1);
forward();
That also failed. Why is $du writable but $dd is not?
I then made a fourth attempt, which seems to work:
$du="sip:" + $shv(voip1-edge1);
forward();
With kind regards,
Pan
Hello Kamailio (OPENSER) Team,
We have successfully installed kamailio on debian flavor of LINUX as per
your documentation states. After installation kamailio is running on the
server and we are trying to register a SIP User Agent to kamailio SERVER.
But when we try to register, the server is returning these set of messages
to us.
1st Message : 401 Unauthorized
2nd Message : 200 OK
3rd Message : 401 Not Here
Looks like we are missing something in the configuration file for kamailio.
Can you please guide us through the process so that we can get this working.
I am attaching my kamailio.cfg file with the mail as well as the ethereal
captured log file in format of .jpg file with the mail.
We also want kamailio to listen on multiple ports such as 5060 and 5062 and
we have made according changes in the configuration file as well. Please
have a look at those as well and tell us whether we are doing it right or
not. Also if you feel that we need to do some additional changes in
configuration file. Please suggest them.
PS: Attachments (EthCap.jpg and kamailio.cfg)
********************************************************************************************************************************************************************************************
#!KAMAILIO
################################
#Added By Saurabh#
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
################################
#
# Kamailio (OpenSER) SIP Server v3.1 - default configuration script
# - web: http://www.kamailio.org
# - git: http://sip-router.org
#
# Direct your questions about this file to: <sr-users(a)lists.sip-router.org>
#
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php
# for an explanation of possible statements, functions and parameters.
#
# Several features can be enabled using '#!define WITH_FEATURE' directives:
#
# *** To run in debug mode:
# - define WITH_DEBUG
#
# *** To enable mysql:
# - define WITH_MYSQL
#
# *** To enable authentication execute:
# - enable mysql
# - define WITH_AUTH
# - add users using 'kamctl'
#
# *** To enable IP authentication execute:
# - enable mysql
# - enable authentication
# - define WITH_IPAUTH
# - add IP addresses with group id '1' to 'address' table
#
# *** To enable persistent user location execute:
# - enable mysql
# - define WITH_USRLOCDB
#
# *** To enable presence server execute:
# - enable mysql
# - define WITH_PRESENCE
#
# *** To enable nat traversal execute:
# - define WITH_NAT
# - install RTPProxy: http://www.rtpproxy.org
# - start RTPProxy:
# rtpproxy -l _your_public_ip_ -s udp:localhost:7722
#
# *** To enable PSTN gateway routing execute:
# - define WITH_PSTN
# - set the value of pstn.gw_ip
# - check route[PSTN] for regexp routing condition
#
# *** To enable database aliases lookup execute:
# - enable mysql
# - define WITH_ALIASDB
#
# *** To enable multi-domain support execute:
# - enable mysql
# - define WITH_MULTIDOMAIN
#
# *** To enable TLS support execute:
# - adjust CFGDIR/tls.cfg as needed
# - define WITH_TLS
#
# *** To enable XMLRPC support execute:
# - define WITH_XMLRPC
# - adjust route[XMLRPC] for access policy
#
# *** To enable anti-flood detection execute:
# - adjust pike and htable=>ipban settings as needed (default is
# block if more than 16 requests in 2 seconds and ban for 300 seconds)
# - define WITH_ANTIFLOOD
#
# *** To enhance accounting execute:
# - enable mysql
# - define WITH_ACCDB
# - add following columns to database
#!ifdef ACCDB_COMMENT
ALTER TABLE acc ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT '';
ALTER TABLE acc ADD COLUMN src_domain VARCHAR(128) NOT NULL DEFAULT '';
ALTER TABLE acc ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT '';
ALTER TABLE acc ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
ALTER TABLE acc ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
ALTER TABLE missed_calls ADD COLUMN src_user VARCHAR(64) NOT NULL DEFAULT
'';
ALTER TABLE missed_calls ADD COLUMN src_domain VARCHAR(128) NOT NULL
DEFAULT '';
ALTER TABLE missed_calls ADD COLUMN dst_ouser VARCHAR(64) NOT NULL DEFAULT
'';
ALTER TABLE missed_calls ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT
'';
ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL
DEFAULT '';
#!endif
####### Defined Values #########
# *** Value defines - IDs used later in config
#!ifdef WITH_MYSQL
# - database URL - used to connect to database server by modules such
# as: auth_db, acc, usrloc, a.s.o.
#!define DBURL "mysql://openser:openserrw@localhost/openser"
#!endif
#!ifdef WITH_MULTIDOMAIN
# - the value for 'use_domain' parameters
#!define MULTIDOMAIN 1
#!else
#!define MULTIDOMAIN 0
#!endif
# - flags
# FLT_ - per transaction (message) flags
# FLB_ - per branch flags
#!define FLT_ACC 1
#!define FLT_ACCMISSED 2
#!define FLT_ACCFAILED 3
#!define FLT_NATS 5
#!define FLB_NATB 6
#!define FLB_NATSIPPING 7
####### Global Parameters #########
#!ifdef WITH_DEBUG
debug=4
log_stderror=yes
#!else
debug=2
log_stderror=no
#!endif
memdbg=5
memlog=5
log_facility=LOG_LOCAL0
fork=yes
children=4
/* uncomment the next line to disable TCP (default on) */
#disable_tcp=yes
/* uncomment the next line to disable the auto discovery of local aliases
based on reverse DNS on IPs (default on) */
#auto_aliases=no
/* add local domain aliases */
#alias="sip.mydomain.com"
/* uncomment and configure the following line if you want Kamailio to
bind on a specific interface/port/proto (default bind on all available)
*/
#listen=udp:10.0.0.10:5060
listen=udp:XXX.XXX.XXX.XXX:5060 #XXX is ip address of server
listen=udp:XXX.XXX.XXX.XXX:5062 #XXX is ip address of server
/* port to listen to
* - can be specified more than once if needed to listen on many ports */
port=5060
port=5062
#!ifdef WITH_TLS
enable_tls=yes
#!endif
####### Custom Parameters #########
# These parameters can be modified runtime via RPC interface
# - see the documentation of 'cfg_rpc' module.
#
# Format: group.id = value 'desc' description
# Access: $sel(cfg_get.group.id) or @cfg_get.group.id
#
#!ifdef WITH_PSTN
# PSTN GW Routing
#
# - pstn.gw_ip: valid IP or hostname as string value, example:
# pstn.gw_ip = "10.0.0.101" desc "My PSTN GW Address"
#
# - by default is empty to avoid misrouting
pstn.gw_ip = "" desc "PSTN GW Address"
#!endif
####### Modules Section ########
# set paths to location of modules
#!ifdef LOCAL_TEST_RUN
mpath="modules_k:modules"
#!else
mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"
#!endif
#!ifdef WITH_MYSQL
loadmodule "db_mysql.so"
#!endif
loadmodule "mi_fifo.so"
loadmodule "kex.so"
loadmodule "tm.so"
loadmodule "tmx.so"
loadmodule "sl.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "sanity.so"
loadmodule "ctl.so"
loadmodule "mi_rpc.so"
loadmodule "acc.so"
#!ifdef WITH_AUTH
loadmodule "auth.so"
loadmodule "auth_db.so"
#!ifdef WITH_IPAUTH
loadmodule "permissions.so"
#!endif
#!endif
#!ifdef WITH_ALIASDB
loadmodule "alias_db.so"
#!endif
#!ifdef WITH_MULTIDOMAIN
loadmodule "domain.so"
#!endif
#!ifdef WITH_PRESENCE
loadmodule "presence.so"
loadmodule "presence_xml.so"
#!endif
#!ifdef WITH_NAT
loadmodule "nathelper.so"
loadmodule "rtpproxy.so"
#!endif
#!ifdef WITH_TLS
loadmodule "tls.so"
#!endif
#!ifdef WITH_ANTIFLOOD
loadmodule "htable.so"
loadmodule "pike.so"
#!endif
#!ifdef WITH_XMLRPC
loadmodule "xmlrpc.so"
#!endif
# ----------------- setting module-specific parameters ---------------
# ----- mi_fifo params -----
modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
# ----- tm params -----
# auto-discard branches from previous serial forking leg
modparam("tm", "failure_reply_mode", 3)
# default retransmission timeout: 30sec
modparam("tm", "fr_timer", 30000)
# default invite retransmission timeout after 1xx: 120sec
modparam("tm", "fr_inv_timer", 120000)
# ----- rr params -----
# add value to ;lr param to cope with most of the UAs
modparam("rr", "enable_full_lr", 1)
# do not append from tag to the RR (no need for this script)
modparam("rr", "append_fromtag", 0)
# ----- registrar params -----
modparam("registrar", "method_filtering", 1)
/* uncomment the next line to disable parallel forking via location */
# modparam("registrar", "append_branches", 0)
/* uncomment the next line not to allow more than 10 contacts per AOR */
#modparam("registrar", "max_contacts", 10)
# ----- acc params -----
/* what special events should be accounted ? */
modparam("acc", "early_media", 0)
modparam("acc", "report_ack", 0)
modparam("acc", "report_cancels", 0)
/* by default ww do not adjust the direct of the sequential requests.
if you enable this parameter, be sure the enable "append_fromtag"
in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "log_flag", FLT_ACC)
modparam("acc", "log_missed_flag", FLT_ACCMISSED)
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
/* enhanced DB accounting */
#!ifdef WITH_ACCDB
modparam("acc", "db_flag", FLT_ACC)
modparam("acc", "db_missed_flag", FLT_ACCMISSED)
modparam("acc", "db_url", DBURL)
modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
#!endif
# ----- usrloc params -----
/* enable DB persistency for location entries */
#!ifdef WITH_USRLOCDB
modparam("usrloc", "db_url", DBURL)
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "use_domain", MULTIDOMAIN)
#!endif
# ----- auth_db params -----
#!ifdef WITH_AUTH
modparam("auth_db", "db_url", DBURL)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
modparam("auth_db", "load_credentials", "")
modparam("auth_db", "use_domain", MULTIDOMAIN)
# ----- permissions params -----
#!ifdef WITH_IPAUTH
modparam("permissions", "db_url", DBURL)
modparam("permissions", "db_mode", 1)
#!endif
#!endif
# ----- alias_db params -----
#!ifdef WITH_ALIASDB
modparam("alias_db", "db_url", DBURL)
modparam("alias_db", "use_domain", MULTIDOMAIN)
#!endif
# ----- domain params -----
#!ifdef WITH_MULTIDOMAIN
modparam("domain", "db_url", DBURL)
# use caching
modparam("domain", "db_mode", 1)
# register callback to match myself condition with domains list
modparam("domain", "register_myself", 1)
#!endif
#!ifdef WITH_PRESENCE
# ----- presence params -----
modparam("presence", "db_url", DBURL)
# ----- presence_xml params -----
modparam("presence_xml", "db_url", DBURL)
modparam("presence_xml", "force_active", 1)
#!endif
#!ifdef WITH_NAT
# ----- rtpproxy params -----
modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")
# ----- nathelper params -----
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)
modparam("nathelper", "sipping_from",
"sip:pinger@kamailio.org<sip%3Apinger(a)kamailio.org>
")
# params needed for NAT traversal in other modules
modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")
modparam("usrloc", "nat_bflag", FLB_NATB)
#!endif
#!ifdef WITH_TLS
# ----- tls params -----
modparam("tls", "config", "/usr/local/etc/kamailio/tls.cfg")
#!endif
#!ifdef WITH_ANTIFLOOD
# ----- pike params -----
modparam("pike", "sampling_time_unit", 2)
modparam("pike", "reqs_density_per_unit", 16)
modparam("pike", "remove_latency", 4)
# ----- htable params -----
# ip ban htable with autoexpire after 5 minutes
modparam("htable", "htable", "ipban=>size=8;autoexpire=300;")
#!endif
#!ifdef WITH_XMLRPC
# ----- xmlrpc params -----
modparam("xmlrpc", "route", "XMLRPC");
modparam("xmlrpc", "url_match", "^/RPC")
#!endif
####### Routing Logic ########
# Main SIP request routing logic
# - processing of any incoming SIP request starts with this route
route {
# per request initial checks
route(REQINIT);
# NAT detection
route(NAT);
# handle requests within SIP dialogs
route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
t_check_trans();
# authentication
route(AUTH);
# record routing for dialog forming requests (in case they are routed)
# - remove preloaded route headers
remove_hf("Route");
if (is_method("INVITE|SUBSCRIBE"))
record_route();
# account only INVITEs
if (is_method("INVITE"))
{
setflag(FLT_ACC); # do accounting
}
# dispatch requests to foreign domains
route(SIPOUT);
### requests for my local domains
# handle presence related requests
route(PRESENCE);
# handle registrations
route(REGISTRAR);
if ($rU==$null)
{
# request with no Username in RURI
sl_send_reply("484","Address Incomplete");
exit;
}
# dispatch destinations to PSTN
route(PSTN);
# user location service
route(LOCATION);
route(RELAY);
}
route[RELAY] {
#!ifdef WITH_NAT
if (check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
if (isflagset(FLT_NATS) || isbflagset(FLB_NATB)) {
route(RTPPROXY);
}
#!endif
/* example how to enable some additional event routes */
if (is_method("INVITE")) {
#t_on_branch("BRANCH_ONE");
t_on_reply("REPLY_ONE");
t_on_failure("FAIL_ONE");
}
if (!t_relay()) {
sl_reply_error();
}
exit;
}
# Per SIP request initial checks
route[REQINIT] {
#!ifdef WITH_ANTIFLOOD
# flood dection from same IP and traffic ban for a while
# be sure you exclude checking trusted peers, such as pstn gateways
# - local host excluded (e.g., loop to self)
if(src_ip!=myself)
{
if($sht(ipban=>$si)!=$null)
{
# ip is already blocked
xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");
exit;
}
if (!pike_check_req())
{
xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");
$sht(ipban=>$si) = 1;
exit;
}
}
#!endif
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if(!sanity_check("1511", "7"))
{
xlog("Malformed SIP message from $si:$sp\n");
exit;
}
}
# Handle requests within SIP dialogs
route[WITHINDLG] {
if (has_totag()) {
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the transaction fails
}
route(RELAY);
} else {
if (is_method("SUBSCRIBE") && uri == myself) {
# in-dialog subscribe requests
route(PRESENCE);
exit;
}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# no loose-route, but stateful ACK;
# must be an ACK after a 487
# or e.g. 404 from upstream server
t_relay();
exit;
} else {
# ACK without matching transaction ... ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
}
exit;
}
}
# Handle SIP registrations
route[REGISTRAR] {
if (is_method("REGISTER"))
{
if(isflagset(FLT_NATS))
{
setbflag(FLB_NATB);
# uncomment next line to do SIP NAT pinging
## setbflag(FLB_NATSIPPING);
}
if (!save("location"))
sl_reply_error();
exit;
}
}
# USER location service
route[LOCATION] {
#!ifdef WITH_ALIASDB
# search in DB-based aliases
alias_db_lookup("dbaliases");
#!endif
if (!lookup("location")) {
switch ($rc) {
case -1:
case -3:
t_newtran();
t_reply("404", "Not Found");
exit;
case -2:
sl_send_reply("405", "Method Not Allowed");
exit;
}
}
# when routing via usrloc, log the missed calls also
if (is_method("INVITE"))
{
setflag(FLT_ACCMISSED);
}
}
# Presence server route
route[PRESENCE] {
if(!is_method("PUBLISH|SUBSCRIBE"))
return;
#!ifdef WITH_PRESENCE
if (!t_newtran())
{
sl_reply_error();
exit;
};
if(is_method("PUBLISH"))
{
handle_publish();
t_release();
}
else
if( is_method("SUBSCRIBE"))
{
handle_subscribe();
t_release();
}
exit;
#!endif
# if presence enabled, this part will not be executed
if (is_method("PUBLISH") || $rU==$null)
{
sl_send_reply("404", "Not here");
exit;
}
return;
}
# Authentication route
route[AUTH] {
#!ifdef WITH_AUTH
if (is_method("REGISTER"))
{
# authenticate the REGISTER requests (uncomment to enable auth)
if (!www_authorize("$td", "subscriber"))
{
www_challenge("$td", "0");
exit;
}
if ($au!=$tU)
{
sl_send_reply("403","Forbidden auth ID");
exit;
}
} else {
#!ifdef WITH_IPAUTH
if(allow_source_address())
{
# source IP allowed
return;
}
#!endif
# authenticate if from local subscriber
if (from_uri==myself)
{
if (!proxy_authorize("$fd", "subscriber")) {
proxy_challenge("$fd", "0");
exit;
}
if (is_method("PUBLISH"))
{
if ($au!=$tU) {
sl_send_reply("403","Forbidden auth ID");
exit;
}
} else {
if ($au!=$fU) {
sl_send_reply("403","Forbidden auth ID");
exit;
}
}
consume_credentials();
# caller authenticated
} else {
# caller is not local subscriber, then check if it calls
# a local destination, otherwise deny, not an open relay here
if (!uri==myself)
{
sl_send_reply("403","Not relaying");
exit;
}
}
}
#!endif
return;
}
# Caller NAT detection route
route[NAT] {
#!ifdef WITH_NAT
force_rport();
if (nat_uac_test("19")) {
if (method=="REGISTER") {
fix_nated_register();
} else {
fix_nated_contact();
}
setflag(FLT_NATS);
}
#!endif
return;
}
# RTPProxy control
route[RTPPROXY] {
#!ifdef WITH_NAT
if (is_method("BYE")) {
unforce_rtp_proxy();
} else if (is_method("INVITE")){
force_rtp_proxy();
}
if (!has_totag()) add_rr_param(";nat=yes");
#!endif
return;
}
# Routing to foreign domains
route[SIPOUT] {
if (!uri==myself)
{
append_hf("P-hint: outbound\r\n");
route(RELAY);
}
}
# PSTN GW routing
route[PSTN] {
#!ifdef WITH_PSTN
# check if PSTN GW IP is defined
if (strempty($sel(cfg_get.pstn.gw_ip))) {
xlog("SCRIPT: PSTN rotuing enabled but pstn.gw_ip not defined\n");
return;
}
# route to PSTN dialed numbers starting with '+' or '00'
# (international format)
# - update the condition to match your dialing rules for PSTN routing
if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$"))
return;
# only local users allowed to call
if(from_uri!=myself) {
sl_send_reply("403", "Not Allowed");
exit;
}
$ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);
route(RELAY);
exit;
#!endif
return;
}
# XMLRPC routing
#!ifdef WITH_XMLRPC
route[XMLRPC]
{
# allow XMLRPC from localhost
if ((method=="POST" || method=="GET")
&& (src_ip==127.0.0.1)) {
# close connection only for xmlrpclib user agents (there is a bug in
# xmlrpclib: it waits for EOF before interpreting the response).
if ($hdr(User-Agent) =~ "xmlrpclib")
set_reply_close();
set_reply_no_connect();
dispatch_rpc();
exit;
}
send_reply("403", "Forbidden");
exit;
}
#!endif
# Sample branch router
branch_route[BRANCH_ONE] {
xdbg("new branch at $ru\n");
}
# Sample onreply route
onreply_route[REPLY_ONE] {
xdbg("incoming reply\n");
#!ifdef WITH_NAT
if ((isflagset(FLT_NATS) || isbflagset(FLB_NATB))
&& status=~"(183)|(2[0-9][0-9])") {
force_rtp_proxy();
}
if (isbflagset("6")) {
fix_nated_contact();
}
#!endif
}
# Sample failure route
failure_route[FAIL_ONE] {
#!ifdef WITH_NAT
if (is_method("INVITE")
&& (isbflagset(FLB_NATB) || isflagset(FLT_NATS))) {
unforce_rtp_proxy();
}
#!endif
if (t_is_canceled()) {
exit;
}
# uncomment the following lines if you want to block client
# redirect based on 3xx replies.
##if (t_check_status("3[0-9][0-9]")) {
##t_reply("404","Not found");
## exit;
##}
# uncomment the following lines if you want to redirect the failed
# calls to a different new destination
##if (t_check_status("486|408")) {
## sethostport("192.168.2.100:5060");
## append_branch();
## # do not set the missed call flag again
## t_relay();
##}
}
********************************************************************************************************************************************************************************************
Thanks and Best Regards
Saurabh Srivastava