Before compiling.
In acc makefile, uncomment:
DEFS+=-DSQL_ACC
In main Makefile
exclude_modules?= cpl cpl-c extcmd \
snmp postgres \
im \
jabber mysql \ /*remove mysql*/
auth_radius group_radius uri_radius
Be sure that mysql module is rightly compiled, and mysql.so file is created.
In ser.cfg, the basic lines to enable accounting are:
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
modparam("acc", "db_url", "sql://ser:heslo@localhost/ser")
modparam("acc", "db_flag", 1)
//See if you put "log_flag", in this case you are logging in syslog.
In route () {
setflag(1);
//All will be marked with flag one enabled. This flag must be the same that
you are watching with "db_flag" parameter.
In my case, only this is necessary to obtain an accounting.
Best Regards
Hi,
the "normal" mechanism is to have two table, aliases and location. In the first one you have a "permament" binding between a an alias and the user name (AoR). In the latter, you update the binding between the username (AoR) and the current location treating the incoming REGISTER with save("location").
In your attached config file there is save("location"), which will update the location table:
> if (method=="REGISTER") {
>
># Uncomment this if you want to use digest
>authentication
> if
>(!www_authorize("justser.com", "subscriber")) {
>
>www_challenge("justser.com", "0");
> break;
> };
>
> save("location");
> break;
> };
, so you would have:
ALIASES LOCATION
900--->test test--->UA'sIP
When you do lookup("location") in
> # native SIP destinations are handled
>using our USRLOC DB
> if (!lookup("location")) {
> sl_send_reply("404", "Not
>Found");
> break;
> };
> };
you will rewrite the Req-URI to the binding existing in the location table, that's why they can reach the user with the username. And you sohuld do it because the user's UA will recognise requests with test in the Req-URI as targeted to itself but not requests with 900 in the Req-URI.
That's why you should make something like
lookup("aliases");
lookup("location");
in the config file to handle aliases.
If you don't want other people to reach the user with the AoR (I'm wondering you would like suche feature...): you should make somehting like (it's just a possible approach from many differents and don't know if it will work always....just experiment):
if( lookup("aliases") ){
if( ! lookup("location") ){
sl_send_reply("404", "Not Found");
break;
}
}
Hope it's clearer.....
Samuel
Unclassified.
>>> "Edgardo O. Gonzales II" <edgardo.g(a)pacific.net.ph> 05/17/05 01:20PM >>>
Hi!
I have a little problem with regards to alias and my routing table because
as I understand the logic of logging and authorization, client can login using
a username and password assigned by the administrator.
For example, I have the following information
username : test
password : test123
extension / alias : 900
By enabling radius support, for aaa, I was able to login using my username
and password.
Other parties can also call my extension / alias number which is 900 but I
wonder why they can
also call my username which is test. I have save("alias") on my config.
why is this happening.
thanks,
ed
At 03:24 AM 5/17/2005, Jose Bertuzzi wrote:
>Hello guys; I have everything in place to acc into
>mysql. I am already logging some BYEs, INVITEs and
>ACKs.
>
>Where do I have to place the setflag statement to
>properly log messages from and/to gw 66.166.166.66
>only?
>
>My ser.cfg is as follows:
>
>
># $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"
>#fifo_mode=0666
>
>
># ------------------ 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/acc.so"
>#loadmodule "/usr/local/lib/ser/modules/group.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)
>
>
># -- acc params --
>
>modparam("acc", "db_url",
>"mysql://ser:heslo@localhost/ser")
>#modparam("acc", "log_level", 1)
>#modparam("acc", "log_flag", 1)
>modparam("acc", "db_flag", 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=~"justser.com") {
>
> if (src_ip==66.166.166.66 and
>method=="INVITE") { ## Llamadas desde PSTN
> forward(uri:host, uri:port);
> ##
> break;
> ##
> };
> ##
>
>
> if (method=="REGISTER") {
>
># Uncomment this if you want to use digest
>authentication
> if
>(!www_authorize("justser.com", "subscriber")) {
>
>www_challenge("justser.com", "0");
> break;
> };
>
> save("location");
> break;
> };
>
>
>
> if
>(uri=~"^sip:1305[0-9]*@justser.com") { ##
> prefix("3000#");
> ##
>
>rewritehostport("66.166.166.66:5060"); ##
>TERMINATION
> forward(uri:host, uri:port);
> ## AREA CODE 305
> #setflag(1); ##
> break;
> ##
> };
> ##
>
>
> if
>(uri=~"^sip:1786[0-9]*@justser.com") { ##
> prefix("3000#");
> ##
>
>rewritehostport("66.166.166.66:5060"); ##
>TERMINATION
> forward(uri:host, uri:port);
> ## AREA CODE 786
> 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
>
> setflag(1);
>
> if (!t_relay()) {
> sl_reply_error();
> };
>
>}
>
>
>
>
>Yahoo! Mail
>Stay connected, organized, and protected. Take the tour:
>http://tour.mail.yahoo.com/mailtour.html
>
>_______________________________________________
>Serusers mailing list
>serusers(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
Hello guys; I have everything in place to acc into
mysql. I am already logging some BYEs, INVITEs and
ACKs.
Where do I have to place the setflag statement to
properly log messages from and/to gw 66.166.166.66
only?
My ser.cfg is as follows:
# $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"
#fifo_mode=0666
# ------------------ 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/acc.so"
#loadmodule "/usr/local/lib/ser/modules/group.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)
# -- acc params --
modparam("acc", "db_url",
"mysql://ser:heslo@localhost/ser")
#modparam("acc", "log_level", 1)
#modparam("acc", "log_flag", 1)
modparam("acc", "db_flag", 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=~"justser.com") {
if (src_ip==66.166.166.66 and
method=="INVITE") { ## Llamadas desde PSTN
forward(uri:host, uri:port);
##
break;
##
};
##
if (method=="REGISTER") {
# Uncomment this if you want to use digest
authentication
if
(!www_authorize("justser.com", "subscriber")) {
www_challenge("justser.com", "0");
break;
};
save("location");
break;
};
if
(uri=~"^sip:1305[0-9]*@justser.com") { ##
prefix("3000#");
##
rewritehostport("66.166.166.66:5060"); ##
TERMINATION
forward(uri:host, uri:port);
## AREA CODE 305
#setflag(1); ##
break;
##
};
##
if
(uri=~"^sip:1786[0-9]*@justser.com") { ##
prefix("3000#");
##
rewritehostport("66.166.166.66:5060"); ##
TERMINATION
forward(uri:host, uri:port);
## AREA CODE 786
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
setflag(1);
if (!t_relay()) {
sl_reply_error();
};
}
Yahoo! Mail
Stay connected, organized, and protected. Take the tour:
http://tour.mail.yahoo.com/mailtour.html
dear serusers,
the acc module on my ser make no inserts in the acc-table
i change the acc-makefile for mysql support
and add few lines from examp,config to my ser.cfg
i see acc-output in /var/log/messages
but nothing in the acc-table
serversion: 0.10.99-dev5
i searching in this list for any help, but all the questions to acc
from other users have been ignored
i hope anybody can help me
bg,
Grigory
Hi!
I'm playing around with the dispatcher module and got it working but ran
into some expected problems.
Once I load-balance registrations I do run into the situation that
I won't be able to know where to redirect an INVITE, i.e. due to aliases.
If I use 'touri' to balance registers (let's pretend all registers
have usernames not phone numbers) I can spread those (almost) evenly
across multiple servers.
Once I receive an invite for a username I can use the dispatcher
function with the 'touri' hash to properly forward the request.
What happens if I INVITE a phone number?
A user might have an alias (aka his phone number) but since he
registered with his username and all we know in the INVITE is the
phone number the hashes might differ.
I'm thinking about looking up the username for a phonenumber utilizing
radius (same should work with the DB backend) and then use
ds_select_dst() to get the proper SIP server.
So in worst case it adds one hop to the whole thing but prevents
me from looking up all aliases on the dispatching box.
Any hints to get this done?
Looking at the ds_select_dst() implementation I either have to
replace the touri in ser routing in order to pass an already modified
*sip_msg to it or add another function to lookup a dst for a given
clear text string that I should be able to pull from Radius.
Cheers,
Hendrik
--
freenet Cityline GmbH, Hamburger Chaussee 2-4, 24114 Kiel, Germany
Phone: +49 (0)431 9020552, Fax: +49 (0)431 9020559
Internet: http://www.freenet.de, eMail: hendrik.scholz(a)freenet-ag.de
Hello,
I am using ser 0.8.14
This is a part of my routing logic:
# send report to table acc, only INVITES and BYES
if (method=="INVITE" || method=="BYE") acc_db_request("accounting", "acc");
All INVITES and BYES are logged in table acc for my serweb to access.
Then I parse a succesful call by matching the INVITE and the BYE. So
far, the method works in all ATAs and hard phones EXCEPT Cisco ATA
186.
If the analog phone connected to Cisco ATA 186 sends the BYE, serweb
is UNABLE to parse the BYE and send to acc.
I traced the headers. This is the bye sent by Cisco ATA 186 (Version:
v3.1.0 atasip (Build 040211A)).
IP addresses to watch:
10.10.6.92 is the IP address of Cisco ATA 186
10.10.6.93 is the IP address of the SIP proxy server
10.10.6.96 is the phone being called (a Grandstream)
U 10.10.6.92:5060 -> 10.10.6.93:5060
BYE sip:116@10.10.6.93 SIP/2.0..Route:
<sip:116@10.10.6.96;user=phone>..Via: SIP/2.0/UDP
10.10.6.92:5060..From: <sip:1
12(a)10.10.6.93;user=phone>;tag=1264564150..To:
<sip:116@10.10.6.93;user=phone>;tag=358dd5aaed8faa35..Call-ID:
783982044
@10.10.6.92..CSeq: 2 BYE..User-Agent: Cisco ATA 186 v3.1.0 atasip
(040211A)..Content-Length: 0....
#
U 10.10.6.93:5060 -> 10.10.6.96:5060
BYE sip:116@10.10.6.96;user=phone SIP/2.0..Max-Forwards: 10..Via:
SIP/2.0/UDP 10.10.6.93;branch=z9hG4bKfe41.1cf00d23.0
..Via: SIP/2.0/UDP 10.10.6.92:5060..From:
<sip:112@10.10.6.93;user=phone>;tag=1264564150..To:
<sip:116@10.10.6.93;user
=phone>;tag=358dd5aaed8faa35..Call-ID: 783982044@10.10.6.92..CSeq: 2
BYE..User-Agent: Cisco ATA 186 v3.1.0 atasip (04
0211A)..Content-Length: 0....
#
U 10.10.6.96:5060 -> 10.10.6.93:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
10.10.6.93;branch=z9hG4bKfe41.1cf00d23.0..Via: SIP/2.0/UDP
10.10.6.92:5060..From: <si
p:112@10.10.6.93;user=phone>;tag=1264564150..To:
<sip:116@10.10.6.93;user=phone>;tag=358dd5aaed8faa35..Call-ID: 783982
044@10.10.6.92..CSeq: 2 BYE..User-Agent: Grandstream BT100
1.0.4.50..Contact: <sip:116@10.10.6.96;user=phone>..Allow:
INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE..Content-Length:
0....
#
U 10.10.6.93:5060 -> 10.10.6.92:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP 10.10.6.92:5060..From:
<sip:112@10.10.6.93;user=phone>;tag=1264564150..To: <sip:116@1
0.10.6.93;user=phone>;tag=358dd5aaed8faa35..Call-ID:
783982044@10.10.6.92..CSeq: 2 BYE..User-Agent: Grandstream BT100
1.0.4.50..Contact: <sip:116@10.10.6.96;user=phone>..Allow:
INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE..
Content-Length: 0....
Observe the first block above (the instant when Cisco sent the BYE)
and compare it to a working BYE sent by another phone. This is the
working BYE (note of the first block when the phone sent the BYE):
U 10.10.6.96:5060 -> 10.10.6.93:5060
BYE sip:112@10.10.6.92:5060;user=phone;transport=udp SIP/2.0..Via:
SIP/2.0/UDP 10.10.6.96;branch=z9hG4bK28a66e39511d3e
5c..Route: <sip:116@10.10.6.93;ftag=1540304939;lr=on>..From:
<sip:116@10.10.6.93;user=phone>;tag=46641aca1a1d8bac..To:
<sip:112@10.10.6.93;user=phone>;tag=1540304939..Contact:
<sip:116@10.10.6.96;user=phone>..Call-ID: 1958105398(a)10.10.6
.92..CSeq: 352 BYE..User-Agent: Grandstream BT100
1.0.4.50..Max-Forwards: 70..Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFE
R,OPTIONS,INFO,SUBSCRIBE..Content-Length: 0....
#
U 10.10.6.93:5060 -> 10.10.6.92:5060
BYE sip:112@10.10.6.92:5060;user=phone;transport=udp SIP/2.0..Via:
SIP/2.0/UDP 10.10.6.93;branch=z9hG4bKa401.62590761.
0..Via: SIP/2.0/UDP 10.10.6.96;branch=z9hG4bK28a66e39511d3e5c..From:
<sip:116@10.10.6.93;user=phone>;tag=46641aca1a1d8
bac..To: <sip:112@10.10.6.93;user=phone>;tag=1540304939..Contact:
<sip:116@10.10.6.96;user=phone>..Call-ID: 1958105398
@10.10.6.92..CSeq: 352 BYE..User-Agent: Grandstream BT100
1.0.4.50..Max-Forwards: 69..Allow: INVITE,ACK,CANCEL,BYE,NOT
IFY,REFER,OPTIONS,INFO,SUBSCRIBE..Content-Length: 0....
#
U 10.10.6.92:5060 -> 10.10.6.93:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
10.10.6.93;branch=z9hG4bKa401.62590761.0..Via: SIP/2.0/UDP
10.10.6.96;branch=z9hG4bK2
8a66e39511d3e5c..From:
<sip:116@10.10.6.93;user=phone>;tag=46641aca1a1d8bac..To:
<sip:112@10.10.6.93;user=phone>;tag=1
540304939..Call-ID: 1958105398@10.10.6.92..CSeq: 352 BYE..Server:
Cisco ATA 186 v3.1.0 atasip (040211A)..Allow: ACK,
BYE, CANCEL, INVITE, NOTIFY, OPTIONS, REFER, REGISTER..Content-Length: 0....
#
U 10.10.6.93:5060 -> 10.10.6.96:5060
SIP/2.0 200 OK..Via: SIP/2.0/UDP
10.10.6.96;branch=z9hG4bK28a66e39511d3e5c..From:
<sip:116@10.10.6.93;user=phone>;tag=
46641aca1a1d8bac..To:
<sip:112@10.10.6.93;user=phone>;tag=1540304939..Call-ID:
1958105398@10.10.6.92..CSeq: 352 BYE..S
erver: Cisco ATA 186 v3.1.0 atasip (040211A)..Allow: ACK, BYE,
CANCEL, INVITE, NOTIFY, OPTIONS, REFER, REGISTER..Cont
ent-Length: 0....
Hi, All
I have soem queries here
How can i disconnect the logged in user ... is there any trigger by which .. i can disconnect him after say 5 min ?
Secondly is there any way by which i can findout the distance at two ends ?
How can i set the calling standard like G711 or G723 or G726 .. is there any setting i need to do in ser.cfg ? I mean use should stick to that standard only .. even if they try to change .. ( silly question )
I want to test the voice mail feature .. how can i test ? say if use is not accepting the call then voice mail should get active .......... etc etc .
How can i add my contactes in to my MSN Messanger 5.1? because it gives error which say no contact found :(
Regards
Manoj ,
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Dear all,
I want to setup billing system in ser. Is there any opensource software so that I can integrate with ser voip.
How do I get CDR in ser voip ?
Thanks for help in advance.
Joel
hi,
I am trying to configure the ser with radius .. but what is a vendor id of SER
regards
Manoj
---------------------------------
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
I just performed a cvs update to 0.9.2. When I try to make or make modules
I get the following error for which I cannot find a solution. Has anyone
else
experienced this problem? If so any suggestions on how to fix it?
Thanks,Steve
[sip_router]$ sudo make
/bin/sh: -c: line 1: syntax error near unexpected token `<<<'
/bin/sh: -c: line 1: `set -e; gcc -MM -DNAME='"ser"'
-DVERSION='"0.9.2"' -DARCH='"i386"' -DOS='"linux"' -DCOMPILER='"gcc
3.2"' -D__CPU_i386 -D__OS_linux -DCFG_DIR='"/usr/local/etc/ser/"'
-DPKG_MALLOC -DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_IPV6 -DUSE_MCAST
-DUSE_TCP -DDISABLE_NAGLE <<<<<<< Makefile.defs -DFAST_LOCK
-DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DHAVE_GETHOSTBYNAME2
-DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD -DHAVE_MSG_NOSIGNAL
-DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H cfg.tab.c | sed
's#\(\(cfg.tabD)\)\?cfg.tab\)\.o[ :]*#cfg.tab.o cfg.tab.d : #g' >
cfg.tab.d; [ -s cfg.tab.d ] || rm -f cfg.tab.d'
make: *** [cfg.tab.d] Error 2