hi, when ever i startup SER with this function used, "nat_uac_test", i get
the cfg loading error "is some module missing"
i know the function is in nathelper module, and it is loaded too.
can someone tell me what to do in order to use this function?
below is a sample code using nat_uac_test. thx in advance.
marty.
==============================================================
if (nat_uac_test("3")) {
# allow RR-ed requests, as these may indicate that
# a NAT-enabled proxy takes care of it; unless it is
# a REGISTER
if (method == "REGISTER" || ! search("ˆRecord-Route:")) {
log("LOG: Someone trying to register from private IP, rewriting\n");
# This will work only for user agents that support symmetric
# communication. We tested quite many of them and majority is
# smart smart enough to be symmetric. In some phones, like
# it takes a configuration option. With Cisco 7960, it is
# called NAT_Enable=Yes, with kphone it is called
# "symmetric media" and "symmetric signaling". (The latter
# not part of public released yet.)
fix_nated_contact(); # Rewrite contact with source IP of signalling
if (method == "INVITE") {
fix_nated_sdp("1"); # Add direction=active to SDP
};
force_rport(); # Add rport parameter to topmost Via
setflag(6); # Mark as NATed
};
};
best regards,
---------------------------------------------
Neo-Online Corporation
Next Gen Networking Expert
Marty Chen
System Engineer
Tel: +886-2-7707-7988 ext 151
Cell: +886-960-516-560
Email: marty-chen(a)neo-ol.com
I have installed ser in my computer 1, my computer 1
is in a LAN, and I have another computer 2 in the LAN,
I have a msn messenger 4.6 installed in 2, and I
configured msn 4.6 according to howto, I fill the IP
address of 1 in server name or IP address in msn
advanced configures. but when I want to register, it
says that the network service is currently
unavailable, but I can ping 1 form 2.
when I start ser, I can stop it at the first time,
When I restart
it, if I stop in immediately, it is ok. but if after a
few minuters, I want to stop it, it responses as the
following
/etc/rc.d/init.d/ser: line 195: kill: (4573) - no such
process
/etc/rc.d/init.d/ser: line 195: kill: (4572) - no such
process
..........................
Can anybody help me?
_________________________________________________________
Do You Yahoo!?
惠普TT游戏剧,玩游戏,中大奖!
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.c…
Here is my ser.cg file. I try to configure send IM, Missed calls,
Voicemail.
I just can configure Send IM.
Now I can call isdngw, ivr,..
I need help to configure lookup location logic for missed calls and
voicemail (offline users)
Anybody could help me to configure the others functions (problem with
logic !!).
harry
Regards
#
# $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)
listen=192.168.0.1
port=5060
children=4
fifo="/tmp/ser_fifo"
fifo_mode=0666
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/lib/ser/modules/mysql.so"
loadmodule "/usr/lib/ser/modules/sl.so"
loadmodule "/usr/lib/ser/modules/tm.so"
loadmodule "/usr/lib/ser/modules/rr.so"
loadmodule "/usr/lib/ser/modules/maxfwd.so"
loadmodule "/usr/lib/ser/modules/usrloc.so"
loadmodule "/usr/lib/ser/modules/registrar.so"
loadmodule "/usr/lib/ser/modules/domain.so"
loadmodule "/usr/lib/ser/modules/msilo.so"
loadmodule "/usr/lib/ser/modules/acc.so"
loadmodule "/usr/lib/ser/modules/vm.so"
loadmodule "/usr/lib/ser/modules/uri.so"
loadmodule "/usr/lib/ser/modules/group.so"
loadmodule "/usr/lib/ser/modules/textops.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/lib/ser/modules/auth.so"
loadmodule "/usr/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_url", "mysql://ser:heslo@localhost/ser")
modparam("usrloc", "db_mode", 2)
modparam("usrloc", "use_domain", 1)
# -- 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)
# --registrar params--
modparam("registrar", "use_domain", 1)
# --domain params--
modparam("domain", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("domain", "db_mode", 1) # Use chaching
# --acc params--
modparam("acc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("acc", "db_missed_flag", 3)
# --msilo params--
modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("msilo", "db_table", "silo")
modparam("msilo","registrar","sip:registrar@192.168.0.1")
# --uri params--
#modparam("uri", "db_url", "mysql://ser:heslo@localhost/ser")
#modparam("uri", "subscriber_table", "subscriber")
# --vm params--
modparam("voicemail", "db_url", "mysql://ser:heslo@localhost/ser")
# ------------------------- 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;
};
# --isdn gateway--
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
if (uri=~"sip:[0-9]{10}@.*") {
route(2);
break;
};
};
# --ivr conf--
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
if (uri=~"sip:5000@.*") {
route(4);
break;
};
};
# --conference--
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
if (uri=~"sip:6000@.*") {
route(5);
break;
};
};
# --play an annoucement--
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
if (uri=~"sip:7000@.*") {
route(6);
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 (is_from_local()) {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication
if (!www_authorize("", "subscriber")) {
www_challenge("", "0");
break;
};
save("location");
# MSILO - dumping user's offline messages
if (m_dump())
{
log("MSILO: offline messages dumped - if they were\n");
}else{
log("MSILO: no offline messages dumped\n");
};
break;
};
# does the user wish redirection on no availability? (i.e., is he
# in the voicemail (ser->grp) group?)
if (is_user_in("Request-URI", "voicemail")) {
t_on_failure("4");
setflag(4);
};
# native SIP destinations are handled using our USRLOC DB
lookup("aliases");
if (!lookup("location")) {
if (! t_newtran()) {
sl_reply_error();
break;
};
# we do not care about anything else but MESSAGEs
if (!method=="MESSAGE") {
if (!t_reply("404", "Not found")) {
sl_reply_error();
};
break;
};
log("MESSAGE received -> storing using MSILO\n");
# MSILO - storing as offline message
if (m_store("0")) {
log("MSILO: offline message stored\n");
if (!t_reply("202", "Accepted")) {
sl_reply_error();
};
}else{
log("MSILO: offline message NOT stored\n");
if (!t_reply("503", "Service Unavailable")) {
sl_reply_error();
};
};
break;
};
# if the downstream UA does not support MESSAGE requests
# go to failure_route[1]
t_on_failure("1");
t_relay();
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();
};
}
failure_route[1] {
# forwarding failed -- check if the request was a MESSAGE
if (!method=="MESSAGE")
{
break;
};
log(1,"MSILO: the downstream UA does not support MESSAGE requests ...\n");
# we have changed the R-URI with the contact address -- ignore it now
if (m_store("1"))
{
log("MSILO: offline message stored\n");
t_reply("202", "Accepted for delivery");
}else{
log("MSILO: offline message NOT stored\n");
t_reply("503", "Service Unavailable");
};
}
failure_route[4] {
route(3);
#append_branch("sip:80000@10.1.2.5");
append_urihf("CC-Diversion: ", "\r\n");
append_hf("P-hint: OFFLINE-VOICEMAIL\r\n");
t_relay();
}
route[2] {
# ############################## #
# isdngw specific configuration #
# ############################## #
if(t_newtran()){
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
# send a response right at the start to avoid retransmissions
t_reply("100","Trying -- just wait a minute !");
# isdngw only gets activated on invite requests
if(method=="INVITE"){
# filename is defined in sems.conf.
if(uri=~"sip:[0-9]{10}@.*"){
if(!vm("/tmp/am_fifo","isdngw")){
log("could not contact isdngw\n");
t_reply("500","could not contact isdngw");
};
# Allow the announcement module of sems to be used as well.
# This can be useful for testing the isdngw.
} else if(uri=~"sip:7000@.*"){
if(!vm("/tmp/am_fifo","announcement")){
log("could not contact announcement\n");
t_reply("500","could not contact announcement");
};
# we dont feel responsible for sip addresses of any other kind,
# so send the right error code.
} else {
t_reply("404","Not Found");
};
# stop routing here, the message is now processed by the media server
break;
};
# The following handles the call termination, we must pass these requests
# to the media server as follows. Again make shure the fifo name and permissions
# are set correctly (like im sems.conf).
if((method=="BYE")||(method=="CANCEL")){
if(!vm("/tmp/am_fifo","bye")){
log("could not contact the media server\n");
t_reply("500","could not contact the media server");
};
break;
};
# other methods than INVITE, BYE and CANCEL are not handled by this SIP Server
# so we sent an error message
} else {
log("ERROR: method not supported\n");
t_reply("500", "sorry, method not supported");
};
} else {
# for any reason the transaction could not be created, send error code
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
};
# in isdngw.conf. Don't change this setting.
t_relay();
# end of routing.
}
route[3] {
############################################
# Voicemail specific configuration - begin #
############################################
if(method=="ACK" || method=="INVITE" || method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
break;
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
if(!vm("/tmp/am_fifo","voicemail")) {
log("couldn't contact announcement server\n");
t_reply("500", "couldn not contact announcement server");
};
break;
};
if(method=="BYE" || method=="CANCEL") {
if(!vm("/tmp/am_fifo","bye")) {
log("could not contact the answer machine\n");
t_reply("500","could not contact the answer machine");
};
break;
};
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
route[4] {
######################################
# ivr specific configuration - begin #
######################################
if(method=="ACK" || method=="INVITE" || method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
break;
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
log("**************** vm start - begin ******************\n");
if (uri=~"sip:5000@.*") {
if (!vm("/tmp/am_fifo", "ivr")) {
log("couldn't contact ivr server\n");
t_reply("500", "couldn not contact ivr server");
};
};
log("**************** vm start - end ******************\n");
} else if(method=="BYE"){
log("**************** vm end - begin ******************\n");
if(!vm("/tmp/am_fifo","bye")){
log("could not contact ivr\n");
t_reply("500","could not contact ivr");
};
log("**************** vm end - end ******************\n");
};
break;
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
route[5] {
# ####################################
# conference specific configuration #
# ####################################
if(t_newtran()){
if(method=="INVITE" || method=="BYE" || method=="CANCEL"){
# send a response right at the start to avoid retransmissions
t_reply("100","Trying -- just wait a minute !");
# isdngw only gets activated on invite requests
if(method=="INVITE"){
# filename is defined in sems.conf.
if(uri=~"sip:6000@.*"){
if(!vm("/tmp/am_fifo","conference")){
log("could not contact conference\n");
t_reply("500","could not contact conference");
};
# Allow the announcement module of sems to be used as well.
# This can be useful for testing the conference.
} else if(uri=~"sip:5000@.*"){
if(!vm("/tmp/am_fifo","announcement")){
log("could not contact announcement\n");
t_reply("500","could not contact announcement");
};
# we dont feel responsible for sip addresses of any other kind,
# so send the right error code.
} else {
t_reply("404","Not Found");
};
# stop routing here, the message is now processed by the media server
break;
};
# The following handles the call termination, we must pass these requests
# to the media server as follows. Again make shure the fifo name and permissions
# are set correctly (like im sems.conf).
if((method=="BYE")||(method=="CANCEL")){
if(!vm("/tmp/am_fifo","bye")){
log("could not contact the media server\n");
t_reply("500","could not contact the media server");
};
break;
};
# other methods than INVITE, BYE and CANCEL are not handled by this SIP Server
# so we sent an error message
} else {
log("ERROR: method not supported\n");
t_reply("500", "sorry, method not supported");
};
} else {
# for any reason the transaction could not be created, send error code
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
};
# in isdngw.conf. Don't change this setting.
t_relay();
# end of routing.
}
route[6] {
######################################
# announcement configuration - begin #
######################################
if(method=="ACK" || method=="INVITE" || method=="BYE"){
if (!t_newtran()) {
log("could not create new transaction\n");
sl_send_reply("500","could not create new transaction");
break;
};
t_reply("100","Trying -- just wait a minute !");
if(method=="INVITE"){
log("**************** vm start - begin ******************\n");
if (uri=~"sip:7000@.*") {
if (!vm("/tmp/am_fifo", "announcement")) {
log("couldn't contact ivr server\n");
t_reply("500", "couldn not contact announcement");
};
};
log("**************** vm start - end ******************\n");
} else if(method=="BYE"){
log("**************** vm end - begin ******************\n");
if(!vm("/tmp/am_fifo","bye")){
log("could not contact annoucement\n");
t_reply("500","could not contact annoucement");
};
log("**************** vm end - end ******************\n");
};
break;
};
if (method=="CANCEL") {
sl_send_reply("200", "cancels are junked here");
break;
};
sl_send_reply("501", "method not understood here");
}
route[7] {
# non-Voip -- just send "off-line"
if (!(method=="INVITE" || method=="ACK" || method=="CANCEL")) {
sl_send_reply("404", "Not Found");
break;
};
if (t_newtran()) {
t_reply("404", "Not Found");
acc_db_request("404 missed call", "missed_calls");
};
}
Hi,
I can't seem to find a tarball that has a Makefile where I can edit the acc,
al I got so far are tarballs that contains the etc, lib, bin, share
directories, all the modules are in *.so format now. Where can I download
tarball distribution?
Thank you
Ronald
If you use mysql accouting, the CDRs will be stored into the configured
mysql database.
If you use radius accounting, the CDRs will be sent to your radius server.
klaus
Nhadie wrote:
> Thanks you so much. One more thing, where can I find a sample
> configuration that has mysql accounting? Do I need RADIUS for these? If
> so, in which database would the records be sent, the database on the
> RADIUS or the SER database?
>
> --------- Original Message --------
> From: "Klaus Darilion" <klaus.mailinglists(a)pernau.at>
> To: "Nhadie" <nhadie(a)tbgi.net.ph>
> Cc: "Serusers" <serusers(a)lists.iptel.org>
> Subject: Re: [Serusers] Accounting directly sent to mysql
> Date: 25/04/04 10:19
>
>
> If you have ser isntalled via RPMs, then you can't account to mysql. You
> have to compile it yourself.
>
> btw: forget agout the rpm version and uninstall it completly before
> installing ser from source.
>
> klaus
>
> PS: please always cc: to the list
>
> Nhadie wrote:
> > Hi,
> >
> > What if installed it via RPM? Isn't the mysql accounting
> compiled? What
> > do I need to configure on the ser.cfg to activate mysql accounting?
> > Thank You
> >
> > Ronald
> >
> > --------- Original Message --------
> > From: "Klaus Darilion" <klaus.mailinglists(a)pernau.at>
> > To: "ron(a)silverbackasp.com" <ron(a)silverbackasp.com>
> > Cc: serusers(a)lists.iptel.org <mailto:serusers@lists.iptel.org>
> > Subject: Re: [Serusers] Accounting directly sent to mysql
> > Date: 24/04/04 11:55
> >
> >
> > yes, turn on accounting for mysql. Take a look into the Makefile in
> > modules/acc, uncommment the line and re-compile.
> >
> > klaus
> >
> > Ronald Ramos wrote:
> >
> > > Hi,
> > >
> > > Can I automatically redirect all the time of call and end of call
> > to mysql
> > > server instead of the syslog?
> > >
> > > Thank you
> > >
> > > Ronald
> > >
> > > _______________________________________________
> > > Serusers mailing list
> > > serusers(a)lists.iptel.org <mailto:serusers@lists.iptel.org>
> <mailto:serusers@lists.iptel.org>
> > > http://lists.iptel.org/mailman/listinfo/serusers
> > >
> > >
> >
> >
> >
> >
> >
> >
> > ________________________________________________
> > Message sent using UebiMiau 2.7
>
> _______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org <mailto:serusers@lists.iptel.org>
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
>
>
>
> ________________________________________________
> Message sent using UebiMiau 2.7
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Has anyone already implemented a Date: header for INVITEs in an easy
and fast method? I'm looking for a quick plug-in that will send the
date in GMT format that looks like this (in strftime format):
Date: %a, %d %b %Y %T GMT
where %a is day of week (three letter), %d is the day of the month
(01-31), %b is abbreviated month name (three digit), %Y is the year
as a decimal number including century, and %T is the time in 24 hour
notation (HH:MM:SS)
I have some SIP UA devices which set the timestamp of outgoing calls
on caller ID (analog phones.) SNTP is not an option, so using a
Date: header is the next best thing. Maybe someone who has already
incorporated this into SER might have something handy and save some
time on my end...
JT
I have installed ser in my computer 1, my computer 1
is in a LAN, and I have another computer 2 in the LAN,
I have a msn messenger 4.6 installed in 2, and I
configured msn 4.6 according to howto, I fill the IP
address of 1 in server name or IP address in msn
advanced configures. but when I want to register, it
says that the network service is currently
unavailable, but I can ping 1 form 2.
_________________________________________________________
Do You Yahoo!?
惠普TT游戏剧,玩游戏,中大奖!
http://cn.rd.yahoo.com/mail_cn/tag/SIG=1402c0to2/**http%3A%2F%2Fhp.allyes.c…
Hi all,
Sorry this question might sound stupid but please someone please kindly
help.
I need to use one of the subscriber table fields to do call forwarding.
Please someone tell me is there any functions that I can use in the ser.cfg
to retrieve values from the database as queries to input into the uri for
call forwarding. Please help Please help.....
Regards,
Shirley