소스 검색

- fix error in default config that prevents the server start
- test 5 uses now the new config..


git-svn-id: https://openser.svn.sourceforge.net/svnroot/openser/trunk@3375 689a6050-402a-0410-94f2-e92a70836424

Henning Westerholt 18 년 전
부모
커밋
f527d1f4d5
2개의 변경된 파일331개의 추가작업 그리고 101개의 파일을 삭제
  1. 330 100
      test/unit/5.cfg
  2. 1 1
      test/unit/5.sh

+ 330 - 100
test/unit/5.cfg

@@ -1,32 +1,45 @@
 #
 # $Id$
 #
-# simple quick-start config script
+# OpenSER basic configuration script
+#     by Anca Vamanu <[email protected]>
+#
 # Please refer to the Core CookBook at http://www.openser.org/dokuwiki/doku.php
 # for a explanation of possible statements, functions and parameters.
 #
 
-# ----------- global configuration parameters ------------------------
 
-debug=3            # debug level (cmd line: -dddddddddd)
+####### Global Parameters #########
+
+debug=3
+log_stderror=no
+log_facility=LOG_LOCAL0
+
 fork=yes
-log_stderror=no    # (cmd line: -E)
 children=4
 
-port=5060
-
-# Uncomment these lines to enter debugging mode 
+/* uncomment the following lines to enable debugging */
+debug=6
 #fork=no
-#log_stderror=yes
+log_stderror=yes
+
+/* uncomment the next line to disable TCP (default on) */
+#disable_tcp=yes
 
-# Uncomment this to prevent the blacklisting of temporary not available destinations
-#disable_dns_blacklist=yes
+/* uncomment the next line to enable the auto temporary blacklisting of 
+   not available destinations (default disabled) */
+#disable_dns_blacklist=no
 
-# # Uncomment this to prevent the IPv6 lookup after v4 dns lookup failures
-#dns_try_ipv6=no
+/* uncomment the next line to enable IPv6 lookup after IPv4 dns 
+   lookup failures (default disabled) */
+#dns_try_ipv6=yes
 
-# uncomment the following lines for TLS support
-#disable_tls = 0
+/* 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
@@ -36,14 +49,21 @@ port=5060
 #tls_private_key = "/usr/local/etc/openser/tls/user/user-privkey.pem"
 #tls_ca_list = "/usr/local/etc/openser/tls/user/user-calist.pem"
 
-# ------------------ module loading ----------------------------------
 
-#set module path
-mpath="../modules/"
+port=5060
+
+/* uncomment and configure the following line if you want openser to 
+   bind on a specific interface/port/proto (default bind on all available) */
+#listen=udp:192.168.1.2:5060
 
-# Uncomment this if you want to use SQL database
-loadmodule "mysql/mysql.so"
 
+####### Modules Section ########
+
+#set module path
+mpath="../modules"
+
+/* uncomment next line for MySQL DB support */
+#loadmodule "mysql.so"
 loadmodule "sl/sl.so"
 loadmodule "tm/tm.so"
 loadmodule "rr/rr.so"
@@ -52,128 +72,338 @@ loadmodule "usrloc/usrloc.so"
 loadmodule "registrar/registrar.so"
 loadmodule "textops/textops.so"
 loadmodule "mi_fifo/mi_fifo.so"
+loadmodule "uri_db/uri_db.so"
+loadmodule "uri/uri.so"
+loadmodule "xlog/xlog.so"
+loadmodule "acc/acc.so"
+/* uncomment next lines for MySQL based authentication support 
+   NOTE: a DB (like mysql) module must be also loaded */
+#loadmodule "auth.so"
+#loadmodule "auth_db.so"
+/* uncomment next line for aliases support
+   NOTE: a DB (like mysql) module must be also loaded */
+#loadmodule "alias_db.so"
+/* uncomment next line for multi-domain support
+   NOTE: a DB (like mysql) module must be also loaded
+   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 mysql) module must be also loaded */
+#loadmodule "presence.so"
+#loadmodule "presence_xml.so"
 
-# Uncomment this if you want digest authentication
-# mysql.so must be loaded !
-loadmodule "auth/auth.so"
-loadmodule "auth_db/auth_db.so"
 
 # ----------------- setting module-specific parameters ---------------
 
-# -- mi_fifo params --
 
+# ----- mi_fifo params -----
 modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
 
-# -- usrloc params --
 
