Hi all, I have found the following ser.cfg file for
SER+RTP proxy combination in the mailing list.
However, with this, no audio is going through. The
call goes through, if i accept the call, no audio. I'm
completely new to SER and SIP servers and still going
through the manuals for the ser script. Any help will
be appreciated. Thanks.
- tareq
#
# $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters
------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
listen=192.168.1.21
# hostname matching an alias will satisfy the
condition uri==myself".
alias=mypc
alias=mypc.localdomain
# 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
----------------------------------
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"
# 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"
# load the voicemail module
#loadmodule "/usr/local/lib/ser/modules/vm.so"
# load the enum module
loadmodule "/usr/local/lib/ser/modules/enum.so"
# load the group module, to verify if a user forwards
to voicemail
loadmodule "/usr/local/lib/ser/modules/group.so"
# load the nathelper module
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters
---------------
# -- registrar parameter
# special NAT flag indicates that a registered client
is behind NAT
modparam("registrar", "nat_flag", 6)
# -- 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)
#modparam("usrloc", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("usrloc|auth_db|acc|group|msilo|uri","db_url","mysql://ser:heslo@localhost/ser")
# -- 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")
modparam("auth_db", "db_url",
"mysql://ser:heslo@localhost/ser")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- voicemail params --
#modparam("voicemail",
"db_url","mysql://login:password@localhost/ser")
# -- voicemail params --
#modparam("group",
"db_url","mysql://login:password@localhost/ser")
# -- nathelper params --
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
modparam("tm", "fr_inv_timer", 30 )
#modparam("tm", "fr_inv_timer", 8 )
#Explicitly set the socket used by rtpproxy
#modparam("nathelpler", "rtpproxy_sock",
"/var/run/rtpproxy.sock")
# ------------------------- request routing logic
-------------------
# main routing logic
route{
log(1,
"-------------------------------------------\n");
log(1, "entering main loop\n");
if (nat_uac_test("2")) {
log(1, "src address different than via header->NAT
detected\n");
log(1, "force_rport and fix_nated_contact and
setflag(5)\n");
#try NAT traversal, works only if the client is
symmetrical
force_rport();
fix_nated_contact();
append_hf("P-hint: fixed NAT contact for
request\r\n");
# flag 5 indicates that incoming request is from NATed
client
setflag(5);
};
if (method=="REGISTER")
log(1, "REGISTER message received\n");
if (method=="INVITE")
log(1, "INVITE message received\n");
if (method=="ACK")
log(1, "ACK message received\n");
if (method=="BYE")
log(1, "BYE message received\n");
if (method=="CANCEL")
log(1, "CANCEL message received\n");
if (method=="SUBSCRIBE")
log(1, "SUBSCRIBE message received\n");
if (method=="NOTIFY")
log(1, "NOTIFY message received\n");
if (method=="OPTIONS")
log(1, "OPTIONS message received\n");
if (method=="INFO")
log(1, "INFO message received\n");
if (method=="MESSAGE")
log(1, "MESSAGE message received\n");
if (method=="REFER")
log(1, "REFER message received\n");
# 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) {
#if (len_gt( max_len )) {
sl_send_reply("513", "Message too big");
break;
};
# loose-route processing
if (loose_route()) {
log(1, "loose_route processing\n");
t_relay();
break;
};
# create transaction state; abort if error occured
# if ( !t_newtran()) {
# sl_reply_error();
# break;
# };
#new
# now check if it's about PSTN destinations through
our gateway;
# note that 8.... is exempted for numerical non-gw
destinations
if (uri=~"^sip:0[0-9]*@.*") {
log(1, "PSTN call...\n");
route(3);
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") {
log(1, "analyzing REGISTER request\n");
# Uncomment this if you want to use digest
authentication
if (!www_authorize("mypc", "subscriber")) {
www_challenge("mypc", "0");
break;
};
if (isflagset(5)) {
#register from nated client, save nat_flag=6
#in location table
setflag(6);
};
if (!save("location")) {
log(1, "save location error\n");
sl_reply_error();
};
break;
};
lookup("aliases");
#mark transaction for voicemail
if (is_user_in("Request-URI", "voicemail\n")) {
log(1, "requested user is in voicemail group");
setflag(4);
};
# native SIP destinations are handled using our USRLOC
DB
if (!lookup("location")) {
# handle user which was not found
log(1, "requested user not found\n");
route(4);
break;
};
};
#add failure route which should be performed if
response code >=300
if (method=="INVITE" && isflagset(4)) {
log(1, "invite for voicemail user->initiate
failureroute[1]\n");
t_on_failure("1");
};
# forward to current uri now; use stateful forwarding;
that
# works reliably even if we forward from TCP to UDP
route(1);
}
route[1]{
log(1,
"-------------------------------------------\n");
log(1, "entering route[1] - relaying SIP message\n");
if ((isflagset(5)) || (isflagset(6))) {
log(1, "at least one of the participants is
NATed->record_route\n");
record_route();
log(1, " -->setting up reply processing
->onreply_route[1]");
t_on_reply("1");
if (method=="INVITE") {
log(1, " INVITE request-->force_rtp_proxy, set
NATED-INVITE flag(7)");
force_rtp_proxy();
append_hf("P-hint: request forced to rtp proxy\r\n");
setflag(7);
};
};
log(1, "relaying message ...\n");
if (!t_relay()) {
log(1, "t_relay error occured\n");
sl_reply_error();
};
}
# all incoming replies for t_onrepli-ed transactions
enter here
onreply_route[1] {
log(1,
"-------------------------------------------\n");
log(1, "onreply_route[1] entered\n");
if (isflagset(6)) {
log(1, "transaction was sent to a NATED client -> fix
nated contact\n");
fix_nated_contact();
append_hf("P-hint: fixed NAT contact for
response\r\n");
}
if ( (status=~"100") ) {
log(1, "status 100 received\n");
};
if ( (status=~"180") ) {
log(1, "status 180 received\n");
};
if ( (status=~"202") ) {
log(1, "status 202 received\n");
};
if ( (status=~"200" || status=~"183") ) {
log(1, "status 2xx or 183");
if ( isflagset(7) ) {
log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy
\n");
force_rtp_proxy();
append_hf("P-hint: response forced to rtp proxy\r\n");
};
};
}
#new
# logic for calls to the PSTN
route[3] {
# turn accounting on
setflag(1);
/* require all who call PSTN to be members of the
"int" group;
apply ACLs only to INVITEs -- we don't need to protect
other requests, as they
don't imply charges; also it could cause troubles when
a call comes in via PSTN
and goes to a party that can't authenticate
(voicemail, other domain) -- BYEs would
fail then; exempt Cisco gateway from authentication by
IP address -- it does not
support digest
*/
if (method=="INVITE" && (!src_ip==192.168.1.21)) {
if (!proxy_authorize( "mypc" /* realm */,
"subscriber" /* table name */)) {
proxy_challenge( "mypc" /* realm */, "0" /* no qop */
);
break;
};
# let's check from=id ... avoids accounting confusion
if(!is_user_in("credentials", "int")) {
sl_send_reply("403", "NO PSTN Privileges...");
break;
};
consume_credentials();
}; # INVITE to authorized PSTN
# if you have passed through all the checks, let your
call go to GW!
force_rtp_proxy();
record_route();
t_on_reply("1");
# snom conditioner
if (method=="INVITE" && search("User-Agent: snom")) {
replace("100rel, ", "");
};
append_hf("P-hint: GATEWAY\r\n");
# use UDP to guarantee well-known sender port (TCP
ephemeral)
#t_relay_to_udp("212.17.35.184","5060");
t_relay_to_udp("192.168.1.1","5060");
}
route[4]{
log(1,
"-------------------------------------------\n");
log(1, "entering route[4] = requested user not
online\n");
# non-Voip -- just send "off-line"
if (!(method == "INVITE" || method == "ACK" || method
== "CANCEL" || method == "REFER" || method == "BYE"))
{
log(1, "no invite,ack,cancel,refer->return 404\n");
sl_send_reply("404", "Not Found");
break;
};
# not voicemail subscriber and no echo/conference call
if ( isflagset(4)) {
log(1, "flag(4) active\n");
};
if (uri =~ "conference") {
log(1, "conference call\n");
};
if (uri =~ "echo") {
log(1, "echo call\n");
};
if ( !( isflagset(4) || (uri =~ "conference") || (uri
=~ "echo") ) ) {
log(1, "no voicemail subscriber->return 404");
sl_send_reply("404", "Not Found and no voicemail
turned on");
break;
};
if ( isflagset(5) ) {
log(1, "caller is NATed->record_route\n");
record_route();
log(1, " -->setting up reply processing
->onreply_route[1]");
t_on_reply("1");
if (method=="INVITE") {
log(1, " INVITE request-->force_rtp_proxy");
force_rtp_proxy();
};
};
# forward to voicemail now
� rewritehostport("192.168.1.21:5060");
log(1, "forward to voicemail\n");
t_relay_to_udp("192.168.1.21", "5060");
}
failure_route[1] {
/* XX: note: unsafe if preloaded routes without
username used */
log(1,
"-------------------------------------------\n");
log(1, "failureroute[1] entered\");
revert_uri();
rewritehostport("192.168.1.21:5060");
append_branch();
t_relay_to_udp("192.168.1.21", "5060");
}
__________________________________
Do you Yahoo!?
Yahoo! Mail - now with 250MB free storage. Learn more.
http://info.mail.yahoo.com/mail_250
Hi All.
I thought I read something a while ago about using avpops to dymanically change the INVITE timer -
but I can't seem to find that thread.
Can anyone tell me if this is possible?
I'd like to have a shorter INVITE timer for SIP->SIP calls and a longer INVITE timer for SIP->PSTN
calls. We see some 408 replies because a SIP phone is dialing a cell phone and get transfered to
the voicemail of the cell phone user, but to prevent the 408 due to a slow voicemail system we
have our INVITE timer currently set at 40 seconds which is rather annoying for SIP->SIP calls.
I'm using -dev-21
Regards,
Paul
__________________________________
Do you Yahoo!?
Yahoo! Mail - Easier than ever with enhanced search. Learn more.
http://info.mail.yahoo.com/mail_250
Hi all, I have found the following ser.cfg file for
SER+RTP proxy combination in the mailing list.
However, with this, no audio is going through. The
call goes through, if i accept the call, no audio. I'm
completely new to SER and SIP servers and still going
through the manuals for the ser script. Any help will
be appreciated. Thanks.
#
# $Id: ser.cfg,v 1.21 2003/06/04 13:47:36 jiri Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters
------------------------
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=yes # (cmd line: -E)
listen=192.168.1.21
# hostname matching an alias will satisfy the
condition uri==myself".
alias=mypc
alias=mypc.localdomain
# 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
----------------------------------
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"
# 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"
# load the voicemail module
#loadmodule "/usr/local/lib/ser/modules/vm.so"
# load the enum module
loadmodule "/usr/local/lib/ser/modules/enum.so"
# load the group module, to verify if a user forwards
to voicemail
loadmodule "/usr/local/lib/ser/modules/group.so"
# load the nathelper module
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters
---------------
# -- registrar parameter
# special NAT flag indicates that a registered client
is behind NAT
modparam("registrar", "nat_flag", 6)
# -- 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)
#modparam("usrloc", "db_url",
"mysql://ser:heslo@localhost/ser")
modparam("usrloc|auth_db|acc|group|msilo|uri","db_url","mysql://ser:heslo@localhost/ser")
# -- 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")
modparam("auth_db", "db_url",
"mysql://ser:heslo@localhost/ser")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- voicemail params --
#modparam("voicemail",
"db_url","mysql://login:password@localhost/ser")
# -- voicemail params --
#modparam("group",
"db_url","mysql://login:password@localhost/ser")
# -- nathelper params --
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
modparam("tm", "fr_inv_timer", 30 )
#modparam("tm", "fr_inv_timer", 8 )
#Explicitly set the socket used by rtpproxy
#modparam("nathelpler", "rtpproxy_sock",
"/var/run/rtpproxy.sock")
# ------------------------- request routing logic
-------------------
# main routing logic
route{
log(1,
"-------------------------------------------\n");
log(1, "entering main loop\n");
if (nat_uac_test("2")) {
log(1, "src address different than via header->NAT
detected\n");
log(1, "force_rport and fix_nated_contact and
setflag(5)\n");
#try NAT traversal, works only if the client is
symmetrical
force_rport();
fix_nated_contact();
append_hf("P-hint: fixed NAT contact for
request\r\n");
# flag 5 indicates that incoming request is from NATed
client
setflag(5);
};
if (method=="REGISTER")
log(1, "REGISTER message received\n");
if (method=="INVITE")
log(1, "INVITE message received\n");
if (method=="ACK")
log(1, "ACK message received\n");
if (method=="BYE")
log(1, "BYE message received\n");
if (method=="CANCEL")
log(1, "CANCEL message received\n");
if (method=="SUBSCRIBE")
log(1, "SUBSCRIBE message received\n");
if (method=="NOTIFY")
log(1, "NOTIFY message received\n");
if (method=="OPTIONS")
log(1, "OPTIONS message received\n");
if (method=="INFO")
log(1, "INFO message received\n");
if (method=="MESSAGE")
log(1, "MESSAGE message received\n");
if (method=="REFER")
log(1, "REFER message received\n");
# 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) {
#if (len_gt( max_len )) {
sl_send_reply("513", "Message too big");
break;
};
# loose-route processing
if (loose_route()) {
log(1, "loose_route processing\n");
t_relay();
break;
};
# create transaction state; abort if error occured
# if ( !t_newtran()) {
# sl_reply_error();
# break;
# };
#new
# now check if it's about PSTN destinations through
our gateway;
# note that 8.... is exempted for numerical non-gw
destinations
if (uri=~"^sip:0[0-9]*@.*") {
log(1, "PSTN call...\n");
route(3);
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") {
log(1, "analyzing REGISTER request\n");
# Uncomment this if you want to use digest
authentication
if (!www_authorize("mypc", "subscriber")) {
www_challenge("mypc", "0");
break;
};
if (isflagset(5)) {
#register from nated client, save nat_flag=6
#in location table
setflag(6);
};
if (!save("location")) {
log(1, "save location error\n");
sl_reply_error();
};
break;
};
lookup("aliases");
#mark transaction for voicemail
if (is_user_in("Request-URI", "voicemail\n")) {
log(1, "requested user is in voicemail group");
setflag(4);
};
# native SIP destinations are handled using our USRLOC
DB
if (!lookup("location")) {
# handle user which was not found
log(1, "requested user not found\n");
route(4);
break;
};
};
#add failure route which should be performed if
response code >=300
if (method=="INVITE" && isflagset(4)) {
log(1, "invite for voicemail user->initiate
failureroute[1]\n");
t_on_failure("1");
};
# forward to current uri now; use stateful forwarding;
that
# works reliably even if we forward from TCP to UDP
route(1);
}
route[1]{
log(1,
"-------------------------------------------\n");
log(1, "entering route[1] - relaying SIP message\n");
if ((isflagset(5)) || (isflagset(6))) {
log(1, "at least one of the participants is
NATed->record_route\n");
record_route();
log(1, " -->setting up reply processing
->onreply_route[1]");
t_on_reply("1");
if (method=="INVITE") {
log(1, " INVITE request-->force_rtp_proxy, set
NATED-INVITE flag(7)");
force_rtp_proxy();
append_hf("P-hint: request forced to rtp proxy\r\n");
setflag(7);
};
};
log(1, "relaying message ...\n");
if (!t_relay()) {
log(1, "t_relay error occured\n");
sl_reply_error();
};
}
# all incoming replies for t_onrepli-ed transactions
enter here
onreply_route[1] {
log(1,
"-------------------------------------------\n");
log(1, "onreply_route[1] entered\n");
if (isflagset(6)) {
log(1, "transaction was sent to a NATED client -> fix
nated contact\n");
fix_nated_contact();
append_hf("P-hint: fixed NAT contact for
response\r\n");
}
if ( (status=~"100") ) {
log(1, "status 100 received\n");
};
if ( (status=~"180") ) {
log(1, "status 180 received\n");
};
if ( (status=~"202") ) {
log(1, "status 202 received\n");
};
if ( (status=~"200" || status=~"183") ) {
log(1, "status 2xx or 183");
if ( isflagset(7) ) {
log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy
\n");
force_rtp_proxy();
append_hf("P-hint: response forced to rtp proxy\r\n");
};
};
}
#new
# logic for calls to the PSTN
route[3] {
# turn accounting on
setflag(1);
/* require all who call PSTN to be members of the
"int" group;
apply ACLs only to INVITEs -- we don't need to protect
other requests, as they
don't imply charges; also it could cause troubles when
a call comes in via PSTN
and goes to a party that can't authenticate
(voicemail, other domain) -- BYEs would
fail then; exempt Cisco gateway from authentication by
IP address -- it does not
support digest
*/
if (method=="INVITE" && (!src_ip==192.168.1.21)) {
if (!proxy_authorize( "mypc" /* realm */,
"subscriber" /* table name */)) {
proxy_challenge( "mypc" /* realm */, "0" /* no qop */
);
break;
};
# let's check from=id ... avoids accounting confusion
if(!is_user_in("credentials", "int")) {
sl_send_reply("403", "NO PSTN Privileges...");
break;
};
consume_credentials();
}; # INVITE to authorized PSTN
# if you have passed through all the checks, let your
call go to GW!
force_rtp_proxy();
record_route();
t_on_reply("1");
# snom conditioner
if (method=="INVITE" && search("User-Agent: snom")) {
replace("100rel, ", "");
};
append_hf("P-hint: GATEWAY\r\n");
# use UDP to guarantee well-known sender port (TCP
ephemeral)
#t_relay_to_udp("212.17.35.184","5060");
t_relay_to_udp("192.168.1.1","5060");
}
route[4]{
log(1,
"-------------------------------------------\n");
log(1, "entering route[4] = requested user not
online\n");
# non-Voip -- just send "off-line"
if (!(method == "INVITE" || method == "ACK" || method
== "CANCEL" || method == "REFER" || method == "BYE"))
{
log(1, "no invite,ack,cancel,refer->return 404\n");
sl_send_reply("404", "Not Found");
break;
};
# not voicemail subscriber and no echo/conference call
if ( isflagset(4)) {
log(1, "flag(4) active\n");
};
if (uri =~ "conference") {
log(1, "conference call\n");
};
if (uri =~ "echo") {
log(1, "echo call\n");
};
if ( !( isflagset(4) || (uri =~ "conference") || (uri
=~ "echo") ) ) {
log(1, "no voicemail subscriber->return 404");
sl_send_reply("404", "Not Found and no voicemail
turned on");
break;
};
if ( isflagset(5) ) {
log(1, "caller is NATed->record_route\n");
record_route();
log(1, " -->setting up reply processing
->onreply_route[1]");
t_on_reply("1");
if (method=="INVITE") {
log(1, " INVITE request-->force_rtp_proxy");
force_rtp_proxy();
};
};
# forward to voicemail now
� rewritehostport("192.168.1.21:5060");
log(1, "forward to voicemail\n");
t_relay_to_udp("192.168.1.21", "5060");
}
failure_route[1] {
/* XX: note: unsafe if preloaded routes without
username used */
log(1,
"-------------------------------------------\n");
log(1, "failureroute[1] entered\");
revert_uri();
rewritehostport("192.168.1.21:5060");
append_branch();
t_relay_to_udp("192.168.1.21", "5060");
}
=====
- Tareq
Never argue with an idiot: first (s)he will drag you down to his/her level, then (s)he will beat you with experience.
__________________________________
Do you Yahoo!?
Take Yahoo! Mail with you! Get it on your mobile phone.
http://mobile.yahoo.com/maildemo
Hi,
I ran into some issues with re-invite and nat.
Ser uses "lookup" location to load the flag of a NATted callee. Because
re-invite already knows the callee's contact, it uses loose-route. It
doesn't call "lookup". The problem is that if the callee is behind NAT, ser
can't tell.
Since the ruri of re-invite is already in the location table, I wonder if we
can have another function to find it in the location table and load the
flag. Does it make sense?
Thanks,
Richard
Hi All.
When someone dials 411 I want to rewrite the request before sending it out to the PSTN gateway.
For example if my SIP phone user name is 4071234567 and I dial 411 I want to send the request out
to the PSTN gateway as 4075551212 for directory assistance so that the subscriber's __local__
directory assistance is dialed.
How can I do this using -dev23?
Regards,
Paul
__________________________________
Do you Yahoo!?
The all-new My Yahoo! - What will yours do?
http://my.yahoo.com
Sorry - I have not. The only thing I've worked on is Message Waiting Indicator (MWI) which is just
a SIP NOTIFY message.
Regards,
Paul
--- mohammad mirzaee <agent(a)rasatech.com> wrote:
> Hi Paul;
>
>
>
> Have you worked on "sms voicemail notification" with Asterisk?????????
>
>
> Appreciate your suggestions
> mohammad
>
>
>
> ----- Original Message -----
> From: "Java Rockx" <javarockx(a)yahoo.com>
> To: "mohammad mirzaee" <agent(a)rasatech.com>; <serusers(a)lists.iptel.org>
> Sent: Tuesday, November 30, 2004 4:35 PM
> Subject: Re: External Notify (ser+asterisk)
>
>
> > Mohammad,
> >
> > The only reason to use sipsak an Asterisk server is because I don't know
> of any other way to have
> > Asterisk send sip messages directly to the SIP phones.
> >
> > For example, you call me and leave me a voicemail. When you hang up your
> phone (after recording
> > your message) Asterisk has to somehow now contact my SIP phone and send
> the MWI NOTIFY message.
> > The problem is that my phone never registered with Asterisk - it only
> registered with SER.
> >
> > So the only way I know to get Asterisk to send a message to an unknown
> target phone is to simply
> > use sipsak to send the SIP NOTIFY message to SER. Once SER gets the
> message it will send it to the
> > SIP phone - providing that it can indeed find a contact location for it.
> >
> > Regards,
> > Paul
> >
> > --- mohammad mirzaee <agent(a)rasatech.com> wrote:
> >
> > > Hi ALL;
> > >
> > > Hi Paul;
> > >
> > >
> > >
> > >
> > > About Paul's email on SEP.19 with the subject " ingecting SIP NOTIFY
> INTO SER FIFO" , I come up
> > > with the following question:
> > >
> > > Why we use "sipsak" for sending "NOTIFY" message from Asterisk to Ser??
> Is it because of
> > > Asterisk is not a "b2bua"
> > >
> > >
> > >
> > >
> > >
> > > Warnest Regards
> > > mohammad
> >
> >
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > All your favorites on one personal page - Try My Yahoo!
> > http://my.yahoo.com
> >
> >
>
>
__________________________________
Do you Yahoo!?
All your favorites on one personal page � Try My Yahoo!
http://my.yahoo.com
Hi Jan,
Thanks for your reply.
I neglected to state that the library did include the symbol:
'nm' reports: 00111fc4 D module_version
Regards,
Michael
>>2. Compiled and linked against libmysqlclient.so.14.0 (built locally
>> with '-g'): 'ser' loads the file, reports the
>> following error and then exits (debug=9):
>>0(9791) loading module /usr/local/lib/ser/modules/mysql.so.4.1.7.new
>>0(9791) ERROR: no version info in module
>> </usr/local/lib/ser/modules/mysql.so.4.1.7.new>: Can't open file
>
>
> This is strange, there should be "module_version" symbol in the
> library, try:
>
> nm mysql.so | grep module_version
>
> Jan.
>
Hello,
I think the white space is not legal in 3261. Please take a look at the
message below.
Best regards,
Martin
-----Original Message-----
From: Attila Sipos [mailto:Attila.Sipos@vegastream.com]
Sent: Tuesday, November 16, 2004 12:01 PM
To: Martin Koenig; sip-implementors(a)cs.columbia.edu
Subject: RE: [Sip-implementors] Whitespace after value in SIP header field
Hi,
One of the headers in the posting to the SERusers mailing
list is:
Max-Forwards: 8 .
According to RFC3261 Max-Forwards is defined as:
Max-Forwards = "Max-Forwards" HCOLON 1*DIGIT
and DIGIT (from RFC2234) is:
DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" /
"7" / "8" / "9"
So, you can have a space between the colon and the first digit
but you're not allowed any spaces after or between any digits
and you're certainly not allowed a '.' character.
Regards,
Attila
Attila Sipos
Software Engineer
http://www.vegastream.com/
> -----Original Message-----
> From: sip-implementors-bounces(a)cs.columbia.edu
> [mailto:sip-implementors-bounces@cs.columbia.edu]On Behalf Of Martin
> Koenig
> Sent: 16 November 2004 09:56
> To: sip-implementors(a)cs.columbia.edu
> Subject: [Sip-implementors] Whitespace after value in SIP header field
>
>
> Hello,
>
> please check the following posting to the SERusers mailinglist:
>
> http://lists.iptel.org/pipermail/serusers/2004-September/011580.html
>
> What do you think? Is the white space after the header field
> value according
> to 3261 or not?
>
> Best regards,
> Martin
>
> _______________________________________________
> Sip-implementors mailing list
> Sip-implementors(a)cs.columbia.edu
> http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors
>
hello freinds,
this is my second attempt to explore the possibility
of useing the IVR with the SER in redhat linux 9.0
version.
In the first attempt i could not do the this thing
after a series of mails and responses to and from the
list.
At last the rafhel suggested to use the fedora
he suspects that the libraries used by the ivr (i.e
sipums) are not available in the redhat versions of
the linux where iam compiling.
what i want from the list is does any body got the
success in doing so with configurations.
my version of ser is ser
******************************************************
version: ser 0.8.12-1rc6 (i386/linux)
flags: STATS:Off, USE_IPV6, USE_TCP, DISABLE_NAGLE,
DNS_IP_HACK, SHM_MEM, SHM_MM
AP, PKG_MALLOC, F_MALLOC,
FAST_LOCK-ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144,
MAX_LISTEN 16, MAX_URI_SI
ZE 1024, BUF_SIZE 65535
@(#) $Id: main.c,v 1.168.4.3 2004/06/28 15:41:21
andrei Exp $
main.c compiled on 13:56:51 Nov 26 2004 with gcc 3.2
******************************************************
you'r help will be highly appreciated
with regards
voip technocrat
__________________________________
Do you Yahoo!?
All your favorites on one personal page Try My Yahoo!
http://my.yahoo.com
hello friends,
i want to relay all the rtp traffic through my
rtpproxy
i.e irrespective of is it in public ip or in private
ip
so what guidelines do i need to follow to achive this
this is my current ser.cfg
my ultimate aim is that all the rtpptrafic must go
from
the rtpproxy ip only
*******************************************************
# ----------- global configuration parameters
------------------------
debug=8 # debug level (cmd line:
-dddddddddd)
fork=yes
log_stderror=yes # (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"
# ------------------ 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"
# 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"
# !! Nathelper
loadmodule "/usr/local/lib/ser/modules/nathelper.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)
# !! 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") {
save("location");
break;
};
lookup("aliases");
# native SIP destinations are handled
using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not
Found");
break;
};
};
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 if (nat_uac_test("1")) {
fix_nated_contact();
};
}
*******************************************************
with regards
voip technocrat
__________________________________
Do you Yahoo!?
Yahoo! Mail - Easier than ever with enhanced search. Learn more.
http://info.mail.yahoo.com/mail_250