[OpenSER-Users-ES] Problema: OpenSER 1.3 en openSUSE 10.3

Felícito Adán Escobar Manzano f.manzano at hotmail.com
Fri Jan 18 07:50:05 CET 2008


Hola a todos los miembros del grupo.

Que bueno encontrar un grupo de VoIP en español. Un saludo a todos desde El Salvador, Centroamérica.-

Anteriormente he trabajado con OpenSER 10.2 en Novell SUSE 10.0 y funcionó bien. Pero un día la maquina... pues se murió :( Actualmente me encuentro trabajando con la distribución openSUSE 10.3 y también me actualicé al OpenSER 1.3. Ya instale OpenSER con las RPM disponibles en los repositorios de openSUSE. Me encontre con varios problemas, seguramente por una mala construcción de la RPM. (los modulos *.so se encuentran en: "/usr/lib/openser/modules/", no se creó el archivo openser_mysql.sh, un amigo me lo presto, etcétera)... Hasta que finalmente ya se encuentra instalado.

Tenía un Back Up de mi archivo de configuración anterior [construido en sipwise.com], al utilizarlo me he dado cuenta que el OpenSER ha cambiado :s, Ya he pasado de 23 errores a 2 errores. Al ejecutar: openser -c me indica:

Jan 18 00:18:56 [27609] CRITICAL:core:yyerror: parse error in config file, line 151, column 1-6: syntax error
Jan 18 00:18:56 [27609] CRITICAL:core:yyerror: parse error in config file, line 151, column 1-6: Invalid arguments

Pues... al buscar en el archivo de configuración la línea 151 lo que contiene es esto:

route[0]

Que es donde inicia la lógica de ruteo para manejar el protocolo SIP. Entonces...... me he quedado :|
Leyendo los debates del grupo... me he percatado que la mayoria en esa línea hace un: "route{", ya lo cambié a esa forma... y pues... no mejoro.

La verdad es que no comprendo.... ¿porque no reconoce "route"?........

Este es mi archivo openser.cfg (Cualquier sugerencia para mejorarlo es bienvenida :D)

PD: Mis disculpas si es demasiado largo y más de alguno se aburre...

# $Id: openser.cfg 3284 2007-12-06 18:56:59Z bogdan_iancu $
# Please refer to the Core CookBook at http://www.openser.org/dokuwiki/doku.php
# for a explanation of possible statements, functions and parameters.

####### Global Parameters #########
listen = udp:192.168.1.2:5060 		
mpath = "/usr/lib/openser/modules/"	
children = 4
debug = 9
fork = yes
group = "openser"		
user = "openser"		
disable_tcp = no		
log_facility = LOG_DAEMON	
log_stderror = no		
tcp_children = 4		
mhomed = no			
server_signature = yes		
reply_to_via = no		
sip_warning = no		
check_via=no
dns=no
rev_dns=no
disable_core_dump = no		
dns_try_ipv6 = yes		
dns_use_search_list = yes	
port=5060

####### Modules Section ########
loadmodule "usrloc.so"
modparam("usrloc", "user_column", "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column", "contact")
modparam("usrloc", "expires_column", "expires")
modparam("usrloc", "q_column", "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column", "cseq")
modparam("usrloc", "methods_column", "methods")
modparam("usrloc", "flags_column", "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column", "received")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain", 0)
modparam("usrloc", "desc_time_order", 0)
modparam("usrloc", "timer_interval", 60)
modparam("usrloc", "db_url", "mysql://openser:openserrw@192.168.1.2/openser")
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "matching_mode", 0)
modparam("usrloc", "cseq_delay", 20)
modparam("usrloc", "nat_bflag", 6)

loadmodule "textops.so"

loadmodule "rr.so"
modparam("rr", "enable_full_lr", 1)
modparam("rr", "append_fromtag", 1)
modparam("rr", "enable_double_rr", 1)
modparam("rr", "add_username", 0)

loadmodule "tm.so"
modparam("tm", "fr_timer", 30)
modparam("tm", "fr_inv_timer", 120)
modparam("tm", "wt_timer", 5)
modparam("tm", "delete_timer", 2)
modparam("tm", "noisy_ctimer", 0)
modparam("tm", "ruri_matching", 1)
modparam("tm", "via1_matching", 1)
modparam("tm", "unix_tx_timeout", 2)
modparam("tm", "restart_fr_on_each_reply", 1)
modparam("tm", "pass_provisional_replies", 0)

loadmodule "xlog.so"
modparam("xlog", "buf_size", 4096)
modparam("xlog", "force_color", 0)


loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
modparam("mi_fifo", "fifo_mode", 0660)
modparam("mi_fifo", "fifo_group", "openser")
modparam("mi_fifo", "fifo_user", "openser")
modparam("mi_fifo", "reply_dir", "/tmp/")
modparam("mi_fifo", "reply_indent", "\t")

loadmodule "domain.so"
modparam("domain", "db_url", "mysql://openser:openserrw@192.168.1.2/openser")
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")

loadmodule "nathelper.so"
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock", "unix:/var/run/rtpproxy.sock")
modparam("nathelper", "rtpproxy_disable_tout", 60)
modparam("nathelper", "rtpproxy_tout", 1)
modparam("nathelper", "rtpproxy_retr", 5)
modparam("nathelper", "sipping_method", "OPTIONS")
modparam("nathelper", "received_avp", "$avp(i:801)")

loadmodule "sl.so"
modparam("sl", "enable_stats", 1)

loadmodule "uri.so"

loadmodule "registrar.so"
modparam("registrar", "default_expires", 3600)
modparam("registrar", "min_expires", 60)
modparam("registrar", "max_expires", 0)
modparam("registrar", "default_q", 0)
modparam("registrar", "append_branches", 1)
modparam("registrar", "case_sensitive", 0)
modparam("registrar", "received_param", "received")
modparam("registrar", "max_contacts", 0)
modparam("registrar", "retry_after", 0)
modparam("registrar", "method_filtering", 0)
modparam("registrar", "path_mode", 2)
modparam("registrar", "path_use_received", 0)

loadmodule "maxfwd.so"
modparam("maxfwd", "max_limit", 256)

loadmodule "mysql.so"
modparam("mysql", "ping_interval", 300)
modparam("mysql", "auto_reconnect", 1)

loadmodule "auth.so"
modparam("auth", "nonce_expire", 300)
modparam("auth", "rpid_suffix", ";party=calling;id-type=subscriber;screen=yes")
modparam("auth", "rpid_avp", "s:rpid")

loadmodule "auth_db.so"
modparam("auth_db", "db_url", "mysql://openser:openserrw@192.168.1.2/openser")
modparam("auth_db", "user_column", "username")
modparam("auth_db", "domain_column", "domain")
modparam("auth_db", "password_column", "password")
modparam("auth_db", "password_column_2", "ha1b")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "use_domain", 0)
modparam("auth_db", "load_credentials", "rpid")

