浏览代码

config cleanup

- enclose several former commented features within defines
- enabling such a feature requires just one 'define' as opposite of sed
  command used in 1.5 config
Daniel-Constantin Mierla 16 年之前
父节点
当前提交
9069082a2d
共有 1 个文件被更改,包括 200 次插入205 次删除
  1. 200 205
      etc/kamailio.cfg

+ 200 - 205
etc/kamailio.cfg

@@ -1,9 +1,8 @@
 #
 # $Id$
 #
-# Kamailio (OpenSER) SIP Server - basic configuration script
+# Kamailio (OpenSER) SIP Server v3.0 - basic configuration script
 #     - web: http://www.kamailio.org
-#     - svn: http://openser.svn.sourceforge.net/viewvc/openser/
 #     - git: http://sip-router.org
 #
 # 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
 # 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
-#     sed -i 's/#a#//g' kamailio.cfg
+#     - define WITH_AUTH
 #     - add users using 'kamctl'
 #
-# *** To enamble persistent user location execute:
+# *** To enable persistent user location execute:
 #     - enable mysql
-#     sed -i 's/#u#//g' kamailio.cfg
+#     - define WITH_USRLOCDB
 #
-# *** To enamble presence server execute:
+# *** To enable presence server execute:
 #     - 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
 #     - start RTPProxy:
 #        rtpproxy -l _your_public_ip_ -s udp:localhost:7722
 #
 # *** To enhance accounting execute:
 #     - enable mysql
-#     sed -i 's/#c#//g' kamailio.cfg
+#     - define WITH_ACCDB
 #     - 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 #########
 
+#!ifdef WITH_DEBUG
+debug=4
+log_stderror=yes
+#!else
 debug=2
+log_stderror=no
+#!endif
+
 memdbg=5
 memlog=5
-log_stderror=no
+
 log_facility=LOG_LOCAL0
 
 fork=yes
 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) */
 #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
    based on revers DNS on IPs (default on) */
 #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
 
 /* 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:192.168.1.2:5060
+#listen=udp:10.0.0.10:5060
 
 
 ####### Modules Section ########
@@ -111,7 +93,9 @@ port=5060
 mpath="/usr/local/lib/kamailio/modules_k/:/usr/local/lib/kamailio/modules/"
 
 /* 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 "kex.so"
 loadmodule "tm.so"
@@ -130,10 +114,10 @@ loadmodule "sanity.so"
 loadmodule "ctl.so"
 loadmodule "mi_rpc.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
    NOTE: a DB (like db_mysql) module must be also loaded */
 #loadmodule "alias_db.so"
@@ -142,12 +126,14 @@ loadmodule "acc.so"
    NOTE: be sure and enable multi-domain support in all used modules
          (see "multi-module params" section ) */
 #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 ---------------
 
@@ -193,31 +179,33 @@ modparam("acc", "log_flag", 1)
 modparam("acc", "log_missed_flag", 2)
 modparam("acc", "log_extra", 
 	"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 -----
-/* 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 -----
-/* 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 -----
 /* uncomment the following lines if you want to enable the DB based
@@ -241,20 +229,24 @@ modparam("acc", "log_extra",
 
 
 # ----- 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 ########
 
@@ -335,14 +327,6 @@ route{
 	##if (!is_uri_host_local())
 	{
 		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);
 	}
 
@@ -356,7 +340,8 @@ route{
 		if(isflagset(5))
 		{
 			setbflag("6");
-			# setbflag("7");
+			# uncomment next line to do SIP NAT pinging 
+			## setbflag("7");
 		}
 		if (!save("location"))
 			sl_reply_error();
@@ -394,12 +379,14 @@ route{
 
 
 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 */
 	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]
 {
-#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 (is_method("PUBLISH") || $rU==$null)
@@ -448,99 +436,106 @@ route[PRESENCE]
 }
 
 # Authentication route
-/* uncomment the whole following route for enabling authentication */
 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;
 }
 
 # Caller NAT detection route
-/* uncomment the whole following route for enabling Caller NAT Detection */
 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;
 }
 
 # RTPProxy control
-/* uncomment the whole following route for enabling RTPProxy Control */
 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;
 }
 
+# Sample branch router
 branch_route[BRANCH_ONE] {
 	xdbg("new branch at $ru\n");
 }
 
-
+# Sample onreply route
 onreply_route[REPLY_ONE] {
 	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] {
-#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()) {
 		exit;