hello serusers!
I have followed these instructions carefully (http://iptel.org/ser/doc/ser_radius/ser_radius.html) but now I have this error:
ser:~/SER/ser-0.8.12 # /sbin/ser
0(31886) loading module //lib/ser/modules/sl.so
0(31886) loading module //lib/ser/modules/tm.so
0(31886) loading module //lib/ser/modules/rr.so
0(31886) loading module //lib/ser/modules/maxfwd.so
0(31886) loading module //lib/ser/modules/usrloc.so
0(31886) loading module //lib/ser/modules/registrar.so
0(31886) loading module //lib/ser/modules/group_radius.so
0(31886) loading module //lib/ser/modules/auth.so
0(31886) loading module //lib/ser/modules/auth_radius.so
0(31886) loading module //lib/ser/modules/acc.so
0(31886) set_mod_param_regex: rr matches module rr
0(31886) set_mod_param_regex: found <enable_full_lr> in module rr [//lib/ser/modules/rr.so]
0(31886) set_mod_param_regex: auth_radius matches module auth_radius
0(31886) set_mod_param_regex: found <radius_config> in module auth_radius [//lib/ser/modules/auth_radius.so]
0(31886) set_mod_param_regex: auth_radius matches module auth_radius
0(31886) set_mod_param_regex: found <service_type> in module auth_radius [//lib/ser/modules/auth_radius.so]
0(31886) set_mod_param_regex: acc matches module acc
0(31886) set_mod_param_regex: found <radius_config> in module acc [//lib/ser/modules/acc.so]
0(31886) set_mod_param_regex: acc matches module acc
0(31886) set_mod_param_regex: found <service_type> in module acc [//lib/ser/modules/acc.so]
0(31886) set_mod_param_regex: acc matches module acc
0(31886) set_mod_param_regex: found <radius_flag> in module acc [//lib/ser/modules/acc.so]
0(31886) set_mod_param_regex: acc matches module acc
0(31886) set_mod_param_regex: found <radius_missed_flag> in module acc [//lib/ser/modules/acc.so]
0(31886) find_export: found <mf_process_maxfwd_header> in module maxfwd_module [//lib/ser/modules/maxfwd.so]
0(31886) find_export: found <sl_send_reply> in module sl_module [//lib/ser/modules/sl.so]
0(31886) find_export: found <sl_send_reply> in module sl_module [//lib/ser/modules/sl.so]
0(31886) find_export: found <record_route> in module rr [//lib/ser/modules/rr.so]
0(31886) find_export: found <loose_route> in module rr [//lib/ser/modules/rr.so]
0(31886) find_export: found <t_relay> in module tm [//lib/ser/modules/tm.so]
0(31886) find_export: <radius_www_authorize> not found
0(31886) find_export: <radius_www_authorize> not found
0(31886) parse error (115,55-56): unknown command, missing loadmodule?
0(31886) find_export: found <www_challenge> in module auth [//lib/ser/modules/auth.so]
0(31886) find_export: found <save> in module registrar [//lib/ser/modules/registrar.so]
0(31886) find_export: found <lookup> in module registrar [//lib/ser/modules/registrar.so]
0(31886) find_export: found <sl_send_reply> in module sl_module [//lib/ser/modules/sl.so]
0(31886) find_export: found <t_relay> in module tm [//lib/ser/modules/tm.so]
0(31886) find_export: found <sl_reply_error> in module sl_module [//lib/ser/modules/sl.so]
ERROR: bad config file (1 errors)
0(31886) DEBUG: tm_shutdown : start
0(31886) DEBUG: tm_shutdown : empting hash table
0(31886) DEBUG: tm_shutdown: releasing timers
0(31886) DEBUG: tm_shutdown : removing semaphores
0(31886) DEBUG: tm_shutdown : done
0(31886) shm_mem_destroy
0(31886) destroying the shared memory lock
SOME ADVICE PLEASE!!!
Thanks
Rafael
------------SER.CFG--------------------------------->>>>>>>
ser:~/SER/ser-0.8.12 # more /etc/ser/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 "//lib/ser/modules/mysql.so"
loadmodule "//lib/ser/modules/sl.so"
loadmodule "//lib/ser/modules/tm.so"
loadmodule "//lib/ser/modules/rr.so"
loadmodule "//lib/ser/modules/maxfwd.so"
loadmodule "//lib/ser/modules/usrloc.so"
loadmodule "//lib/ser/modules/registrar.so"
loadmodule "//lib/ser/modules/group_radius.so"
#loadmodule "//lib/ser/modules/group.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "//lib/ser/modules/auth.so"
#loadmodule "//lib/ser/modules/auth_db.so"
loadmodule "//lib/ser/modules/auth_radius.so"
loadmodule "//lib/ser/modules/acc.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)
modparam("auth_radius","radius_config","/etc/radiusclient/radiusclient.conf")
modparam("auth_radius","service_type",15)
modparam("acc", "radius_config","/etc/radiusclient/radiusclient.conf")
modparam("acc", "service_type", 15)
modparam("acc", "radius_flag", 1)
modparam("acc", "radius_missed_flag", 3)
# ------------------------- 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 (!radius_www_authorize("iptel.org", "subscriber")) {
www_challenge("iptel.org", "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();
};
}
Hi!
For this feature you need an element which is call-statefull, i.e. a
B2BUA. You could also use ser, which calls an external script (which
keeps track of current calls, e.g. every INVITE increases the counter,
and every BYE decreases the counter. But that will cause problems if the
BYE messages is lost (e.g. user agent crashes).
regards,
klaus
Lambros Lambrinos wrote:
>>I still have not understand your problem: do you want that only certain
>>users are allowed to dial to this destination, or do you want to limit
>>the number of calls to this destination?
>>
>>klaus
>
>
> Klaus,
> I am planning a similar scenario where the number of calls
> to a destination needs to be limited (e.g. if the destination
> has a low bandwidth connection).
> Do you think it is possible just with SER (considering that
> it is stateless) ?
> I was planning on using a combination of SER and Freeradius.
> Any other idea ?
>
> Regards,
> Lambros
>
>
Hi,
here is my python script in order to send emails.
For example i call my mailbox to listen messages if I'm offline i wish
to received a voicemail.
I don't know how to get the new wav recorded messages (path) from the
the mailbox.
I'm not a devolopper so I need help.
I don't test it because of I have to update Mysql !!
I do hope somebody could help me (and ser users) about this feature.
Regards
Harry
Hi.
i'm Andrea, i have a problem with sems. I have the follow configuration:
----------------- --------------------------------
|ser[proxy] | ---> |ser[voicemail]+sems |
------------------ ---------------------------------
I have clients that are connected on the proxy.
I don't receive the e-mail when a user is offline because VOICEMAIL didn't write the e-mail in the ser_fifo and SEMS can't send the Wave file.
How can i do?
Tanks.
Andrea.
Hi.
i'm Andrea, i have a problem with sems. I have the follow configuration:
----------------- --------------------------------
|ser[proxy] | ---> |ser[voicemail]+sems |
------------------ ---------------------------------
I have clients that are connected on the proxy.
I don't receive the e-mail when a user is offline because VOICEMAIL didn't write the e-mail in the ser_fifo and SEMS can't send the Wave file.
How can i do?
Tanks.
Andrea.
Maybe I should be more specific with the question.
At the moment I am only testing IP-to IP without PSTN connectivity. I'm
still waiting for an FXO module for my channelbank Adtran Atlas 550-series
(anyone tested this?)which I plan on integrating w/ Asterisk. . maybe.
Basically I now have SER /RTP running with a basic configuration. See
below--> I have been modifying ser.cfg lots just to experiment and learn.
I have two separate locations at my use , the other office(1) being behind
a NAT and on the other side where my research lab(2) is no NAT/firewall
with public addresses. On top of this I have a public hotspot available to
my lab which uses RADIUS/LDAP authentication with a pre-assigned login
name and password.
To get to the point then.
At office 1, When I first received the phones, tried them out behind a
D-link wireless router, so basically it was behind two nat's :( (what's
the scenario on this?) Inside the private dhcp-generated IP-space, calls
between the UA's worked fine. phones sip-settings as my SER
(sip3.dc.turkuamk.fi) for both proxy and outgoing. SER did log an incoming
request, but at the moment didn't even have NAT-helper conf.d. so the
reply was lost. Even afterwards the phones would not register to my
server. Now my research-lab doesn't have a wireless network except for the
hotspot. The Prestige finds the network and receives an IP-address, but
fails to make calls and register on both sip3.dc.turkuamk.fi server nor
iptel.org servers. To my understanding the "SPARKNET" hotspot uses also
ssl encryption, but I'm not sure. I am also a bit strange on the
authentication scenario due to the public access point. The phone has no
setting for such authentication. Ofcourse there is the SIP-setting
username and password, but that's it.
Otherwise my current configuration has worked fine for softphones,
(kphone, M$-mes.. and SCS-client)making, receiving and registering calls
and UA's using the digest authentication scheme
even behind the NAT. Sip-clients work fine on my laptop on the hotspot.
Maybe I should get another d-link wireless network... :)
thanks,
Michael Seppänen
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
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"
alias="sip3.dc.turkuamk.fi"
alias="wlan.turkuamk.fi"
alias="sip.dc.turkuamk.fi"
alias="turkuamk.fi"
alias="brage-dataware.fi"
alias="10.42.1.179"
alias="93.166.139.107"
listen=193.166.135.116
# ------------------ module loading ----------------------------------
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/auth.so"
loadmodule "/usr/lib/ser/modules/auth_db.so"
loadmodule "/usr/lib/ser/modules/acc.so"
loadmodule "/usr/lib/ser/modules/exec.so"
loadmodule "/usr/lib/ser/modules/group.so"
#loadmodule "/usr/lib/ser/modules/msilo.so"
loadmodule "/usr/lib/ser/modules/textops.so"
#loadmodule "/usr/lib/ser/modules/uri.so"
loadmodule "/usr/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
modparam("usrloc", "db_mode", 2)
# -- auth params --
modparam("auth_db", "calculate_ha1", yes)
modparam("auth_db", "password_column", "password")
# -- rr params --
modparam("rr", "enable_full_lr", 1)
# !! Nathelper
modparam("registrar", "nat_flag", 6)
modparam("nathelper", "natping_interval", 30) # Ping interval 30 s
#modparam("nathelper", "ping_nated_only", 1) # Ping only clients behind
NAT
# ------------------------- 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;
};
# !! Nathelper
# Special handling for NATed clients; first, NAT test is
# executed: it looks for via!=received and RFC1918 addresses
# in Contact (may fail if line-folding is used); also,
# the received test should, if completed, should check all
# vias for rpesence of received
#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 enough to be symmetric. In some phones it
takes a configuration
# option. With Cisco 7960, it is called
NAT_Enable=Yes, with kphone it is
# called "symmetric media" and "symmetric signalling".
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
};
#};
# 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()) {
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
route(1);
break;
};
if (!uri==myself) {
# mark routing logic in request
append_hf("P-hint: outbound\r\n");
route(1);
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("", "subscriber")) {
www_challenge("", "0");
break;
};
save("location");
break;
};
lookup("aliases");
if (!uri==myself) {
append_hf("P-hint: outbound alias\r\n");
route(1);
break;
};
lookup("aliases");
# 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();
};
append_hf("P-hint: usrloc applied\r\n");
route(1);
}
route[1]
{
# !! Nathelper
if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" && !
search("^Route:")){
sl_send_reply("479", "We don't forward to private IP
addresses");
break;
};
# if client or server know to be behind a NAT, enable relay
if (isflagset(6)) {
force_rtp_proxy();
};
# NAT processing of replies; apply to all transactions (for
example,
# re-INVITEs from public to private UA are hard to identify as
# NATed at the moment of request processing); look at replies
t_on_reply("1");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
};
}
# !! Nathelper
onreply_route[1] {
# NATed transaction ?
if (isflagset(6) && status =~ "(183)|2[0-9][0-9]") {
fix_nated_contact();
force_rtp_proxy();
# otherwise, is it a transaction behind a NAT and we did not
# know at time of request processing ? (RFC1918 contacts)
} else {
fix_nated_contact();
};
}
_______________________________________________
> Serusers mailing list
> serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
I have installed ser in my redhat linux computer.
I start it with
/etc/init.d/ser start
then when I check status use
/etc/init.d/ser status
It gives this message:" ser dead but subsys locked."
then I try to use serctl start
I got message "starting ser: cat /var/run/ser.pid: no
such file or directory started pid()"
What happened please help!
Thanks a lot!
peter
__________________________________
Do you Yahoo!?
Friends. Fun. Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/
Hi everyone,
I have a working ser and sems with voicemail, I would like to limit some call to some of my end points, so Im planning to use b2bua from vovida. I would like to ask if this setup is possible?
regards
I have the following logic.
route {
...
t_on_reply("1");
t_on_failure("1");
t_relay();
}
onreply_route[1] {
xlog("L_NOTICE", "Reply status %rs: Reason %rr\n");
}
failure_route[1] {
xlog("L_NOTICE", "Reply status %rs: Reason %rr\n");
if (status=="408") {
do something 1
} else if (status=="480") {
do something 2
} else if (status=="486") {
do something 3
}
}
When a reply with 4xx comes in, it first goes through onreply_route[1] and
get the result printed to syslog. The message is then passed to
failure_route[1]. But it seems that the status code and reason are gone. I
get a <null> for both values in the failure route. How should I change the
script to get that.
Zeus Ng