modules/mangler/mangler.cfg
cf61e286
 #
 # $Id$
 #
 # simple quick-start config script
 #
 
 # WARNING: replace PUBLIC_IP with the public ip of the nat box
 #          (e.g.: 213.34.65.56 )
 
 # ----------- global configuration parameters ------------------------
 
 #debug=3		  # debug level (cmd line: -dddddddddd)
 #fork=no
 #log_stderror=yes
 
 check_via=no	# (cmd. line: -v)
 dns=no		   # (cmd. line: -r)
 rev_dns=no	  # (cmd. line: -R)
 #port=5060
 #children=4
 fifo="/tmp/ser_fifo"
 mhomed=yes
 disable_tls=yes
 
 
 # ------------------ module loading ----------------------------------
 
 
 loadmodule "modules/sl/sl.so"
 #loadmodule "modules/tm/tm.so"
 loadmodule "modules/rr/rr.so"
 loadmodule "modules/maxfwd/maxfwd.so"
 #loadmodule "modules/usrloc/usrloc.so"
 #loadmodule "modules/registrar/registrar.so"
 /* for the search()  export */
 loadmodule "modules/textops/textops.so"
 loadmodule "modules/mangler/mangler.so"
 
 
 # Uncomment this if you want digest authentication
 # mysql.so must be loaded !
 #loadmodule "/usr/lib/ser/modules/auth.so"
 
 # ----------------- setting module-specific parameters ---------------
 # seting separator for encoded contact
 modparam("mangler","contact_flds_separator","*")
 
 
 # -- usrloc params --
 #modparam("usrloc", "db_mode",   0)
 
 
 # -------------------------  request routing logic -------------------
 
 # main 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");
 		break;
 	};
 	if ( msg:len > max_len ) {
 		sl_send_reply("513", "Message too big");
 		break;
 	};
 
 	record_route();	
 
 	/* replace PUBLIC_IP with the public ip of the nat box
 	  (e.g.: 213.34.65.56 )*/
 
 	/* outgoing connection */
 	if (src_ip == 10.0.0.0/8 || src_ip == 192.168.0.0/16 ){
 		/* we mangle the contact address and ports in SDP part of the
 		 * message */
 		if (method == "INVITE"){
 			sdp_mangle_ip("0.0.0.0/0","PUBLIC_IP");
 			/* diferent mangling based on what phone we use */
 			if (src_ip==10.0.0.1) sdp_mangle_port("+1000");
 			if (src_ip==10.0.0.2) sdp_mangle_port("-1000");
 		};
 		if (search("Contact: .*@(10\.|111\.)")){
 			/* we seem to have a private address on a Contact which is not
 			 * valid */
 			encode_contact("enc_prefix","PUBLIC_IP");
 		};
 	/*
 		#if ser is behind a NAT and NAT box has port forwarding
 		#on port 5060 set to our ser private address ...
 		record_route(PUBLIC_IP);
 	*/
 	}; 
 	/* we received something for a local phone */
 	if (uri=~"enc_prefix*"){
 		decode_contact();
 	};
 
 	
 	# forward to current uri now
 	forward(uri:host, uri:port);
 	break;
 }