+# ----- 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)
+
+
+# ----- rr 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)
+
+
+# ----- uri_db params -----
+/* by default we disable the DB support in the module as we do not need it
+   in this configuration */
+modparam("uri_db", "use_uri_table", 0)
+modparam("uri_db", "db_url", "")
+
+
+# ----- acc params -----
+/* what sepcial events should be accounted ? */
+modparam("acc", "early_media", 1)
+modparam("acc", "report_ack", 1)
+modparam("acc", "report_cancels", 1)
+/* 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", "failed_transaction_flag", 3)
+modparam("acc", "log_flag", 1)
+modparam("acc", "log_missed_flag", 2)
+/* uncomment the following lines to enable DB accounting also */
+modparam("acc", "db_flag", 1)
+modparam("acc", "db_missed_flag", 2)
+
+
+# ----- usrloc params -----
 modparam("usrloc", "db_mode",   0)
+/* uncomment the following lines if you want to enable DB persistency
+   for location entries */
+#modparam("usrloc", "db_mode",   2)
+#modparam("usrloc", "db_url",
+#	"mysql://openser:[email protected]/openser_1_3")
 
-# Uncomment this if you want to use SQL database 
-# for persistent storage and comment the previous line
-modparam("usrloc", "db_mode", 2)
 
-# -- auth params --
-# Uncomment if you are using auth module
-#
-modparam("auth_db", "calculate_ha1", yes)
-#
-# If you set "calculate_ha1" parameter to yes (which true in this config), 
-# uncomment also the following parameter)
-#
-modparam("auth_db", "password_column", "password")
+# ----- auth_db params -----
+/* uncomment the following lines if you want to enable the DB based
+   authentication */
+#modparam("auth_db", "calculate_ha1", yes)
+#modparam("auth_db", "password_column", "password")
+#modparam("auth_db", "db_url",
+#	"mysql://openser:[email protected]/openser_1_3")
+#modparam("auth_db", "load_credentials", "")
+
+
+# ----- alias_db params -----
+/* uncomment the following lines if you want to enable the DB based
+   aliases */
+#modparam("alias_db", "db_url",
+#	"mysql://openser:[email protected]/openser_1_3")
+
+
+# ----- domain params -----
+/* uncomment the following lines to enable multi-domain detection
+   support */
+#modparam("domain", "db_url",
+#	"mysql://openser:[email protected]/openser_1_3")
+#modparam("domain", "db_mode", 1)   # Use caching
 
-# -- rr params --
-# add value to ;lr param to make some broken UAs happy
-modparam("rr", "enable_full_lr", 1)
 
-# -------------------------  request routing logic -------------------
+# ----- multi-module params -----
+/* uncomment the following line if you want to enable multi-domain support
+   in the modules (dafault off) */
+#modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
 
-# main routing logic
+
+# ----- presence params -----
+/* uncomment the following lines if you want to enable presence */
+#modparam("presence|presence_xml", "db_url",
+#	"mysql://openser:[email protected]/openser_1_3")
+#modparam("presence_xml", "force_active", 1)
+#modparam("presence", "server_address", "sip:192.168.1.2:5060")
+
+
+####### Routing Logic ########
+
+
+# main request routing logic
 
 route{
 
-	# initial sanity checks -- messages with
-	# max_forwards==0, or excessively long requests
 	if (!mf_process_maxfwd_header("10")) {
 		sl_send_reply("483","Too Many Hops");
 		exit;
-	};
-
-	if (msg:len >=  2048 ) {
-		sl_send_reply("513", "Message too big");
+	}
+
+	if (has_totag()) {
+		# sequential request withing a dialog should
+		# take the path determined by record-routing
+		if (loose_route()) {
+			if (is_method("BYE")) {
+				setflag(1); # do accouting ...
+				setflag(3); # ... even if the transaction fails
+			}
+			route(1);
+		} else {
+			sl_send_reply("404","Not here");
+		}
 		exit;
-	};
+	}
 
-	# we record-route all messages -- to make sure that
-	# subsequent messages will go through our proxy; that's
-	# particularly good if upstream and downstream entities
-	# use different transport protocol
-	if (!method=="REGISTER")
-		record_route();
+	#initial requests
 
-	# subsequent messages withing a dialog should take the
-	# path determined by record-routing
-	if (loose_route()) {
-		# mark routing logic in request
-		append_hf("P-hint: rr-enforced\r\n"); 
-		route(1);
-	};
+	# CANCEL processing
+	if (is_method("CANCEL"))
+	{
+		if (t_check_trans())
+			t_relay();
+		exit;
+	}
+
+	t_check_trans();
+
+	# authenticate if from local subscriber (uncomment to enable auth)
+	##if (!(method=="REGISTER") && from_uri==myself)
+	##{
+	##	if (!proxy_authorize("", "subscriber")) {
+	##		proxy_challenge("", "0");
+	##		exit;
+	##	}
+	##	if (!check_from()) {
+	##		sl_send_reply("403","Forbidden auth ID");
+	##		exit;
+	##	}
+	##
+	##	consume_credentials();
+	##	# caller authenticated
+	##}
+
+	# record routing
+	if (!is_method("REGISTER|MESSAGE"))
+		record_route();
 
