|
@@ -1,9 +1,8 @@
|
|
#
|
|
#
|
|
# $Id$
|
|
# $Id$
|
|
#
|
|
#
|
|
-# Kamailio (OpenSER) SIP Server - basic configuration script
|
|
|
|
|
|
+# Kamailio (OpenSER) SIP Server v3.0 - basic configuration script
|
|
# - web: http://www.kamailio.org
|
|
# - web: http://www.kamailio.org
|
|
-# - svn: http://openser.svn.sourceforge.net/viewvc/openser/
|
|
|
|
# - git: http://sip-router.org
|
|
# - git: http://sip-router.org
|
|
#
|
|
#
|
|
# Direct your questions about this file to: <[email protected]>
|
|
# Direct your questions about this file to: <[email protected]>
|
|
@@ -11,98 +10,81 @@
|
|
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php
|
|
# Refer to the Core CookBook at http://www.kamailio.org/dokuwiki/doku.php
|
|
# for an explanation of possible statements, functions and parameters.
|
|
# for an explanation of possible statements, functions and parameters.
|
|
#
|
|
#
|
|
-# There are comments showing how to enable different features in th econfig
|
|
|
|
-# file. Such commented code starts with #X# where X is a letter to identify
|
|
|
|
-# a feature. Delete entire #X# if you want to enable that feature. Next are
|
|
|
|
-# sed commands that help you enable such features.
|
|
|
|
|
|
+# Several features can be enabled using '#!define WITH_FEATURE' directives:
|
|
#
|
|
#
|
|
-# *** To enamble mysql execute:
|
|
|
|
-# sed -i 's/#m#//g' kamailio.cfg
|
|
|
|
|
|
+# *** To run in debug mode:
|
|
|
|
+# - define WITH_DEBUG
|
|
#
|
|
#
|
|
-# *** To enamble authentication execute:
|
|
|
|
|
|
+# *** To enable mysql:
|
|
|
|
+# - define WITH_MYSQL
|
|
|
|
+#
|
|
|
|
+# *** To enable authentication execute:
|
|
# - enable mysql
|
|
# - enable mysql
|
|
-# sed -i 's/#a#//g' kamailio.cfg
|
|
|
|
|
|
+# - define WITH_AUTH
|
|
# - add users using 'kamctl'
|
|
# - add users using 'kamctl'
|
|
#
|
|
#
|
|
-# *** To enamble persistent user location execute:
|
|
|
|
|
|
+# *** To enable persistent user location execute:
|
|
# - enable mysql
|
|
# - enable mysql
|
|
-# sed -i 's/#u#//g' kamailio.cfg
|
|
|
|
|
|
+# - define WITH_USRLOCDB
|
|
#
|
|
#
|
|
-# *** To enamble presence server execute:
|
|
|
|
|
|
+# *** To enable presence server execute:
|
|
# - enable mysql
|
|
# - enable mysql
|
|
-# sed -i 's/#p#//g' kamailio.cfg
|
|
|
|
|
|
+# - define WITH_PRESENCE
|
|
#
|
|
#
|
|
-# *** To enamble nat traversal execute:
|
|
|
|
-# sed -i 's/#n#//g' kamailio.cfg
|
|
|
|
|
|
+# *** To enable nat traversal execute:
|
|
|
|
+# - define WITH_NAT
|
|
# - install RTPProxy: http://www.rtpproxy.org
|
|
# - install RTPProxy: http://www.rtpproxy.org
|
|
# - start RTPProxy:
|
|
# - start RTPProxy:
|
|
# rtpproxy -l _your_public_ip_ -s udp:localhost:7722
|
|
# rtpproxy -l _your_public_ip_ -s udp:localhost:7722
|
|
#
|
|
#
|
|
# *** To enhance accounting execute:
|
|
# *** To enhance accounting execute:
|
|
# - enable mysql
|
|
# - enable mysql
|
|
-# sed -i 's/#c#//g' kamailio.cfg
|
|
|
|
|
|
+# - define WITH_ACCDB
|
|
# - add following columns to database
|
|
# - add following columns to database
|
|
-# 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_call ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
|
|
|
|
-# ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
|
|
|
|
-#
|
|
|
|
|
|
+#!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_call ADD COLUMN dst_user VARCHAR(64) NOT NULL DEFAULT '';
|
|
|
|
+ ALTER TABLE missed_calls ADD COLUMN dst_domain VARCHAR(128) NOT NULL DEFAULT '';
|
|
|
|
+#!endif
|
|
|
|
|
|
|
|
|
|
####### Global Parameters #########
|
|
####### Global Parameters #########
|
|
|
|
|
|
|
|
+#!ifdef WITH_DEBUG
|
|
|
|
+debug=4
|
|
|
|
+log_stderror=yes
|
|
|
|
+#!else
|
|
debug=2
|
|
debug=2
|
|
|
|
+log_stderror=no
|
|
|
|
+#!endif
|
|
|
|
+
|
|
memdbg=5
|
|
memdbg=5
|
|
memlog=5
|
|
memlog=5
|
|
-log_stderror=no
|
|
|
|
|
|
+
|
|
log_facility=LOG_LOCAL0
|
|
log_facility=LOG_LOCAL0
|
|
|
|
|
|
fork=yes
|
|
fork=yes
|
|
children=4
|
|
children=4
|
|
|
|
|
|
-/* uncomment the following lines to enable debugging */
|
|
|
|
-#debug=6
|
|
|
|
-#fork=no
|
|
|
|
-#log_stderror=yes
|
|
|
|
-
|
|
|
|
/* uncomment the next line to disable TCP (default on) */
|
|
/* uncomment the next line to disable TCP (default on) */
|
|
#disable_tcp=yes
|
|
#disable_tcp=yes
|
|
|
|
|
|
-/* uncomment the next line to enable the auto temporary blacklisting of
|
|
|
|
- not available destinations (default disabled) */
|
|
|
|
-#disable_dns_blacklist=no
|
|
|
|
-
|
|
|
|
-/* uncomment the next line to enable IPv6 lookup after IPv4 dns
|
|
|
|
- lookup failures (default disabled) */
|
|
|
|
-#dns_try_ipv6=yes
|
|
|
|
-
|
|
|
|
/* uncomment the next line to disable the auto discovery of local aliases
|
|
/* uncomment the next line to disable the auto discovery of local aliases
|
|
based on revers DNS on IPs (default on) */
|
|
based on revers DNS on IPs (default on) */
|
|
#auto_aliases=no
|
|
#auto_aliases=no
|
|
|
|
|
|
-/* uncomment the following lines to enable TLS support (default off) */
|
|
|
|
-#disable_tls = no
|
|
|
|
-#listen = tls:your_IP:5061
|
|
|
|
-#tls_verify_server = 1
|
|
|
|
-#tls_verify_client = 1
|
|
|
|
-#tls_require_client_certificate = 0
|
|
|
|
-#tls_method = TLSv1
|
|
|
|
-#tls_certificate = "/usr/local/etc/kamailio/tls/user/user-cert.pem"
|
|
|
|
-#tls_private_key = "/usr/local/etc/kamailio/tls/user/user-privkey.pem"
|
|
|
|
-#tls_ca_list = "/usr/local/etc/kamailio/tls/user/user-calist.pem"
|
|
|
|
-
|
|
|
|
-
|
|
|
|
port=5060
|
|
port=5060
|
|
|
|
|
|
/* uncomment and configure the following line if you want Kamailio to
|
|
/* uncomment and configure the following line if you want Kamailio to
|
|
bind on a specific interface/port/proto (default bind on all available) */
|
|
bind on a specific interface/port/proto (default bind on all available) */
|
|
-#listen=udp:192.168.1.2:5060
|
|
|
|
|
|
+#listen=udp:10.0.0.10:5060
|
|
|
|
|
|
|
|
|
|
####### Modules Section ########
|
|
####### Modules Section ########
|
|
@@ -111,7 +93,9 @@ port=5060
|
|
mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"
|
|
mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"
|
|
|
|
|
|
/* uncomment next line for MySQL DB support */
|
|
/* uncomment next line for MySQL DB support */
|
|
-#m#loadmodule "db_mysql.so"
|
|
|
|
|
|
+#!ifdef WITH_MYSQL
|
|
|
|
+loadmodule "db_mysql.so"
|
|
|
|
+#!endif
|
|
loadmodule "mi_fifo.so"
|
|
loadmodule "mi_fifo.so"
|
|
loadmodule "kex.so"
|
|
loadmodule "kex.so"
|
|
loadmodule "tm.so"
|
|
loadmodule "tm.so"
|
|
@@ -130,10 +114,10 @@ loadmodule "sanity.so"
|
|
loadmodule "ctl.so"
|
|
loadmodule "ctl.so"
|
|
loadmodule "mi_rpc.so"
|
|
loadmodule "mi_rpc.so"
|
|
loadmodule "acc.so"
|
|
loadmodule "acc.so"
|
|
-/* uncomment next lines for MySQL based authentication support
|
|
|
|
- NOTE: a DB (like db_mysql) module must be also loaded */
|
|
|
|
-#a#loadmodule "auth.so"
|
|
|
|
-#a#loadmodule "auth_db.so"
|
|
|
|
|
|
+#!ifdef WITH_AUTH
|
|
|
|
+loadmodule "auth.so"
|
|
|
|
+loadmodule "auth_db.so"
|
|
|
|
+#!endif
|
|
/* uncomment next line for aliases support
|
|
/* uncomment next line for aliases support
|
|
NOTE: a DB (like db_mysql) module must be also loaded */
|
|
NOTE: a DB (like db_mysql) module must be also loaded */
|
|
#loadmodule "alias_db.so"
|
|
#loadmodule "alias_db.so"
|
|
@@ -142,12 +126,14 @@ loadmodule "acc.so"
|
|
NOTE: be sure and enable multi-domain support in all used modules
|
|
NOTE: be sure and enable multi-domain support in all used modules
|
|
(see "multi-module params" section ) */
|
|
(see "multi-module params" section ) */
|
|
#loadmodule "domain.so"
|
|
#loadmodule "domain.so"
|
|
-/* uncomment the next two lines for presence server support
|
|
|
|
- NOTE: a DB (like db_mysql) module must be also loaded */
|
|
|
|
-#p#loadmodule "presence.so"
|
|
|
|
-#p#loadmodule "presence_xml.so"
|
|
|
|
|
|
+#!ifdef WITH_PRESENCE
|
|
|
|
+loadmodule "presence.so"
|
|
|
|
+loadmodule "presence_xml.so"
|
|
|
|
+#!endif
|
|
|
|
|
|
-#n#loadmodule "nathelper.so"
|
|
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+loadmodule "nathelper.so"
|
|
|
|
+#!endif
|
|
|
|
|
|
# ----------------- setting module-specific parameters ---------------
|
|
# ----------------- setting module-specific parameters ---------------
|
|
|
|
|
|
@@ -193,31 +179,33 @@ modparam("acc", "log_flag", 1)
|
|
modparam("acc", "log_missed_flag", 2)
|
|
modparam("acc", "log_missed_flag", 2)
|
|
modparam("acc", "log_extra",
|
|
modparam("acc", "log_extra",
|
|
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
|
|
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
|
|
-/* uncomment the following lines to enable DB accounting also */
|
|
|
|
-#c#modparam("acc", "db_flag", 1)
|
|
|
|
-#c#modparam("acc", "db_missed_flag", 2)
|
|
|
|
-#c#modparam("acc", "db_url",
|
|
|
|
-#c# "mysql://openser:openserrw@localhost/openser")
|
|
|
|
-#c#modparam("acc", "db_extra",
|
|
|
|
-#c# "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
|
|
|
|
-
|
|
|
|
|
|
+/* enhanced DB accounting */
|
|
|
|
+#!ifdef WITH_ACCDB
|
|
|
|
+modparam("acc", "db_flag", 1)
|
|
|
|
+modparam("acc", "db_missed_flag", 2)
|
|
|
|
+modparam("acc", "db_url",
|
|
|
|
+ "mysql://openser:openserrw@localhost/openser")
|
|
|
|
+modparam("acc", "db_extra",
|
|
|
|
+ "src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
|
|
|
|
+#!endif
|
|
|
|
|
|
# ----- usrloc params -----
|
|
# ----- usrloc params -----
|
|
-/* uncomment the following lines if you want to enable DB persistency
|
|
|
|
- for location entries */
|
|
|
|
-#u#modparam("usrloc", "db_mode", 2)
|
|
|
|
-#u#modparam("usrloc", "db_url",
|
|
|
|
-#u# "mysql://openser:openserrw@localhost/openser")
|
|
|
|
|
|
+/* enable DB persistency for location entries */
|
|
|
|
+#!ifdef WITH_USRLOCDB
|
|
|
|
+modparam("usrloc", "db_mode", 2)
|
|
|
|
+modparam("usrloc", "db_url",
|
|
|
|
+ "mysql://openser:openserrw@localhost/openser")
|
|
|
|
+#!endif
|
|
|
|
|
|
# ----- auth_db params -----
|
|
# ----- auth_db params -----
|
|
-/* uncomment the following lines if you want to enable the DB based
|
|
|
|
- authentication */
|
|
|
|
-#a#modparam("auth_db", "calculate_ha1", yes)
|
|
|
|
-#a#modparam("auth_db", "password_column", "password")
|
|
|
|
-#a#modparam("auth_db", "db_url",
|
|
|
|
-#a# "mysql://openser:openserrw@localhost/openser")
|
|
|
|
-#a#modparam("auth_db", "load_credentials", "")
|
|
|
|
-
|
|
|
|
|
|
+/* enable the DB based authentication */
|
|
|
|
+#!ifdef WITH_AUTH
|
|
|
|
+modparam("auth_db", "calculate_ha1", yes)
|
|
|
|
+modparam("auth_db", "password_column", "password")
|
|
|
|
+modparam("auth_db", "db_url",
|
|
|
|
+ "mysql://openser:openserrw@localhost/openser")
|
|
|
|
+modparam("auth_db", "load_credentials", "")
|
|
|
|
+#!endif
|
|
|
|
|
|
# ----- alias_db params -----
|
|
# ----- alias_db params -----
|
|
/* uncomment the following lines if you want to enable the DB based
|
|
/* uncomment the following lines if you want to enable the DB based
|
|
@@ -241,20 +229,24 @@ modparam("acc", "log_extra",
|
|
|
|
|
|
|
|
|
|
# ----- presence params -----
|
|
# ----- presence params -----
|
|
-/* uncomment the following lines if you want to enable presence */
|
|
|
|
-#p#modparam("presence|presence_xml", "db_url",
|
|
|
|
-#p# "mysql://openser:openserrw@localhost/openser")
|
|
|
|
-#p#modparam("presence_xml", "force_active", 1)
|
|
|
|
-#p#modparam("presence", "server_address", "sip:192.168.1.2:5060")
|
|
|
|
-
|
|
|
|
-# -- nathelper
|
|
|
|
-#n#modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
|
|
|
|
-#n#modparam("nathelper", "natping_interval", 30)
|
|
|
|
-#n#modparam("nathelper", "ping_nated_only", 1)
|
|
|
|
-#n#modparam("nathelper", "sipping_bflag", 7)
|
|
|
|
-#n#modparam("nathelper", "sipping_from", "sip:[email protected]")
|
|
|
|
-#n#modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
|
|
|
|
-#n#modparam("usrloc", "nat_bflag", 6)
|
|
|
|
|
|
+/* enable presence server support */
|
|
|
|
+#!ifdef WITH_PRESENCE
|
|
|
|
+modparam("presence|presence_xml", "db_url",
|
|
|
|
+ "mysql://openser:openserrw@localhost/openser")
|
|
|
|
+modparam("presence_xml", "force_active", 1)
|
|
|
|
+modparam("presence", "server_address", "sip:10.0.0.10:5060")
|
|
|
|
+#!endif
|
|
|
|
+
|
|
|
|
+# ----- nathelper -----
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+modparam("nathelper", "rtpproxy_sock", "udp:127.0.0.1:7722")
|
|
|
|
+modparam("nathelper", "natping_interval", 30)
|
|
|
|
+modparam("nathelper", "ping_nated_only", 1)
|
|
|
|
+modparam("nathelper", "sipping_bflag", 7)
|
|
|
|
+modparam("nathelper", "sipping_from", "sip:[email protected]")
|
|
|
|
+modparam("registrar|nathelper", "received_avp", "$avp(i:80)")
|
|
|
|
+modparam("usrloc", "nat_bflag", 6)
|
|
|
|
+#!endif
|
|
|
|
|
|
####### Routing Logic ########
|
|
####### Routing Logic ########
|
|
|
|
|
|
@@ -335,14 +327,6 @@ route{
|
|
##if (!is_uri_host_local())
|
|
##if (!is_uri_host_local())
|
|
{
|
|
{
|
|
append_hf("P-hint: outbound\r\n");
|
|
append_hf("P-hint: outbound\r\n");
|
|
- # if you have some interdomain connections via TLS
|
|
|
|
- ##if($rd=="tls_domain1.net") {
|
|
|
|
- ## t_relay("tls:domain1.net");
|
|
|
|
- ## exit;
|
|
|
|
- ##} else if($rd=="tls_domain2.net") {
|
|
|
|
- ## t_relay("tls:domain2.net");
|
|
|
|
- ## exit;
|
|
|
|
- ##}
|
|
|
|
route(RELAY);
|
|
route(RELAY);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -356,7 +340,8 @@ route{
|
|
if(isflagset(5))
|
|
if(isflagset(5))
|
|
{
|
|
{
|
|
setbflag("6");
|
|
setbflag("6");
|
|
- # setbflag("7");
|
|
|
|
|
|
+ # uncomment next line to do SIP NAT pinging
|
|
|
|
+ ## setbflag("7");
|
|
}
|
|
}
|
|
if (!save("location"))
|
|
if (!save("location"))
|
|
sl_reply_error();
|
|
sl_reply_error();
|
|
@@ -394,12 +379,14 @@ route{
|
|
|
|
|
|
|
|
|
|
route[RELAY] {
|
|
route[RELAY] {
|
|
-#n# if (check_route_param("nat=yes")) {
|
|
|
|
-#n# setbflag("6");
|
|
|
|
-#n# }
|
|
|
|
-#n# if (isflagset(5) || isbflagset("6")) {
|
|
|
|
-#n# route(RTPPROXY);
|
|
|
|
-#n# }
|
|
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+ if (check_route_param("nat=yes")) {
|
|
|
|
+ setbflag("6");
|
|
|
|
+ }
|
|
|
|
+ if (isflagset(5) || isbflagset("6")) {
|
|
|
|
+ route(RTPPROXY);
|
|
|
|
+ }
|
|
|
|
+#!endif
|
|
|
|
|
|
/* example how to enable some additional event routes */
|
|
/* example how to enable some additional event routes */
|
|
if (is_method("INVITE")) {
|
|
if (is_method("INVITE")) {
|
|
@@ -415,28 +402,29 @@ route[RELAY] {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-# Presence route
|
|
|
|
-/* uncomment the whole following route for enabling presence server */
|
|
|
|
|
|
+# Presence server route
|
|
route[PRESENCE]
|
|
route[PRESENCE]
|
|
{
|
|
{
|
|
-#p# if (!t_newtran())
|
|
|
|
-#p# {
|
|
|
|
-#p# sl_reply_error();
|
|
|
|
-#p# exit;
|
|
|
|
-#p# };
|
|
|
|
-#p#
|
|
|
|
-#p# if(is_method("PUBLISH"))
|
|
|
|
-#p# {
|
|
|
|
-#p# handle_publish();
|
|
|
|
-#p# t_release();
|
|
|
|
-#p# }
|
|
|
|
-#p# else
|
|
|
|
-#p# if( is_method("SUBSCRIBE"))
|
|
|
|
-#p# {
|
|
|
|
-#p# handle_subscribe();
|
|
|
|
-#p# t_release();
|
|
|
|
-#p# }
|
|
|
|
-#p# exit;
|
|
|
|
|
|
+#!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 presence enabled, this part will not be executed
|
|
if (is_method("PUBLISH") || $rU==$null)
|
|
if (is_method("PUBLISH") || $rU==$null)
|
|
@@ -448,99 +436,106 @@ route[PRESENCE]
|
|
}
|
|
}
|
|
|
|
|
|
# Authentication route
|
|
# Authentication route
|
|
-/* uncomment the whole following route for enabling authentication */
|
|
|
|
route[AUTH] {
|
|
route[AUTH] {
|
|
-#a# if (is_method("REGISTER"))
|
|
|
|
-#a# {
|
|
|
|
-#a# # authenticate the REGISTER requests (uncomment to enable auth)
|
|
|
|
-#a# if (!www_authorize("", "subscriber"))
|
|
|
|
-#a# {
|
|
|
|
-#a# www_challenge("", "0");
|
|
|
|
-#a# exit;
|
|
|
|
-#a# }
|
|
|
|
-#a#
|
|
|
|
-#a# if ($au!=$tU)
|
|
|
|
-#a# {
|
|
|
|
-#a# sl_send_reply("403","Forbidden auth ID");
|
|
|
|
-#a# exit;
|
|
|
|
-#a# }
|
|
|
|
-#a# } else {
|
|
|
|
-#a# # authenticate if from local subscriber (uncomment to enable auth)
|
|
|
|
-#a# if (from_uri==myself)
|
|
|
|
-#a# {
|
|
|
|
-#a# if (!proxy_authorize("", "subscriber")) {
|
|
|
|
-#a# proxy_challenge("", "0");
|
|
|
|
-#a# exit;
|
|
|
|
-#a# }
|
|
|
|
-#a# if (is_method("PUBLISH"))
|
|
|
|
-#a# {
|
|
|
|
-#a# if ($au!=$tU) {
|
|
|
|
-#a# sl_send_reply("403","Forbidden auth ID");
|
|
|
|
-#a# exit;
|
|
|
|
-#a# }
|
|
|
|
-#a# } else {
|
|
|
|
-#a# if ($au!=$fU) {
|
|
|
|
-#a# sl_send_reply("403","Forbidden auth ID");
|
|
|
|
-#a# exit;
|
|
|
|
-#a# }
|
|
|
|
-#a# }
|
|
|
|
-#a#
|
|
|
|
-#a# consume_credentials();
|
|
|
|
-#a# # caller authenticated
|
|
|
|
-#a# }
|
|
|
|
-#a# }
|
|
|
|
|
|
+#!ifdef WITH_AUTH
|
|
|
|
+ if (is_method("REGISTER"))
|
|
|
|
+ {
|
|
|
|
+ # authenticate the REGISTER requests (uncomment to enable auth)
|
|
|
|
+ if (!www_authorize("", "subscriber"))
|
|
|
|
+ {
|
|
|
|
+ www_challenge("", "0");
|
|
|
|
+ exit;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ($au!=$tU)
|
|
|
|
+ {
|
|
|
|
+ sl_send_reply("403","Forbidden auth ID");
|
|
|
|
+ exit;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ # authenticate if from local subscriber (uncomment to enable auth)
|
|
|
|
+ if (from_uri==myself)
|
|
|
|
+ {
|
|
|
|
+ if (!proxy_authorize("", "subscriber")) {
|
|
|
|
+ proxy_challenge("", "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
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+#!endif
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
# Caller NAT detection route
|
|
# Caller NAT detection route
|
|
-/* uncomment the whole following route for enabling Caller NAT Detection */
|
|
|
|
route[NAT]{
|
|
route[NAT]{
|
|
-#n# force_rport();
|
|
|
|
-#n# if (nat_uac_test("19")) {
|
|
|
|
-#n# if (method=="REGISTER") {
|
|
|
|
-#n# fix_nated_register();
|
|
|
|
-#n# } else {
|
|
|
|
-#n# fix_nated_contact();
|
|
|
|
-#n# }
|
|
|
|
-#n# setflag(5);
|
|
|
|
-#n# }
|
|
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+ force_rport();
|
|
|
|
+ if (nat_uac_test("19")) {
|
|
|
|
+ if (method=="REGISTER") {
|
|
|
|
+ fix_nated_register();
|
|
|
|
+ } else {
|
|
|
|
+ fix_nated_contact();
|
|
|
|
+ }
|
|
|
|
+ setflag(5);
|
|
|
|
+ }
|
|
|
|
+#!endif
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
# RTPProxy control
|
|
# RTPProxy control
|
|
-/* uncomment the whole following route for enabling RTPProxy Control */
|
|
|
|
route[RTPPROXY] {
|
|
route[RTPPROXY] {
|
|
-#n# if (is_method("BYE")) {
|
|
|
|
-#n# unforce_rtp_proxy();
|
|
|
|
-#n# } else if (is_method("INVITE")){
|
|
|
|
-#n# force_rtp_proxy();
|
|
|
|
-#n# }
|
|
|
|
-#n# if (!has_totag()) add_rr_param(";nat=yes");
|
|
|
|
|
|
+#!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;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+# Sample branch router
|
|
branch_route[BRANCH_ONE] {
|
|
branch_route[BRANCH_ONE] {
|
|
xdbg("new branch at $ru\n");
|
|
xdbg("new branch at $ru\n");
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+# Sample onreply route
|
|
onreply_route[REPLY_ONE] {
|
|
onreply_route[REPLY_ONE] {
|
|
xdbg("incoming reply\n");
|
|
xdbg("incoming reply\n");
|
|
-
|
|
|
|
-#n# if ((isflagset(5) || isbflagset("6")) && status=~"(183)|(2[0-9][0-9])") {
|
|
|
|
-#n# force_rtp_proxy();
|
|
|
|
-#n# }
|
|
|
|
-#n# if (isbflagset("6")) {
|
|
|
|
-#n# fix_nated_contact();
|
|
|
|
-#n# }
|
|
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+ if ((isflagset(5) || isbflagset("6")) && status=~"(183)|(2[0-9][0-9])") {
|
|
|
|
+ force_rtp_proxy();
|
|
|
|
+ }
|
|
|
|
+ if (isbflagset("6")) {
|
|
|
|
+ fix_nated_contact();
|
|
|
|
+ }
|
|
|
|
+#!endif
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+# Sample failure route
|
|
failure_route[FAIL_ONE] {
|
|
failure_route[FAIL_ONE] {
|
|
-#n# if (is_method("INVITE")
|
|
|
|
-#n# && (isbflagset("6") || isflagset(5))) {
|
|
|
|
-#n# unforce_rtp_proxy();
|
|
|
|
-#n# }
|
|
|
|
|
|
+#!ifdef WITH_NAT
|
|
|
|
+ if (is_method("INVITE")
|
|
|
|
+ && (isbflagset("6") || isflagset(5))) {
|
|
|
|
+ unforce_rtp_proxy();
|
|
|
|
+ }
|
|
|
|
+#!endif
|
|
|
|
|
|
if (t_is_canceled()) {
|
|
if (t_is_canceled()) {
|
|
exit;
|
|
exit;
|