loadmodule "uri_db.so"
modparam("uri_db", "db_url", "mysql://openser:openserrw@192.168.1.2/openser")
modparam("uri_db", "uri_table", "uri"

####### Main Request Routing Logic ########

########################################################################
# Request route 'main'
########################################################################
route[0]
{
	xlog("L_INFO", "New request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	force_rport();
	if(msg:len> max_len)
	{
		
		xlog("L_INFO", "Message too big - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_send_reply("513", "Message Too Big");
		exit;
	}
	if (!mf_process_maxfwd_header("10"))
	{
		
		xlog("L_INFO", "Too many hops - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_send_reply("483", "Too Many Hops");
		exit;
	}
	if(!is_method("REGISTER"))
	{
		if(nat_uac_test("19"))
		{
			record_route(";nat=yes");
		}
		else
		{
			record_route();
		}
	}
	if(is_method("CANCEL") || is_method("BYE"))
	{
		unforce_rtp_proxy();
	}
	if(loose_route())
	{
		if(!has_totag())
		{
			
			xlog("L_INFO", "Initial loose-routing rejected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
			sl_send_reply("403", "Initial Loose-Routing Rejected");
			exit;
		}
		if(nat_uac_test("19") || search("^Route:.*;nat=yes"))
		{
			fix_nated_contact();
			setbflag(6);
		}
		
		route(3);
	}
	if(is_method("REGISTER"))
	{
		route(2);
	}
	if(is_method("INVITE"))
	{
		route(4);
	}
	if(is_method("CANCEL") || is_method("ACK"))
	{
		route(8);
	}
	
	route(9);
}

########################################################################
# Request route 'stop-rtp-proxy'
########################################################################
route[1]
{
	if(isflagset(22))
	{
		unforce_rtp_proxy();
	}
	
}

########################################################################
# Request route 'base-route-register'
########################################################################
route[2]
{
	sl_send_reply("100", "Trying");
	if(!www_authorize("", "subscriber")) 
	{
		
		xlog("L_INFO", "Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		www_challenge("", "0");
		exit;
	}
	if(!check_to()) 
	{
		
		xlog("L_INFO", "Spoofed To-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_send_reply("403", "Spoofed To-URI Detected");
		exit;
	}
	consume_credentials();
	if(!search("^Contact:[ ]*\*") && nat_uac_test("19")) 
	{
		fix_nated_register();
		setbflag(6);
	}
	if(!save("location")) 
	{
		
		xlog("L_ERR", "Saving contact failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_reply_error();
		exit;
	}
	
	xlog("L_INFO", "Registration successful - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	exit;
	
}

########################################################################
# Request route 'base-outbound'
########################################################################
route[3]
{
	if(isbflagset(6))
	{
		if(!isflagset(22) && !search("^Content-Length:[ ]*0"))
		{
			setflag(22);
			force_rtp_proxy();
		}
		
		t_on_reply("2");
	}
	else
	{
		
		t_on_reply("1");
	}
	if(!isflagset(21))
	{
		
		t_on_failure("1");
	}
	if(isflagset(29))
	{
		append_branch();
	}
	if(is_present_hf("Proxy-Authorization"))
	{
		consume_credentials();
	}
	
	xlog("L_INFO", "Request leaving server, D-URI='$du' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	# no 100 (we already sent it) and no DNS blacklisting
	if(!t_relay("0x05"))
	{
		sl_reply_error();
		if(is_method("INVITE") && isbflagset(6))
		{
			unforce_rtp_proxy();
		}
	}
	exit;
	
}

########################################################################
# Request route 'base-route-invite'
########################################################################
route[4]
{
	sl_send_reply("100", "Trying");
	if(!proxy_authorize("", "subscriber")) 
	{
		
		xlog("L_INFO", "Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		proxy_challenge("", "0");
		exit;
	}
	if(!check_from()) 
	{
		
		xlog("L_INFO", "Spoofed From-URI detected - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_send_reply("403", "Spoofed From-URI Detected");
		exit;
	}
	if(nat_uac_test("19")) 
	{
		fix_nated_contact();
		setbflag(6);
	}
	
	route(5);
}

########################################################################
# Request route 'invite-find-callee'
########################################################################
route[5]
{
	if(!is_domain_local("$rd"))
	{
		setflag(20);
		
		route(7);
	}
	if(does_uri_exist())
	{
		
		xlog("L_INFO", "Callee is local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		route(6);
	}
	else
	{
		
		xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		route(7);
	}
	exit;
	
}

########################################################################
# Request route 'invite-to-internal'
########################################################################
route[6]
{
	if(!lookup("location")) 
	{
		
		xlog("L_INFO", "Local user offline - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		sl_send_reply("404", "User Offline");
	}
	else
	{
		
		xlog("L_INFO", "Local user online - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		route(3);
	}
	exit;
	
}

########################################################################
# Request route 'invite-to-external'
########################################################################
route[7]
{
	if(isflagset(20))
	{
		
		xlog("L_INFO", "Call to foreign domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		route(3);
		exit;
	}
	
	xlog("L_INFO", "Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	sl_send_reply("404", "User Not Found");
	exit;
	
}

########################################################################
# Request route 'base-route-local'
########################################################################
route[8]
{
	t_on_reply("1");
	if(t_check_trans())
	{
		
		xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		if(!t_relay())
		{
			sl_reply_error();
		}
	}
	else
	{
		
		xlog("L_INFO", "Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	}
	exit;
	
}

########################################################################
# Request route 'base-route-generic'
########################################################################
route[9]
{
	xlog("L_INFO", "Method not supported - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
	sl_send_reply("501", "Method Not Supported Here");
	exit;
	
}

########################################################################
# Request route 'base-filter-failover'
########################################################################
route[10]
{
	if(!t_check_status("408|500|503"))
	{
		
		xlog("L_INFO", "No failover routing needed for this response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
		route(1);
		exit;
	}
	
}

########################################################################
# Reply route 'base-standard-reply'
########################################################################
onreply_route[1]
{
	xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
	exit;
	
}

########################################################################
# Reply route 'base-nat-reply'
########################################################################
onreply_route[2]
{
	xlog("L_INFO", "NAT-Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
	if(nat_uac_test("1"))
	{
		fix_nated_contact();
	}
	if(isbflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") 
	{
		if(!search("^Content-Length:[ ]*0"))
		{
			force_rtp_proxy();
		}
	}
	exit;
	
}

########################################################################
# Failure route 'base-standard-failure'
########################################################################
failure_route[1]
{
	route(10);
	route(1);
}
_________________________________________________________________
MSN Video. 
http://video.msn.com/?mkt=es-es



More information about the Users-es mailing list