-	if (!uri==myself) {
-		# mark routing logic in request
+	# account only INVITEs
+	if (is_method("INVITE")) {
+		setflag(1); # do accouting
+	}
+	if (!uri==myself)
+	/* replace with following line if multi-domain support is used */
+	##if (!is_uri_host_local())
+	{
 		append_hf("P-hint: outbound\r\n"); 
 		# if you have some interdomain connections via TLS
-		#if(uri=~"@tls_domain1.net") {
-		#	t_relay("tls:domain1.net");
-		#	exit;
-		#} else if(uri=~"@tls_domain2.net") {
-		#	t_relay("tls:domain2.net");
-		#	exit;
-		#}
+		##if($rd=="tls_domain1.net") {
+		##	t_relay("tls:domain1.net");
+		##	exit;
+		##} else if($rd=="tls_domain2.net") {
+		##	t_relay("tls:domain2.net");
+		##	exit;
+		##}
 		route(1);
-	};
+	}
 
-	# if the request is for other domain use UsrLoc
-	# (in case, it does not work, use the following command
-	# with proper names and addresses in it)
-	if (uri==myself) {
+	# requests for my domain
 
-		if (method=="REGISTER") {
+	/* uncomment this if you want to enable presence server 
+	   and comment the next 'if' block
+	   NOTE: uncomment also the definition of route[2] from  below */
+	##if( is_method("PUBLISH|SUBSCRIBE"))
+	##		route(2);
 
-			# Uncomment this if you want to use digest authentication
-			if (!www_authorize("openser.org", "subscriber")) {
-				www_challenge("openser.org", "0");
-				exit;
-			};
+	if (is_method("PUBLISH"))
+	{
+		sl_send_reply("503", "Service Unavailable");
+		exit;
+	}
+	
+
+	if (is_method("REGISTER"))
+	{
+		# authenticate the REGISTER requests (uncomment to enable auth)
+		##if (!www_authorize("", "subscriber"))
+		##{
+		##	www_challenge("", "0");
+		##	exit;
+		##}
+		##
+		##if (!check_to()) 
+		##{
+		##	sl_send_reply("403","Forbidden auth ID");
+		##	exit;
+		##}
+
+		if (!save("location"))
+			sl_reply_error();
 
-			save("location");
-			exit;
-		};
+		exit;
+	}
 
-		lookup("aliases");
-		if (!uri==myself) {
-			append_hf("P-hint: outbound alias\r\n"); 
-			route(1);
-		};
-
-		# native SIP destinations are handled using our USRLOC DB
-		if (!lookup("location")) {
-			sl_send_reply("404", "Not Found");
-			exit;
-		};
-		append_hf("P-hint: usrloc applied\r\n"); 
-	};
+	if ($rU==NULL) {
+		# request with no Username in RURI
+		sl_send_reply("484","Address Incomplete");
+		exit;
+	}
+
+	# apply DB based aliases (uncomment to enable)
+	##alias_db_lookup("dbaliases");
+
+	if (!lookup("location")) {
+		switch ($retcode) {
+			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
+	setflag(2);
 
 	route(1);
 }
 
 
 route[1] {
-	# send it out now; use stateful forwarding as it works reliably
-	# even for UDP2TCP
+	# for INVITEs enable some additional helper routes
+	if (is_method("INVITE")) {
+		t_on_branch("2");
+		t_on_reply("2");
+		t_on_failure("1");
+	}
+
 	if (!t_relay()) {
 		sl_reply_error();
 	};
 	exit;
 }
 
+
+# Presence route
+/* uncomment the whole following route for enabling presence
+   NOTE: do not forget to enable the call of this route from the main
+     route */
+##route[2]
+##{
+##	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;
+##}
+
+
+branch_route[2] {
+	xlog("new branch at $ru\n");
+}
+
+
+onreply_route[2] {
+	xlog("incoming reply\n");
+}
+
+
+failure_route[1] {
+	if (t_was_cancelled()) {
+		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();
+	##}
+}

+ 1 - 1
test/unit/5.sh

@@ -24,7 +24,7 @@
 CFG=5.cfg
 
 # start
-../openser -f $CFG > /dev/null
+../openser -f $CFG &> /dev/null
 ret=$?
 
 sleep 1