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
[snip]
loadmodule "uri_db.so" modparam("uri_db", "db_url", "mysql://openser:openserrw@192.168.1.2/openser") modparam("uri_db", "uri_table", "uri"
Te falta un paréntesis de cerrar justo encima.
####### Main Request Routing Logic ########
######################################################################## # Request route 'main' ######################################################################## route[0] {
[snip]
Muchas gracias. :D
Jan 18 05:50:01 [4880] NOTICE:core:main: config file ok, exiting...
_________________________________________________________________ MSN Video. http://video.msn.com/?mkt=es-es
El archivo de configuración ya se encuentra bien. Pero... OpenSER aun no se ejecuta.
# nmap -sU 192.168.1.2 -p 5060
Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-18 06:19 CST Interesting ports on Freedom.home (192.168.1.2): PORT STATE SERVICE 5060/udp closed sip
El puerto aparece "cerrado".... :| en el cortafuegos de openSUSE ya esta abierto el puerto UDP 5060. Alguna idea?
_________________________________________________________________ MSN Noticias http://noticias.msn.es/comunidad.aspx
On Friday 18 January 2008 13:25:57 Felícito Adán Escobar Manzano wrote:
El archivo de configuración ya se encuentra bien. Pero... OpenSER aun no se ejecuta.
# nmap -sU 192.168.1.2 -p 5060
Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-18 06:19 CST Interesting ports on Freedom.home (192.168.1.2): PORT STATE SERVICE 5060/udp closed sip
El puerto aparece "cerrado".... :| en el cortafuegos de openSUSE ya esta abierto el puerto UDP 5060. Alguna idea?
Pone el debug a 4 y arráncalo, te tiene que dar alguna(s) línea(s) de ERROR.
Ya cambié el debug a 4.
# openser Listening on udp: 192.168.1.2 [192.168.1.2]:5060 Aliases: udp: Freedom.home:5060
# nmap -sU 192.168.1.2 -p 5060
Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-18 06:42 CST Interesting ports on Freedom.home (192.168.1.2): PORT STATE SERVICE 5060/udp closed sip
Y continua cerrado....
También probe agregando "-ddddddddd" y no menciona ningún error, solo dice que esta escuchando en el puerto.... pero continua cerrado.
_________________________________________________________________ MSN Noticias http://noticias.msn.es/comunidad.aspx
On Friday 18 January 2008 13:46:44 Felícito Adán Escobar Manzano wrote:
Ya cambié el debug a 4.
# openser Listening on udp: 192.168.1.2 [192.168.1.2]:5060 Aliases: udp: Freedom.home:5060
# nmap -sU 192.168.1.2 -p 5060
Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-18 06:42 CST Interesting ports on Freedom.home (192.168.1.2): PORT STATE SERVICE 5060/udp closed sip
Y continua cerrado....
También probe agregando "-ddddddddd" y no menciona ningún error, solo dice que esta escuchando en el puerto.... pero continua cerrado.
Pon:
fork=yes log_stderror=yes
Pero no lo pongas sin más, aprovecha para leer en la documentación lo que implican: http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x
MSN Noticias http://noticias.msn.es/comunidad.aspx _______________________________________________ Users-es mailing list Users-es@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
Hecho Iñaki. El fork ya se encontraba en "yes" para que se ejecutara como un <> y cambié el log_stderror a "yes" para que en el debug se presenten los errores. Y ahora ya hay errores: ... Jan 18 07:00:59 [7660] ERROR:core:pv_parse_spec: bad parameters Jan 18 07:00:59 [7660] ERROR:auth:init_rpid_avp: malformed or non AVP s:rpid AVP definition Jan 18 07:00:59 [7660] ERROR:auth:mod_init: failed to process rpid AVPs Jan 18 07:00:59 [7660] ERROR:core:init_mod: failed to initialize module auth Jan 18 07:00:59 [7660] ERROR:core:main: error while initializing modules Jan 18 07:00:59 [7660] DBG:xlog:destroy: destroy module... ...
mmmm.......... :|
_________________________________________________________________ Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para estar siempre a la última http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMain...
On Friday 18 January 2008 14:09:13 Felícito Adán Escobar Manzano wrote:
Hecho Iñaki. El fork ya se encontraba en "yes" para que se ejecutara como un <> y cambié el log_stderror a "yes" para que en el debug se presenten los errores. Y ahora ya hay errores: ... Jan 18 07:00:59 [7660] ERROR:core:pv_parse_spec: bad parameters Jan 18 07:00:59 [7660] ERROR:auth:init_rpid_avp: malformed or non AVP s:rpid AVP definition Jan 18 07:00:59 [7660] ERROR:auth:mod_init: failed to process rpid AVPs Jan 18 07:00:59 [7660] ERROR:core:init_mod: failed to initialize module auth Jan 18 07:00:59 [7660] ERROR:core:main: error while initializing modules Jan 18 07:00:59 [7660] DBG:xlog:destroy: destroy module...
Pues pone más o menos claro que "malformed or non AVP s:rpid AVP definition" Busca en la doc del módulo "auth" sobre ese AVP y corrige la sintaxis.
Solucionado.
El problema estaba en el módulo auth:
modparam("auth", "rpid_avp", "s:rpid")
Según la documentación de OpenSER la AVP tiene que ir en el modulo auth_db. Entonces eliminé la línea mencionada anteriormente (modparam("auth", "rpid_avp", "s:rpid")) y modifique una en el módulo auth_db, y queda así:
modparam("auth_db", "load_credentials", "$avp(i:13)=rpid;email_address")
y con eso ya esta.-
# nmap -sU 192.168.1.2 -p 5060 Starting Nmap 4.20 ( http://insecure.org ) at 2008-01-18 07:57 CST Interesting ports on Freedom.home (192.168.1.2): PORT STATE SERVICE 5060/udp open|filtered sip
Nmap finished: 1 IP address (1 host up) scanned in 2.060 seconds
Muchas gracias a Saúl Ibarra e Iñaki Baz Castillo.
GRACIAS!! :D
_________________________________________________________________ MSN Video. http://video.msn.com/?mkt=es-es
sr-users-es@lists.kamailio.org