Ups....sorry, forgot to CC the mailing list
Marian Dumitru wrote:
> Hi Felipe,
>
> Note "mysql" module is not compiled/ installed by default. Check if
> "/usr/local/lib/ser/modules/mysql.so" really exists.
> To get more info about the error (when loading mysql module), increase
> the debug level to 9.
>
> Beast regards,
> Marian
>
>
> Felipe Martins wrote:
>
>> Hello Everybody,
>>
>> I am using ser with mysql to authenticate my users, well, i'm
>> trying to use, i'm having an erro message when I start it. What I
>> exactly did was: start up ser (without mysql.so modulo at ser.cfg),
>> and started mysql database with just one table ... obviously when I
>> try to execute "# ser_mysql.sh create", this returns me the following
>> error because I don't have the mysql.so configured in the ser.cfg
>>
>> "ERROR 1064 (42000) at line 7: You have an error inyour SQL syntax;
>> check the manual that corresponds to your MySQL server version for the
>> right syntax to use near 'BY '47serro11'' at line 1"
>>
>> The problem is that when I configure the mysql.so at ser.cfg with the
>> line '"lodmodule "/usr/local/lib/ser/modules/mysql.so"' and start
>> again the ser server, the following error appears:
>> "ERROR: bad config file (1 errors)"
>>
>> Even if you could create the mysql tables with the ser_mysql.sh I
>> wouldn't be able to run ser with the mysql support. What am i doing
>> wrong ?
>>
>>
>>
>>
>
--
Voice Sistem
http://www.voice-sistem.ro
Sorry ... I forgot to pass all the data ... the above is my configured, almost not configured ser.cfg. When I start the server my cpes and SIP phones can connect to the server I configured but the only thing that must be done is to finish the configuration in order to integrate mysql databases to authenticate my users.
--------------- ser.cfg ---------------------
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
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"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
#loadmodule "/usr/local/lib/ser/modules/auth.so"
#loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 0)
# 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")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# ------------------------- 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;
};
# 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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# 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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("sipproxy.mundivox.com", "subscriber")) {
# www_challenge("sipproxy.mundivox.com", "0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
};
}
----------------- EOF ------------------------
Begin forwarded message:
Date: Tue, 7 Dec 2004 10:46:16 -0200
From: "Rodrigo CARNEIRO" <tulipa(a)coach4career.com.br>
To: "Felipe Martins" <fmartins(a)mundivox.com>
Subject: Re: [Serusers] SER MySQL Support Error !!!
Felipe,
It seems you have two differents issues there.
Copy down your ser.cfg here. It'll be easier to help you if you do so.
Rodrigo
----- Original Message -----
From: "Felipe Martins" <fmartins(a)mundivox.com>
To: <serusers(a)lists.iptel.org>
Sent: Tuesday, December 07, 2004 11:23 AM
Subject: [Serusers] SER MySQL Support Error !!!
> Hello Everybody,
>
> I am using ser with mysql to authenticate my users, well, i'm trying to
use, i'm having an erro message when I start it. What I exactly did was:
start up ser (without mysql.so modulo at ser.cfg), and started mysql
database with just one table ... obviously when I try to execute "#
ser_mysql.sh create", this returns me the following error because I don't
have the mysql.so configured in the ser.cfg
>
> "ERROR 1064 (42000) at line 7: You have an error inyour SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near 'BY '47serro11'' at line 1"
>
> The problem is that when I configure the mysql.so at ser.cfg with the line
'"lodmodule "/usr/local/lib/ser/modules/mysql.so"' and start again the ser
server, the following error appears:
>
> "ERROR: bad config file (1 errors)"
>
> Even if you could create the mysql tables with the ser_mysql.sh I wouldn't
be able to run ser with the mysql support. What am i doing wrong ?
>
>
>
>
> --
> Felipe Martins
> Linux System Administrator
> Tep Solution Provider
> Mundivox Communications
> Rua Lauro Muller, 116/Sala 505
> RJ - Brasil - 22290-906
> Tel.: 55 21 3820-8839
> Fax.: 55 21 3820-8844
>
> _______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
--
Felipe Martins
Linux System Administrator
Tep Solution Provider
Mundivox Communications
Rua Lauro Muller, 116/Sala 505
RJ - Brasil - 22290-906
Tel.: 55 21 3820-8839
Fax.: 55 21 3820-8844
Hi All,
Need some help :).. I'm trying to route a call from PSTN to SIP. I
have a Cisco SIP compliant GW which basically throws the SIP INVITE to my
SER proxy. Anyone kind enough to share a ser config? I tried sending the
INVITES from my Cisco GW to SER proxy but I'm getting an error from SER --
"SIP/2.0 500 I'm terribly sorry, server error occured". Has anyone
successfully done this?
btw, i'm using ser 0.8.12.
TIA.
hi to all
i'm trying to rewrite the URI using subst || subst_uri but everytime that i restart the ser i have an error message.
i suppose that the problem could be the syntax but ... there could be other problems?
i installed the packages for debian a couple of months ago so i suppose that these funcion were enabled. are there different regular expr to use for subst || subst_uri?
thnx
Graziano
Hello, I am a fresher of ser. I try most times to use cpl-c to do call forwarding when no answer or busy.I have got several result.I attached my ser.cfg and cpl scripts.
I got ser source code from cvs on 2004-11-30. please tell me how about debug or try! very thanks!
my try result:
1.no error,but do forwarding as redirect(call 100004 ,call 100002).
in my ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
2.cpl_run_script fail when cpl script do forwarding(call 100002). ua 100002 is ringing, caller receive 505. redirect is ok(call 100004).
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR: t_newtran: transaction already in process 0xbd6da0f8
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl-c:run_proxy: failed to build new transaction!
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl_c:cpl_run_script: runtime error
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: main loop: cpl_run_script fail
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","force_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
3. as result 2.
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
4. caller receive 500 as soon as when call, different result 3. the error is "Number no available,call rejected 500,I'm terribly sorry, server error occurred". (when call any online number)
cpl_run_script("incoming","is_stateful") and cpl_run_script("incoming","force_stateful")get same result.
-----------------------
###if (!t_newtran()) {
# it's a retransmission
### log(1,"main loop: t_newtran fail\n");
### break;
###};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
---------------------------------------------------------------------
| 100004(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<redirect/>
</location>
</incoming>
</cpl>
| 100002(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<subaction id="voicemail">
<location url="sip:100003@192.168.2.77:16800">
<proxy/>
</location>
</subaction>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<proxy timeout="8">
<busy>
<sub ref="voicemail"/>
</busy>
<noanswer>
<sub ref="voicemail"/>
</noanswer>
</proxy>
</location>
</incoming>
</cpl>
---------------------------------------------------------------------
my ser.cfg is:
---------------------------------------------------------------------
#
# $Id: ser.cfg,v 1.24 2003/11/11 15:32:36 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=9 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=16800
children=4
fifo="/tmp/ser_fifo"
# Additional Aliases
alias="192.168.2.77"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/cpl-c.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- cpl-c module --
modparam("cpl-c","cpl_db","mysql://ser:heslo@localhost/ser")
modparam("cpl-c","cpl_table","cpl")
modparam("cpl-c","cpl_dtd_file","/usr/local/etc/ser/cpl-06.dtd")
modparam("cpl-c","log_dir","/var/log/ser/cpl")
modparam("cpl-c","proxy_recurse",2)
modparam("cpl-c","lookup_domain","location")
# ------------------------- 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;
};
# 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();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
t_relay();
break;
};
lookup("aliases");
setflag(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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("192.168.2.77", "subscriber")) {
www_challenge("192.168.2.77", "0");
break;
};
# handle REGISTER messages with CPL script
cpl_process_register();
save("location");
break;
};
# process INVITE
if (method=="INVITE") {
# cpl interpreter requires a pre-created transaction for the processed INVITE
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
# we get here only if the CPL interpreter decided that server
# should follow it default behavior
# mark that there is already a created transaction for current INVITE
setflag(3);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward current uri now
if (!isflagset(3)) {
# build a new fresh transaction and forward
if (!t_relay()) {
sl_reply_error();
};
}
else {
# transaction exists -> do just forward
if (!t_forward_nonack_uri()) {
sl_reply_error();
};
};
}
-----------------------------------------------------------------------
Hello, I am a fresher of ser. I try most times to use cpl-c to do call forwarding when no answer or busy.I have got several result.I attached my ser.cfg and cpl scripts。
I got ser source code from cvs on 2004-11-30. please tell me how about debug or try! very thanks!
my try result:
1.no error,but do forwarding as redirect(call 100004 ,call 100002)。
in my ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
2.cpl_run_script fail when cpl script do forwarding(call 100002). ua 100002 is ringing, caller receive 505. redirect is ok(call 100004).
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR: t_newtran: transaction already in process 0xbd6da0f8
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl-c:run_proxy: failed to build new transaction!
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl_c:cpl_run_script: runtime error
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: main loop: cpl_run_script fail
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","force_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
3. as result 2.
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
4。 caller receive 500 as soon as when call, different result 3。the error is "Number no available,call rejected 500,I'm terribly sorry, server error occurred"。(when call any online number)
cpl_run_script("incoming","is_stateful") and cpl_run_script("incoming","force_stateful") get same result.
-----------------------
###if (!t_newtran()) {
# it's a retransmission
### log(1,"main loop: t_newtran fail\n");
### break;
###};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
―――――――――――――――――――
| 100004(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<redirect/>
</location>
</incoming>
</cpl>
| 100002(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<subaction id="voicemail">
<location url="sip:100003@192.168.2.77:16800">
<proxy/>
</location>
</subaction>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<proxy timeout="8">
<busy>
<sub ref="voicemail"/>
</busy>
<noanswer>
<sub ref="voicemail"/>
</noanswer>
</proxy>
</location>
</incoming>
</cpl>
―――――――――――――――――――
my ser.cfg is:
―――――――――――――――――――
#
# $Id: ser.cfg,v 1.24 2003/11/11 15:32:36 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=9 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=16800
children=4
fifo="/tmp/ser_fifo"
# Additional Aliases
alias="192.168.2.77"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/cpl-c.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- cpl-c module --
modparam("cpl-c","cpl_db","mysql://ser:heslo@localhost/ser")
modparam("cpl-c","cpl_table","cpl")
modparam("cpl-c","cpl_dtd_file","/usr/local/etc/ser/cpl-06.dtd")
modparam("cpl-c","log_dir","/var/log/ser/cpl")
modparam("cpl-c","proxy_recurse",2)
modparam("cpl-c","lookup_domain","location")
# ------------------------- 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;
};
# 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();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
t_relay();
break;
};
lookup("aliases");
setflag(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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("192.168.2.77", "subscriber")) {
www_challenge("192.168.2.77", "0");
break;
};
# handle REGISTER messages with CPL script
cpl_process_register();
save("location");
break;
};
# process INVITE
if (method=="INVITE") {
# cpl interpreter requires a pre-created transaction for the processed INVITE
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
# we get here only if the CPL interpreter decided that server
# should follow it default behavior
# mark that there is already a created transaction for current INVITE
setflag(3);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward current uri now
if (!isflagset(3)) {
# build a new fresh transaction and forward
if (!t_relay()) {
sl_reply_error();
};
}
else {
# transaction exists -> do just forward
if (!t_forward_nonack_uri()) {
sl_reply_error();
};
};
}
―――――――――――――――――――
Hello, I am a fresher of ser. I try most times to use cpl-c to do call forwarding when no answer or busy.I have got several result.I attached my ser.cfg and cpl scripts。
I got ser source code from cvs on 2004-11-30. please tell me how about debug or try! very thanks!
my try result:
1.no error,but do forwarding as redirect(call 100004 ,call 100002)。
in my ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
2.cpl_run_script fail when cpl script do forwarding(call 100002). ua 100002 is ringing, caller receive 505. redirect is ok(call 100004).
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR: t_newtran: transaction already in process 0xbd6da0f8
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl-c:run_proxy: failed to build new transaction!
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: ERROR:cpl_c:cpl_run_script: runtime error
Dec 7 13:52:10 localhost /usr/local/sbin/ser[15553]: main loop: cpl_run_script fail
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","force_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
3. as result 2.
now in ser.cfg is:
-----------------------
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
4。 caller receive 500 as soon as when call, different result 3。the error is "Number no available,call rejected 500,I'm terribly sorry, server error occurred"。(when call any online number)
cpl_run_script("incoming","is_stateful") and cpl_run_script("incoming","force_stateful") get same result.
-----------------------
###if (!t_newtran()) {
# it's a retransmission
### log(1,"main loop: t_newtran fail\n");
### break;
###};
if (!cpl_run_script("incoming","is_stateless")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
-----------------------
―――――――――――――――――――
| 100004(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<redirect/>
</location>
</incoming>
</cpl>
| 100002(a)192.168.2.77 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cpl PUBLIC '-//IETF//DTD RFCxxxx CPL 1.0//EN' 'cpl.dtd'>
<cpl>
<subaction id="voicemail">
<location url="sip:100003@192.168.2.77:16800">
<proxy/>
</location>
</subaction>
<incoming>
<location url="sip:100003@192.168.2.77:16800">
<proxy timeout="8">
<busy>
<sub ref="voicemail"/>
</busy>
<noanswer>
<sub ref="voicemail"/>
</noanswer>
</proxy>
</location>
</incoming>
</cpl>
―――――――――――――――――――
my ser.cfg is:
―――――――――――――――――――
#
# $Id: ser.cfg,v 1.24 2003/11/11 15:32:36 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
debug=9 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
# Uncomment these lines to enter debugging mode
#fork=no
#log_stderror=yes
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=16800
children=4
fifo="/tmp/ser_fifo"
# Additional Aliases
alias="192.168.2.77"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/cpl-c.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
modparam("usrloc", "db_mode", 2)
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- cpl-c module --
modparam("cpl-c","cpl_db","mysql://ser:heslo@localhost/ser")
modparam("cpl-c","cpl_table","cpl")
modparam("cpl-c","cpl_dtd_file","/usr/local/etc/ser/cpl-06.dtd")
modparam("cpl-c","log_dir","/var/log/ser/cpl")
modparam("cpl-c","proxy_recurse",2)
modparam("cpl-c","lookup_domain","location")
# ------------------------- 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;
};
# 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();
# subsequent messages withing a dialog should take the
# path determined by record-routing
if (loose_route()) {
t_relay();
break;
};
lookup("aliases");
setflag(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) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("192.168.2.77", "subscriber")) {
www_challenge("192.168.2.77", "0");
break;
};
# handle REGISTER messages with CPL script
cpl_process_register();
save("location");
break;
};
# process INVITE
if (method=="INVITE") {
# cpl interpreter requires a pre-created transaction for the processed INVITE
if (!t_newtran()) {
# it's a retransmission
log(1,"main loop: t_newtran fail\n");
break;
};
if (!cpl_run_script("incoming","is_stateful")) {
# script execution failed
log(1,"main loop: cpl_run_script fail\n");
t_reply("500", "CPL script execution failed");
};
# we get here only if the CPL interpreter decided that server
# should follow it default behavior
# mark that there is already a created transaction for current INVITE
setflag(3);
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# forward current uri now
if (!isflagset(3)) {
# build a new fresh transaction and forward
if (!t_relay()) {
sl_reply_error();
};
}
else {
# transaction exists -> do just forward
if (!t_forward_nonack_uri()) {
sl_reply_error();
};
};
}
―――――――――――――――――――
Hi,
I've installed SER and UA is xlite2.0.
While I changed the ser.cfg to use "digest authentication" I found that Xlite cannot make any response back to SER.
My Xlite can register to Brekeke server without problem and the challenge sequent order is different than SER's.
Challenge order using the Brekeke is something like
1.UA sends register without digest credentials
2.Brekeke reply with 401 and include digest challenge.
3.Phone asks for username/password
4.Phone sends another Register
5.Brekeke sends 200 ok
But from the captured packets I found my SER challenge order is:
1.UA sends register without digest credentials
2.SER sends 200 ok
3.SER sends 401unauthorized packet with digest challenge
4.Xlite does not make any response to digest challenge
Does anyone have same problem? Please give me some suggestion. Thanks.
Ted
Followings are my settings and log file from Xlite
---------------------------------------------------------------------------------------------------------------------------------------------------
My Xlite settings:
SIP Proxy
Enabled: yes
User Name: aaaa
Authorization user: aaaa
Password: aaaa
Domain/Realm: siptest2.com
SIP Proxy: 192.168.13.195
Out Bound Proxy:
Proxy Mode: Normal
Send Internal IP: Always
---------------------------------------------------------------------------------------------------------------------------------------------
Ser.cfg file:
if (uri==myself) {
# if (uri==~"siptest2.com") {
lookup("aliases");
save("aliases");
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("siptest2.com", "subscriber")) {
www_challenge("siptest2.com", "0");
break;
};
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
-------------------------------------------------------------------------------------------------------------------------------
XLite Log:
c 2004 Xten Networks, Inc. All rights reserved.
X-Lite release 1103m build stamp 14262
License key: F6775B3A009F49A6A8731A9FF47F4925
Established SIP protocol listen on: 192.168.13.45:5060
SIP: 192.168.13.45:5060
RTP: 192.168.13.45:8000
NAT: 203.70.51.158
Firewall Discovery Skipped
PROXY#0: 192.168.13.195:5060
SEND TIME: 71179320
SEND >> 192.168.13.195:5060
REGISTER sip:siptest2.com SIP/2.0
Via: SIP/2.0/UDP 203.70.51.158:5060;rport;branch=z9hG4bKB2835C30DFBD445CBCE7A0EF7102666C
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>
Contact: "7788" <sip:aaaa@203.70.51.158:5060>
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4425 REGISTER
Expires: 1800
Max-Forwards: 70
User-Agent: X-Lite release 1103m
Content-Length: 0
RECEIVE TIME: 71179330
RECEIVE << 192.168.13.195:5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP 203.70.51.158:5060;rport=5060;branch=z9hG4bKB2835C30DFBD445CBCE7A0EF7102666C;received=192.168.13.45
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>;tag=b27e1a1d33761e85846fc98f5f3a7e58.4cd2
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4425 REGISTER
Contact: <sip:aaaa@203.70.51.158:5060>;q=0.00;expires=1800
Server: Sip EXpress router (0.8.12 (i386/linux))
Content-Length: 0
Warning: 392 192.168.13.195:5060 "Noisy feedback tells: pid=3854 req_src_ip=192.168.13.45 req_src_port=5060 in_uri=sip:siptest2.comout_uri=sip:siptest2.com via_cnt==1"
RECEIVE TIME: 71179330
RECEIVE << 192.168.13.195:5060
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 203.70.51.158:5060;rport=5060;branch=z9hG4bKB2835C30DFBD445CBCE7A0EF7102666C;received=192.168.13.45
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>;tag=b27e1a1d33761e85846fc98f5f3a7e58.4cd2
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4425 REGISTER
Contact: <sip:aaaa@203.70.51.158:5060>;q=0.00;expires=1800
WWW-Authenticate: Digest realm="siptest2.com", nonce="41aa11fb6be5ff8f82db0c5b411b09bec6326874"
Server: Sip EXpress router (0.8.12 (i386/linux))
Content-Length: 0
Warning: 392 192.168.13.195:5060 "Noisy feedback tells: pid=3854 req_src_ip=192.168.13.45 req_src_port=5060 in_uri=sip:siptest2.comout_uri=sip:siptest2.com via_cnt==1"
SEND TIME: 72969444
SEND >> 192.168.13.195:5060
REGISTER sip:siptest2.com SIP/2.0
Via: SIP/2.0/UDP 203.70.51.158:5060;rport;branch=z9hG4bKB05B820332FD41F3996EE88B69B15047
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>
Contact: "7788" <sip:aaaa@203.70.51.158:5060>
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4426 REGISTER
Expires: 1800
Max-Forwards: 70
User-Agent: X-Lite release 1103m
Content-Length: 0
RECEIVE TIME: 72969624
RECEIVE << 192.168.13.195:5060
SIP/2.0 200 OK
Via: SIP/2.0/UDP 203.70.51.158:5060;rport=5060;branch=z9hG4bKB05B820332FD41F3996EE88B69B15047;received=192.168.13.45
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>;tag=b27e1a1d33761e85846fc98f5f3a7e58.4d70
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4426 REGISTER
Contact: <sip:aaaa@203.70.51.158:5060>;q=0.00;expires=1800
Server: Sip EXpress router (0.8.12 (i386/linux))
Content-Length: 0
Warning: 392 192.168.13.195:5060 "Noisy feedback tells: pid=3850 req_src_ip=192.168.13.45 req_src_port=5060 in_uri=sip:siptest2.comout_uri=sip:siptest2.com via_cnt==1"
RECEIVE TIME: 72969624
RECEIVE << 192.168.13.195:5060
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 203.70.51.158:5060;rport=5060;branch=z9hG4bKB05B820332FD41F3996EE88B69B15047;received=192.168.13.45
From: 7788 <sip:aaaa@siptest2.com>;tag=4229923641
To: 7788 <sip:aaaa@siptest2.com>;tag=b27e1a1d33761e85846fc98f5f3a7e58.4d70
Call-ID: E9D219D38ED74352BE61793371C150A0(a)siptest2.com <mailto:E9D219D38ED74352BE61793371C150A0@siptest2.com>
CSeq: 4426 REGISTER
Contact: <sip:aaaa@203.70.51.158:5060>;q=0.00;expires=1800
WWW-Authenticate: Digest realm="siptest2.com", nonce="41aa18f9a539df7f1af6e0547175a252a158aa4d"
Server: Sip EXpress router (0.8.12 (i386/linux))
Content-Length: 0
Warning: 392 192.168.13.195:5060 "Noisy feedback tells: pid=3850 req_src_ip=192.168.13.45 req_src_port=5060 in_uri=sip:siptest2.comout_uri=sip:siptest2.com via_cnt==1"
*************************************************************************************************************************
This email message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. [Delta Electronic, INC. Taiwan]
*************************************************************************************************************************
Helo list,
I was wondering if it is posible to use SER with RADIUS support to force
hang up the call if the customer has not enough credit to continue talking.
I know Accounting-requests to the radius server are only sent at the
beggining and end of the conversation.
Could i send a session timeout during authorization?
Thank you.
Hello List! I think it would be a good idea to separate the forum by suject, for example,
Database and Radius
Routing
Registration
NAT
RTP Proxy
Miscelaneus
Or something like that.
Pablo Bertuzzi
---------------------------------
Do you Yahoo!?
Yahoo! Mail - now with 250MB free storage. Learn more.