Hola.
Estoy intentando enrutar las llamadas en Openser 1.3 según el usuario origen, variando el puerto de destino de un gateway FXO. Para ello en el openser.cfg le intento incluir las líneas siguientes:
if ($fU == "44") { rewriteport("5068"); };
Al intentar arrancarlo me devuelve un erro de sintaxis en el parseo. ¿Alguien me podría indicar por favor a qué puede deberse? ¿Hay que hacer algo más para poder operar con esa variable?
Gracias.
Hola,
estas seguro que el error de sintaxis te sale de estas lineas? Parece todo bien.
Saludos, Elena-Ramona
Jose Fernandez wrote:
Hola.
Estoy intentando enrutar las llamadas en Openser 1.3 según el usuario origen, variando el puerto de destino de un gateway FXO. Para ello en el openser.cfg le intento incluir las líneas siguientes:
if ($fU == "44") { rewriteport("5068"); };
Al intentar arrancarlo me devuelve un erro de sintaxis en el parseo. ¿Alguien me podría indicar por favor a qué puede deberse? ¿Hay que hacer algo más para poder operar con esa variable?
Gracias.
Users-es mailing list Users-es@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/users-es
El Jueves, 10 de Julio de 2008, Jose Fernandez escribió:
Hola.
Estoy intentando enrutar las llamadas en Openser 1.3 según el usuario origen, variando el puerto de destino de un gateway FXO. Para ello en el openser.cfg le intento incluir las líneas siguientes:
if ($fU == "44") { rewriteport("5068"); };
Al intentar arrancarlo me devuelve un erro de sintaxis en el parseo. ¿Alguien me podría indicar por favor a qué puede deberse? ¿Hay que hacer algo más para poder operar con esa variable?
Pon el puerto sin comillas:
rewriteport(5068);
http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x#rewriteport_set...
Hola Iñaki,
El Jueves, 10 de Julio de 2008, Jose Fernandez escribió:
Hola.
Estoy intentando enrutar las llamadas en Openser 1.3 según el usuario origen, variando el puerto de destino de un gateway FXO. Para ello en el openser.cfg le intento incluir las líneas siguientes:
if ($fU == "44") { rewriteport("5068"); };
Al intentar arrancarlo me devuelve un erro de sintaxis en el parseo. ¿Alguien me podría indicar por favor a qué puede deberse? ¿Hay que hacer algo más para poder operar con esa variable?
Pon el puerto sin comillas:
rewriteport(5068);
http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x#rewriteport_set...
Parece un error en el ejemplo de dokuwiki. El parametro de rewriteport() tiene que ser STRING, cfg.y:
| SET_PORT LPAREN STRING RPAREN { mk_action2( $$, SET_PORT_T, STRING_ST, 0, $3, 0); } | SET_PORT error { $$=0; yyerror("missing '(' or ')' ?"); } | SET_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, " "string expected"); }
Saludos, Elena-Ramona
-- Iñaki Baz Castillo
El Jueves, 10 de Julio de 2008, Elena-Ramona Modroiu escribió:
Pon el puerto sin comillas:
rewriteport(5068);
http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x#rewriteport_ setport
Parece un error en el ejemplo de dokuwiki. El parametro de rewriteport()
tiene que ser STRING, cfg.y: | SET_PORT LPAREN STRING RPAREN { mk_action2( $$, SET_PORT_T, STRING_ST,
0, $3, 0); }
| SET_PORT error { $$=0; yyerror("missing '(' or ')' ?"); } | SET_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, " "string expected"); }
Cierto, y comprobado. He actualizado el wiki (1.2, 1.3, devel). Entonces, ¿qué fallaba?
if ($fU == "44") { rewriteport("5068"); };
Aquí todo está bien. Por favor José, pega el error que sale.
Saludos.
Muchas gracias por responder.
Os adjunto esa parte del openser.cfg, con las líneas numeradas:
148 149 if (uri=~"^sip:[0-1]*@*") { 150 rewritehost("192.168.10.2"); 151 if ($fU == "44") { 152 rewriteport("5068"); 153 }; 154 route(1); 155 return; 156 }; 157
Y la salida del /var/log/messages al intentar arrancar openser:
Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,11-13): syntax error Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,11-13): bad command (!!!attention: from v1.0.0+ use 'return' instead of 'break'!!!) Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,11-13): bad command (!!!attention: from v1.0.0+ use 'return' instead of 'break'!!!) Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,15-16): bad command (!!!attention: from v1.0.0+ use 'return' instead of 'break'!!!) Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,16-17): bad command (!!!attention: from v1.0.0+ use 'return' instead of 'break'!!!) Jul 11 11:17:58 QOS-VPN1 openser: parse error (151,18-19): bad command (!!!attention: from v1.0.0+ use 'return' instead of 'break'!!!) Jul 11 11:17:58 QOS-VPN1 openser: parse error (164,3-4): syntax error Jul 11 11:17:58 QOS-VPN1 openser: parse error (164,3-4):
La línea 164 que aparece como error al final corresponde al cierre "};" del condicional "if (uri==myself) {".
El problema está en el "$fU". He probado a sustituirlo directamente por "uri", sin sentido práctico pero simplemente para evitar el error de sintaxis, y efectivamente arranca bien Openser sin errores.
Saludos
Iñaki Baz Castillo escribió:
El Jueves, 10 de Julio de 2008, Elena-Ramona Modroiu escribió:
Pon el puerto sin comillas:
rewriteport(5068);
http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x#rewriteport_ setport
Parece un error en el ejemplo de dokuwiki. El parametro de rewriteport()
tiene que ser STRING, cfg.y: | SET_PORT LPAREN STRING RPAREN { mk_action2( $$, SET_PORT_T, STRING_ST,
0, $3, 0); }
| SET_PORT error { $$=0; yyerror("missing '(' or ')' ?"); } | SET_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, " "string expected"); }
Cierto, y comprobado. He actualizado el wiki (1.2, 1.3, devel). Entonces, ¿qué fallaba?
if ($fU == "44") { rewriteport("5068"); };
Aquí todo está bien. Por favor José, pega el error que sale.
Saludos.
Iñaki, ¿qué función cumple ese punto? Ese if lo tengo puesto para que todo lo marcado que empiece por 0 ó 1 lo envíe a "rewritehost".
Iñaki Baz Castillo escribió:
El Friday 11 July 2008 11:40:24 Jose Fernandez escribió:
149 if (uri=~"^sip:[0-1]*@*") {
Por cierto, eso está mal, supongo que quieres decir:
if (uri=~"^sip:[0-1]*@.*") { <--- 1 punto antes del último *
El Friday 11 July 2008 12:32:22 Jose Fernandez escribió:
Iñaki, ¿qué función cumple ese punto?
"^sip:[0-1]*@*" significa:
Todo lo que empiece por "sip" (en minúsculas) seguido de ":", de varios o ningún 0 ó 1, y luego ****cero o varias @****. No creo que esto sea lo que quieres, ya que números como estos NO te los coge:
- sip:03434@qweqwe - sip:1092@poiopi
Si pones un punto:
@.* =>
Una @ seguida de cualquier caracter (el punto) cero o varias veces.
Ese if lo tengo puesto para que todo lo marcado que empiece por 0 ó 1 lo envíe a "rewritehost".
Pues está mal, porque: [0-1]* => **cero** o varios ceros o unos. Y no pongas el guión que implica rango (aunque funciona de casualidad).
¿Qué tal vas de expresiones regulares? te veo ciertos fallos, mírate un manual de expresiones regulares, hazme caso.
PD ¿Por qué todo el mundo compara todo el URI cuando sólo quiere comparar el username? Yo haría esto:
if ( $rU == "^[01]" )
Pero no hagas la de probar si funciona la que te doy y no mirar un manual de expresiones regulares, que la volvería a pifiar más tarde ;)
Pues si... voy a tener que desempolvar los libros y repasar las expresiones regulares porque no es plan de andar con "estos pelos" por el mundo SIP... :-)
Muchas gracias por todo Iñaki. Me quedo también la idea del $rU.
Un saludo.
Iñaki Baz Castillo escribió:
El Friday 11 July 2008 12:32:22 Jose Fernandez escribió:
Iñaki, ¿qué función cumple ese punto?
"^sip:[0-1]*@*" significa:
Todo lo que empiece por "sip" (en minúsculas) seguido de ":", de varios o ningún 0 ó 1, y luego ****cero o varias @****. No creo que esto sea lo que quieres, ya que números como estos NO te los coge:
- sip:03434@qweqwe
- sip:1092@poiopi
Si pones un punto:
@.* =>
Una @ seguida de cualquier caracter (el punto) cero o varias veces.
Ese if lo tengo puesto para que todo lo marcado que empiece por 0 ó 1 lo envíe a "rewritehost".
Pues está mal, porque: [0-1]* => **cero** o varios ceros o unos. Y no pongas el guión que implica rango (aunque funciona de casualidad).
¿Qué tal vas de expresiones regulares? te veo ciertos fallos, mírate un manual de expresiones regulares, hazme caso.
PD ¿Por qué todo el mundo compara todo el URI cuando sólo quiere comparar el username? Yo haría esto:
if ( $rU == "^[01]" )
Pero no hagas la de probar si funciona la que te doy y no mirar un manual de expresiones regulares, que la volvería a pifiar más tarde ;)
El Friday 11 July 2008 13:03:37 Jose Fernandez escribió:
Pues si... voy a tener que desempolvar los libros y repasar las expresiones regulares porque no es plan de andar con "estos pelos" por el mundo SIP...
Da pereza eh? XDD Pero viene muy bien, son fallos que de otra forma cuesta encontrar.
He solucionado el problema.
Me da que tenía alguna tabulación que me estaba dando problemas, porque he vuelto a un openser.cfg que tenía anterior, le he incluido el if ($fU == "....., con el puerto entre comillas y ya me arranca bien Openser.
Muchas gracias a todos.
P.D.: Iñaki, en cualquier caso si no te importa me cuentas lo del punto ese que faltaba.
Iñaki Baz Castillo escribió:
El Jueves, 10 de Julio de 2008, Elena-Ramona Modroiu escribió:
Pon el puerto sin comillas:
rewriteport(5068);
http://www.openser.org/dokuwiki/doku.php/core-cookbook:1.3.x#rewriteport_ setport
Parece un error en el ejemplo de dokuwiki. El parametro de rewriteport()
tiene que ser STRING, cfg.y: | SET_PORT LPAREN STRING RPAREN { mk_action2( $$, SET_PORT_T, STRING_ST,
0, $3, 0); }
| SET_PORT error { $$=0; yyerror("missing '(' or ')' ?"); } | SET_PORT LPAREN error RPAREN { $$=0; yyerror("bad argument, " "string expected"); }
Cierto, y comprobado. He actualizado el wiki (1.2, 1.3, devel). Entonces, ¿qué fallaba?
if ($fU == "44") { rewriteport("5068"); };
Aquí todo está bien. Por favor José, pega el error que sale.
Saludos.
sr-users-es@lists.kamailio.org