On Thu, Feb 11, 2010 at 3:21 PM, Chandrakant Solanki <
solanki.chandrakant(a)gmail.com> wrote:
On Thu, Feb 11, 2010 at 2:58 PM, Daniel-Constantin Mierla <
miconda(a)gmail.com> wrote:
On 2/11/10 9:34 AM, Chandrakant Solanki wrote:
On Thu, Feb 11, 2010 at 10:26 AM, Chandrakant Solanki <
solanki.chandrakant(a)gmail.com> wrote:
On Wed, Feb 10, 2010 at 11:07 PM, Daniel-Constantin Mierla <
miconda(a)gmail.com> wrote:
Hello,
check your config whether you send a reply and do xlog("Method not
supported...") before getting to your condition.
Cheers,
Daniel
On 2/10/10 10:46 AM, Chandrakant Solanki wrote:
Hi
below line is in my configuration...
loadmodule "pua.so"
modparam("pua", "db_url", "mysql://
kamailio:kamailio@172.16.0.10:3306/kamailio")
modparam("pua", "db_table", "pua")
----
----
if(is_method("NOTIFY") && src_ip==172.16.0.15) {
xlog("L_INFO", "NOTIFY Method found\n");
if(!t_relay()){
sl_reply_error();
}
}
----
----
I found following error in log...
Feb 10 15:14:40 kamailio_1 /sbin/kamailio[5597]: Method not supported -
M=NOTIFY RURI=sip:172.16.0.15
F=sip:2222222@pbxusers.net<sip%3A2222222@pbxusers.net>T=
sip:172.16.0.15 IP=172.18.100.89 ID=17dd4bb9-81d132a0(a)172.18.100.89
--
Regards,
Chandrakant Solanki
_______________________________________________
Kamailio (OpenSER) - Users mailing
listUsers@lists.kamailio.orghttp://lists.kamailio.org/cgi-bin/mailman/listinfo/usershttp://lists.openser-project.org/cgi-bin/mailman/listinfo/users
--
Daniel-Constantin Mierla
eLearning class for Kamailio 3.0.0
*
http://www.asipto.com/
Hi
Thanks for quick reply,
I didn't specify xlog("Method not supported...") any where... which
module is require to work with NOTIFY method...
--
Regards,
Chandrakant Solanki
Hi
I am implementing MWI and for that i am using
http://lists.iptel.org/pipermail/serusers/2004-September/011552.html when
I executed sipsak, gives error on kamailio NOTIFY method not supported....
what asterisk version are you using? Latest asterisks have support for
MWI, you just need to send SUBSCRIBE to it and asterisk will send NOTIFY
back, no need for sipsak workaround.
If you can send the config, some of us can spot if that is generated by
kamailio. As said in a previous email, kamailio basically does not care
about sip message methods, it can support anything, it is a matter of what
routing logic you put in config.
Cheers,
Daniel
NOTIFY sip:1111111@test.com <sip%3A1111111(a)test.com> SIP/2.0
From: 2222222 <sip:2222222@test.com <sip%3A2222222(a)test.com>>
To: <sip:1111111@test.com <sip%3A1111111(a)test.com>>
Contact: <sip:2222222@test.com <sip%3A2222222(a)test.com>>
Call-ID: 022270(a)172.18.100.73
CSeq: 022270 NOTIFY
Event: message-summary
Content-Type: application/simple-message-summary
Accept: application/simple-message-summary
Content-Length: 38
Messages-Waiting: Yes
Message-Account: sip:1111111@test.com <sip%3A1111111(a)test.com>
Voicemail: 4/0
--
Regards,
Chandrakant Solanki
_______________________________________________
Kamailio (OpenSER) - Users mailing list
Users@lists.kamailio.orghttp://lists.kamailio.org/cgi-bin/mailman/listinfo/usershttp://lists.openser-project.org/cgi-bin/mailman/listinfo/users
--
Daniel-Constantin Mierla
eLearning class for Kamailio 3.0.0
*
http://www.asipto.com/
Hi
Thanks for reply.
Here is my config file.. I am using asterisk 1.6.0.5
listen = 0.0.0.0
port = 5060
mpath = "/lib/kamailio/modules"
debug = 9
fork = yes
disable_tcp = no
log_facility = LOG_LOCAL0
log_stderror = no
dns = no
rev_dns = no
loadmodule "usrloc.so"
modparam("usrloc", "user_column", "username")
modparam("usrloc", "domain_column", "domain")
modparam("usrloc", "contact_column", "contact")
modparam("usrloc", "expires_column", "expires")
modparam("usrloc", "q_column", "q")
modparam("usrloc", "callid_column", "callid")
modparam("usrloc", "cseq_column", "cseq")
modparam("usrloc", "methods_column", "methods")
modparam("usrloc", "flags_column", "flags")
modparam("usrloc", "user_agent_column", "user_agent")
modparam("usrloc", "received_column", "received")
modparam("usrloc", "socket_column", "socket")
modparam("usrloc", "use_domain", 0)
modparam("usrloc", "desc_time_order", 0)
modparam("usrloc", "timer_interval", 60)
modparam("usrloc", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
modparam("usrloc", "db_mode", 1)
modparam("usrloc", "matching_mode", 0)
modparam("usrloc", "cseq_delay", 20)
modparam("usrloc", "nat_bflag", 6)
loadmodule "pv.so"
loadmodule "registrar.so"
modparam("registrar", "default_expires", 3600)
modparam("registrar", "min_expires", 60)
modparam("registrar", "max_expires", 0)
modparam("registrar", "default_q", 0)
modparam("registrar", "append_branches", 1)
modparam("registrar", "case_sensitive", 0)
modparam("registrar", "received_param", "received")
modparam("registrar", "max_contacts", 100)
modparam("registrar", "retry_after", 0)
modparam("registrar", "method_filtering", 0)
modparam("registrar", "path_mode", 2)
modparam("registrar", "path_use_received", 0)
modparam("registrar", "received_avp", "$avp(i:801)")
loadmodule "rr.so"
modparam("rr", "enable_full_lr", 0)
modparam("rr", "append_fromtag", 1)
modparam("rr", "enable_double_rr", 1)
modparam("rr", "add_username", 0)
loadmodule "tm.so"
modparam("tm", "fr_timer", 3)
modparam("tm", "fr_inv_timer", 35)
modparam("tm", "wt_timer", 5)
modparam("tm", "delete_timer", 2)
modparam("tm", "ruri_matching", 1)
modparam("tm", "via1_matching", 1)
modparam("tm", "unix_tx_timeout", 2)
modparam("tm", "restart_fr_on_each_reply", 1)
modparam("tm", "pass_provisional_replies", 0)
modparam("tm", "fr_inv_timer_avp",
"$avp(s:callee_fr_inv_timer)")
loadmodule "xlog.so"
modparam("xlog", "buf_size", 4096)
modparam("xlog", "force_color", 0)
loadmodule "mi_fifo.so"
modparam("mi_fifo", "fifo_name", "/tmp/openser_fifo")
loadmodule "domain.so"
modparam("domain", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
modparam("domain", "db_mode", 1)
modparam("domain", "domain_table", "domain")
modparam("domain", "domain_col", "domain")
loadmodule "nathelper.so"
#modparam("nathelper", "natping_interval", 60)
#modparam("nathelper", "ping_nated_only", 1)
#modparam("nathelper", "rtpproxy_sock",
"unix:/var/run/rtpproxy.sock")
#modparam("nathelper", "rtpproxy_disable_tout", 60)
#modparam("nathelper", "rtpproxy_tout", 1)
#modparam("nathelper", "rtpproxy_retr", 5)
modparam("nathelper", "sipping_method", "OPTIONS")
modparam("nathelper", "received_avp", "$avp(i:801)")
loadmodule "textops.so"
loadmodule "sl.so"
modparam("sl", "enable_stats", 1)
loadmodule "maxfwd.so"
modparam("maxfwd", "max_limit", 256)
loadmodule "db_mysql.so"
modparam("db_mysql", "ping_interval", 300)
modparam("db_mysql", "auto_reconnect", 1)
loadmodule "auth.so"
modparam("auth", "nonce_expire", 300)
modparam("auth", "rpid_suffix",
";party=calling;id-type=subscriber;screen=yes")
modparam("auth", "rpid_avp", "$avp(s:rpid)")
loadmodule "auth_db.so"
modparam("auth_db", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
modparam("auth_db", "user_column", "username")
modparam("auth_db", "domain_column", "domain")
modparam("auth_db", "password_column", "password")
modparam("auth_db", "password_column_2", "ha1b")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "use_domain", 1)
modparam("auth_db", "load_credentials",
"$avp(s:caller_uuid)=uuid")
loadmodule "uri_db.so"
modparam("uri_db", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
loadmodule "avpops.so"
modparam("avpops", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
modparam("avpops", "avp_table", "usr_preferences")
modparam("avpops", "use_domain", 1)
modparam("avpops", "uuid_column", "uuid")
modparam("avpops", "username_column", "username")
modparam("avpops", "domain_column", "domain")
modparam("avpops", "attribute_column", "attribute")
modparam("avpops", "value_column", "value")
modparam("avpops", "type_column", "type")
loadmodule "lcr.so"
modparam("lcr", "db_url",
"mysql://openser:openserrw@172.18.100.73/openser
")
modparam("lcr", "gw_table", "gw")
modparam("lcr", "gw_name_column", "gw_name")
modparam("lcr", "ip_addr_column", "ip_addr")
modparam("lcr", "port_column", "port")
modparam("lcr", "uri_scheme_column", "uri_scheme")
modparam("lcr", "transport_column", "transport")
modparam("lcr", "grp_id_column", "grp_id")
modparam("lcr", "lcr_table", "lcr")
modparam("lcr", "strip_column", "strip")
modparam("lcr", "prefix_column", "prefix")
modparam("lcr", "from_uri_column", "from_uri")
modparam("lcr", "priority_column", "priority")
modparam("lcr", "flags_avp", "$avp(i:712)")
modparam("lcr", "gw_uri_avp", "$avp(i:1400)")
modparam("lcr", "ruri_user_avp", "$avp(i:1402)")
modparam("lcr", "fr_inv_timer_avp",
"$avp(s:fr_inv_timer_avp)")
modparam("lcr", "fr_inv_timer", 90)
modparam("lcr", "fr_inv_timer_next", 30)
modparam("lcr", "rpid_avp", "$avp(s:rpid)")
loadmodule "alias_db.so"
modparam("alias_db", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
modparam("alias_db", "user_column", "username")
modparam("alias_db", "domain_column", "domain")
modparam("alias_db", "alias_user_column",
"alias_username")
modparam("alias_db", "alias_domain_column",
"alias_domain")
modparam("alias_db", "use_domain", 0)
loadmodule "uac.so"
modparam("uac", "rr_store_param", "vsf")
modparam("uac", "from_restore_mode", "auto")
modparam("uac", "from_passwd", "s1p:Wiz4rd!")
loadmodule "acc.so"
modparam("acc", "db_url",
"mysql://openser:openserrw@172.18.100.73/openser
")
# flag to record to db
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)
# flag to log to syslog
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
# use extra accounting to record caller and callee username/domain
# - take them from From URI and R-URI
modparam("acc", "log_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")
modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_user=$rU;dst_domain=$rd")
loadmodule "mi_datagram.so"
modparam("mi_datagram", "socket_name", "udp:127.0.0.1:8080"
)
modparam("mi_datagram", "children_count", 3 )
modparam("mi_datagram", "unix_socket_mode", 0600 )
modparam("mi_datagram", "unix_socket_group", "root" )
modparam("mi_datagram", "unix_socket_user", "root" )
modparam("mi_datagram", "socket_timeout", 2000 )
loadmodule "mediaproxy.so"
modparam("mediaproxy", "mediaproxy_socket",
"/var/run/mediaproxy/dispatcher.sock")
modparam("mediaproxy", "mediaproxy_timeout", 500)
modparam("mediaproxy", "signaling_ip_avp",
"$avp(s:nat_ip)")
modparam("mediaproxy", "media_relay_avp",
"$avp(s:media_relay)")
#MWI
loadmodule "exec.so"
loadmodule "presence.so"
modparam("presence", "server_address",
"sip:172.18.100.73:5060")
modparam("presence", "presentity_table", "presentity")
modparam("presence", "db_url", "mysql://
openser:openserrw@172.18.100.73/openser")
loadmodule "presence_mwi.so"
route[0]
{
xlog("L_INFO", "New Request - M=$rm RURI=$ru F=$fu T=$tu IP=$si
ID=$ci\n");
force_rport();
if(msg:len > max_len)
{
xlog("L_INFO", "Message too big - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
sl_send_reply("513", "Message Too Big");
exit;
}
if (!mf_process_maxfwd_header("10"))
{
xlog("L_INFO", "Too many hops - M=$rm RURI=$ru F=$fu
T=$tu
IP=$si ID=$ci\n");
sl_send_reply("483", "Too Many Hops");
exit;
}
if(!is_method("REGISTER"))
{
if(nat_uac_test("19"))
{
record_route(";nat=yes");
}
else
{
record_route();
}
}
if (is_method("SUBSCRIBE")) {
handle_subscribe();
xlog("L_INFO", "SUBSCRIBE Method\n");
}
if(is_method("PUBLISH"))
{
xlog("L_INFO", "PUBLISH Metdho\n" );
if($hdr(Sender)!= NULL) {
handle_publish("$hdr(Sender)");
xlog("L_INFO", "PUBLISH with $hdr(Sender)");
}
else {
handle_publish();
xlog("L_INFO", "PUBLISH with ....");
}
t_release();
}
if(is_method("CANCEL") || is_method("BYE"))
{
end_media_session();
}
if(loose_route())
{
if(nat_uac_test("19") ||
search("^Route:.*;nat=yes"))
{
fix_nated_contact();
setbflag(6);
}
route(8);
}
if(is_method("REGISTER"))
{
route(7);
}
if(is_method("INVITE"))
{
# use_media_proxy();
route(9);
}
# if(is_method("NOTIFY")){
# xlog("L_INFO", "NOTIFY Method found\n");
# if(!t_relay()){
# sl_reply_error();
# xlog("L_INFO", "t_relay failed\n" );
# }
# else {
# xlog("L_INFO", "t_relay success\n" );
# }
# }
# if(is_method("SUBSCRIBE")){
# xlog("L_INFO", "SUBSCRIBE Method found\n");
# if(!www_authorize("", "subscriber")){
# www_challenge("", "0");
# }
# exec_msg("/usr/bin/mwi/subscribe $fu");
# xlog("L_INFO", "SUBSCRIBE script is executed\n");
# }
if(is_method("CANCEL") || is_method("ACK"))
{
route(13);
}
route(14);
}
########################################################################
# Request route 'clear-usr-preferences-caller'
########################################################################
route[1]
{
xlog("L_INFO", "Clear caller preferences - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
avp_delete("$avp(s:caller_cli)/g");
avp_delete("$avp(s:clir)/g");
}
########################################################################
# Request route 'clear-usr-preferences-callee'
########################################################################
route[2]
{
xlog("L_INFO", "Clear callee preferences - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
avp_delete("$avp(s:callee_fr_inv_timer)/g");
avp_delete("$avp(s:cfu)/g");
avp_delete("$avp(s:cfc)/g");
}
########################################################################
# Request route 'usr-preferences-caller'
########################################################################
route[3]
{
route(1);
xlog("L_INFO", "Load caller preferences for uuid
'$avp(s:caller_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
# load caller avps
avp_db_load("$avp(s:caller_uuid)", "*");
avp_copy("$avp(s:cli)", "$avp(s:caller_cli)/d");
if(is_avp_set("$avp(s:clir)/n") &&
avp_check("$avp(s:clir)",
"eq/i:1"))
{
# mark for anonymization
setflag(28);
}
}
########################################################################
# Request route 'usr-preferences-callee'
########################################################################
route[4]
{
xlog("L_INFO", "Load callee preferences for uuid
'$avp(s:callee_uuid)' - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
# load callee avps
avp_db_load("$avp(s:callee_uuid)", "*");
if(is_avp_set("$avp(s:cfu)/s"))
{
xlog("L_INFO", "Call-forward-unconditional to
'$avp(s:cfu)'
found - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
avp_delete("$avp(s:caller_uuid)/g");
avp_copy("$avp(s:callee_uuid)",
"$avp(s:caller_uuid)/d");
avp_pushto("$ru", "$avp(s:cfu)");
route(3);
route(10);
exit;
}
if(is_avp_set("$avp(s:ringtimeout)/n"))
{
xlog("L_INFO", "Setting ring timeout to
$avp(s:ringtimeout)
secs - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
avp_copy("$avp(s:ringtimeout)",
"$avp(s:callee_fr_inv_timer)/d");
}
}
########################################################################
# Request route 'clir'
########################################################################
route[5]
{
if(isflagset(28) && !isflagset(27))
{
setflag(27);
xlog("L_INFO", "Anonymize caller - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
uac_replace_from("Anonymous","sip:anonymous@anonymous.invalid");
if(is_present_hf("Privacy"))
{
remove_hf("Privacy");
}
append_hf("Privacy: id\r\n");
}
}
########################################################################
# Request route 'stop-rtp-proxy'
########################################################################
route[6]
{
if(isflagset(22))
{
end_media_session();
}
}
########################################################################
# Request route 'base-route-register'
########################################################################
route[7]
{
sl_send_reply("100", "Trying");
if(!www_authorize("", "subscriber"))
{
xlog("L_INFO", "Register authentication failed - M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
www_challenge("", "0");
exit;
}
if(!check_to())
{
xlog("L_INFO", "Spoofed To-URI detected - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("403", "Spoofed To-URI Detected");
exit;
}
consume_credentials();
if(!search("^Contact:[ ]*\*") && nat_uac_test("19"))
{
fix_nated_register();
setbflag(6);
}
if(!save("location"))
{
xlog("L_ERR", "Saving contact failed - M=$rm RURI=$ru
F=$fu
T=$tu IP=$si ID=$ci\n");
sl_reply_error();
exit;
}
xlog("L_INFO", "Registration successful - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
exit;
}
########################################################################
# Request route 'base-outbound'
########################################################################
route[8]
{
if(is_present_hf("P-Asserted-Identity"))
{
remove_hf("P-Asserted-Identity");
}
if(is_present_hf("Remote-Party-ID"))
{
remove_hf("Remote-Party-ID");
}
if(is_avp_set("$avp(s:caller_cli)/s"))
{
if(!isflagset(28))
{
xlog("L_INFO", "Set caller CLI
'$avp(s:caller_cli)'
- M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
append_hf("P-Asserted-Identity:
<$avp(s:caller_cli)>\r\n");
}
}
route(5);
if(isbflagset(6))
{
if(!isflagset(22) && !search("^Content-Length:[ ]*0"))
{
setflag(22);
use_media_proxy();
}
t_on_reply("2");
}
else
{
t_on_reply("1");
}
if(!isflagset(21))
{
t_on_failure("2");
}
if(isflagset(29))
{
append_branch();
}
if(is_present_hf("Proxy-Authorization"))
{
consume_credentials();
}
xlog("L_INFO", "Request leaving server, D-URI='$du' -
M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
# no 100 (we already sent it) and no DNS blacklisting
if(!t_relay("0x05"))
{
sl_reply_error();
if(is_method("INVITE") && isbflagset(6))
{
end_media_session();
}
}
exit;
}
########################################################################
# Request route 'base-route-invite'
########################################################################
route[9]
{
sl_send_reply("100", "Trying");
if(from_gw())
{
$avp(s:caller_uuid)="0";
xlog("L_INFO", "Call from PSTN' - M=$rm RURI=$ru
F=$fu
T=$tu IP=$si ID=$ci\n");
setflag(23);
$avp(s:ringtimeout)=1000;
route(3);
if (nat_uac_test("3"))
{
xlog("L_INFO", "Inside NATed INVITE
Processing\n");
fix_nated_contact();
fix_nated_sdp("3");
t_on_reply("1");
}
else
{
t_on_reply("1");
}
if(nat_uac_test("19"))
{
fix_nated_contact();
setbflag(6);
}
route(51);
}
else
{
if(!proxy_authorize("", "subscriber"))
{
xlog("L_INFO", "Proxy authentication failed -
M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
proxy_challenge("", "0");
exit;
}
if(!check_from())
{
xlog("L_INFO", "Spoofed From-URI detected - M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("403", "Spoofed From-URI
Detected");
exit;
}
route(3);
if(nat_uac_test("19"))
{
fix_nated_contact();
setbflag(6);
}
route(10);
}
}
########################################################################
# Request route 'invite-find-callee'
########################################################################
route[10]
{
if(alias_db_lookup("dbaliases"))
{
xlog("L_INFO", "Callee was aliased - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
}
route(2);
if(!is_domain_local("$rd"))
{
setflag(20);
$avp(s:callee_uuid) = "0";
route(12);
}
avp_delete("$avp(s:callee_uuid)");
avp_db_query("select uuid from subscriber where username =
'$rU'",
"$avp(s:callee_uuid)");
if(is_avp_set("$avp(s:callee_uuid)/s"))
{
xlog("L_INFO", "Callee is local,
uuid='$avp(s:callee_uuid)'
- M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(11);
}
else
{
$avp(s:callee_uuid) = "0";
xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru
F=$fu
T=$tu IP=$si ID=$ci\n");
#
# *86 - sending user direct to access voicemail from sip client
#
if($rU=="*86")
{
route(12);
}
else
{
if($(rU{s.len})<=7)
{
route(11);
}
else
{
route(12);
}
}
}
exit;
}
########################################################################
# Request route 'invite-to-internal'
########################################################################
route[11]
{
route(4);
revert_uri();
seturi("sip:*89@openser.org");
rewritehostport("voicemailserver.testpbx.com:5060");
route(8);
exit;
}
########################################################################
# TEST ROUTE 51
########################################################################
route[51]
{
if(alias_db_lookup("dbaliases"))
{
xlog("L_INFO", "Callee was aliased - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
}
route(2);
if(!is_domain_local("$rd"))
{
setflag(20);
$avp(s:callee_uuid) = "0";
route(12);
}
avp_delete("$avp(s:callee_uuid)");
avp_db_query("select uuid from subscriber where username =
'$rU'",
"$avp(s:callee_uuid)");
if(is_avp_set("$avp(s:callee_uuid)/s"))
{
xlog("L_INFO", "Callee is local,
uuid='$avp(s:callee_uuid)'
- M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(52);
}
else
{
$avp(s:callee_uuid) = "0";
xlog("L_INFO", "Callee is not local - M=$rm RURI=$ru
F=$fu
T=$tu IP=$si ID=$ci\n");
route(12);
}
exit;
}
########################################################################
#TEST 52
########################################################################
route[52]
{
route(4);
if(!lookup("location"))
{
xlog("L_INFO", "Local user offline - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
sl_send_reply("404", "User Offline");
}
else
{
xlog("L_INFO", "Local user online - M=$rm RURI=$ru F=$fu
T=$tu IP=$si ID=$ci\n");
route(8);
}
exit;
}
########################################################################
# Request route 'invite-to-external'
########################################################################
route[12]
{
if(isflagset(20))
{
xlog("L_INFO", "Call to foreign domain - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
route(8);
exit;
}
if(!isflagset(23))
{
if(uri =~ "^sip:\*86@.*")
{
xlog("L_INFO", "User accessing Voicemail -
M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
rewritehostport("voicemailserver.testpbx.com:5060");
route(8);
}
# don't allow calls relaying from PSTN to PSTN, if not
explicitely forwarded
else if(uri =~ "^sip:[0-9]+@")
{
# only route numeric users to PSTN
if(!load_gws())
{
xlog("L_ERR", "Error loading PSTN
gateways
- M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("503", "PSTN Termination
Currently Unavailable");
exit;
}
if(!next_gw())
{
xlog("L_ERR", "No PSTN gateways available
-
M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
sl_send_reply("503", "PSTN Termination
Currently Unavailable");
exit;
}
setflag(21);
t_on_failure("1");
route(8);
}
}
xlog("L_INFO", "Call to unknown user - M=$rm RURI=$ru F=$fu T=$tu
IP=$si ID=$ci\n");
sl_send_reply("404", "User Not Found");
exit;
}
########################################################################
# Request route 'base-route-local'
########################################################################
route[13]
{
t_on_reply("1");
if(t_check_trans())
{
xlog("L_INFO", "Request leaving server - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
}
else
{
xlog("L_INFO", "Dropping mis-routed request - M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
exit;
}
if(!t_relay())
{
sl_reply_error();
}
exit;
}
########################################################################
# Request route 'base-route-generic'
########################################################################
route[14]
{
xlog("L_INFO", "Method not supported - M=$rm RURI=$ru F=$fu T=$tu
IP=$si ID=$ci\n");
sl_send_reply("501", "Method Not Supported Here");
exit;
}
########################################################################
# Request route 'base-filter-failover'
########################################################################
route[15]
{
if(!t_check_status("408|500|503"))
{
xlog("L_INFO", "No failover routing needed for this
response code - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(6);
exit;
}
}
########################################################################
#Send the call out
########################################################################
route[16]
{
#send the call outward
if(method=="INVITE" && !isflagset(10))
{
t_on_failure("2");
}
if (!t_relay())
{
xlog("L_WARN", "ERROR: t_relay failed");
sl_reply_error();
}
}
########################################################################
# Request route 'Voicemail and Asterisk for further processing'
########################################################################
failure_route[3]
{
if(!t_was_cancelled())
{
revert_uri();
rewritehostport("voicemailserver.testpbx.com:5060");
append_branch();
#PREVENT SOME CRAZY VOICEMAIL LOOP
xlog("L_INFO", "No Answer Sending the call to Voicemail
-
M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
setflag(10);
route(8);
}
}
########################################################################
# Reply route 'base-standard-reply'
########################################################################
onreply_route[1]
{
xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si
ID=$ci\n");
if (nat_uac_test("1"))
{
fix_nated_contact();
}
exit;
}
########################################################################
# Reply route 'base-nat-reply'
########################################################################
onreply_route[2]
{
xlog("L_INFO", "NAT-Reply - S=$rs D=$rr F=$fu T=$tu IP=$si
ID=$ci\n");
if(nat_uac_test("1"))
{
fix_nated_contact();
xlog("L_INFO", "NAT-Reply==[Fix_nated_contact] - S=$rs
D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
}
if(isbflagset(6) && status=~"(180)|(183)|2[0-9][0-9]")
{
if(!search("^Content-Length:[ ]*0"))
{
use_media_proxy();
xlog("L_INFO", "NAT-Reply==[Force Rtp proxy] -
S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci\n");
}
}
exit;
}
########################################################################
# Failure route 'pstn-failover'
########################################################################
failure_route[1]
{
xlog("L_INFO", "Failure route for PSTN entered - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
route(15);
if(!next_gw())
{
xlog("L_ERR", "Failed to select next PSTN gateway - M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
route(6);
exit;
}
t_on_failure("3");
route(8);
}
########################################################################
# Failure route 'base-standard-failure'
########################################################################
failure_route[2]
{
if(!t_was_cancelled())
{
revert_uri();
route(10);
}
if(t_check_status("422|481|487"))
{
xlog("L_INFO", "Final reply - M=$rm RURI=$ru F=$fu T=$tu
IP=$si ID=$ci\n");
route(6);
exit;
}
t_on_branch("1");
xlog("L_INFO", "Redirect from UAC intercepted - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
route(10);
if($avp(s:cfc) != NULL)
{
avp_pushto("$ru", "$avp(s:cfc)");
setflag(29);
append_branch();
t_on_branch("1");
xlog("L_INFO", "CFC detected - M=$rm RURI=$ru F=$fu T=$tu
IP=$si ID=$ci\n");
route(10);
}
route(15);
route(6);
}
########################################################################
# Branch route 'cfc-drop-local'
########################################################################
branch_route[1]
{
if(is_domain_local("$rd"))
{
xlog("L_INFO", "Dropping local branch - M=$rm RURI=$ru
F=$fu T=$tu IP=$si ID=$ci\n");
drop();
}
}
--
Regards,
Chandrakant Solanki
Hi Daniel
I have uploaded my config file but it's need admin approval..
--
Regards,
Chandrakant Solanki