한국어

소프트스위치

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유

   ◎위챗 : speedseoul


  
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


#The following is the complete route script. The general and module sections were comitted. The sections highlighted are the ones required for NAT traversal.
route{
 if (!mf_process_maxfwd_header("10")) {
 sl_send_reply("483","Too Many Hops");
 exit;
 }
 #---- NAT Detection ----#
 force_rport();
 if (nat_uac_test("18")) {
 if (method=="REGISTER")is_() {
 fix_nated_register();
 }
 else {
 fix_nated_contact();
 }
 setflag(5);
 }
 #---- Sequential requests section ----#
 if (has_totag()) {
 # sequential request withing a dialog should
 # take the path determined by record-routing
 if (loose_route()) {
 if (is_method("BYE")) {
 setflag(1); # do accounting
 setflag(3); # even if the transaction fails
 }
 else if (is_method("INVITE")) {
 record_route();
 }
 route(1);
 }
 else {
 if ( is_method("ACK") ) {
 if ( t_check_trans() ) {
 t_relay();
 exit;
 }
 else {
 exit;
 }

 }
 sl_send_reply("404","Not here");
 }
 exit;
}
 #---- initial requests section ----#
if (is_method("CANCEL")) {
 if (t_check_trans()) {
 t_relay();
 exit;
 }
 t_check_trans();
 if (!(method=="REGISTER")is_() && is_from_local()) {
 if(!allow_trusted()){
 if (!proxy_authorize("", "subscriber")) {
 proxy_challenge("", "0");
 exit;
 }
 if (!db_check_from()) {
 sl_send_reply("403","Forbidden auth ID");
 exit;
 }
 consume_credentials();
 # caller authenticated
 }
 }
 #---- preloaded route checking ----#
 if (loose_route()) {
 xlog("L_ERR","Attempt to route with preloaded Route's
 [$fu/$tu/$ru/$ci]");
 if (!is_method("ACK")) {
 sl_send_reply("403","Preload Route denied");
 exit;
 }
 }
 #---- record routing ----#
 if (!is_method("REGISTER|MESSAGE"))
 record_route();
 # account only INVITEs
 if (is_method("INVITE")) {
 setflag(1); # do accounting
 }

 #---- Routing to external domains ----#
 if (!is_uri_host_local())
 {
 append_hf("P-hint: outbound\r\n");
 if(is_uri_host_local()) {
 route(1);
 }
 else {
 sl_send_reply("403","Not here");
 }
 }
 if (is_method("PUBLISH"))
 {
 sl_send_reply("503", "Service Unavailable");
 exit;
 }
 if (is_method("REGISTER"))
 {
 # authenticate the REGISTER requests (uncomment to enable auth)
 if (!www_authorize("", "subscriber"))
 {
 www_challenge("", "0");
 exit;
 }
 if (!db_check_to())
 {
 sl_send_reply("403","Forbidden auth ID");
 exit;
 }
 #-- Request is behind NAT(flag5) save with bflag 6 -#
 #---- Use bflag 7 to start SIP pinging (Options) ---#
 if (isflagset(5)) {
 setbflag(6);
 setbflag(7);
 };
 if (!save("location")) {
 sl_reply_error();
 exit;
 }
 if ($rU==NULL) {
 # request with no Username in RURI
 sl_send_reply("484","Address Incomplete");


 exit;
 }
 # apply DB based aliases (uncomment to enable)
 alias_db_lookup("dbaliases");
 # Blind call forward
 if(avp_db_load("$ru","$avp(s:callfwd)")) {
 $ru = $avp(s:callfwd);
 #xlog("$avp(s:callfwd)");
 route(1);
 exit;
 }
 if($rU=~"^\*") {
 # Route to media servers
 route(5);
 route(1);
 }
 #Dial plan processing
 #xlog("$avp(s:country)");
 $var(sdpid)=$avp(s:country);
 $var(dpid)=$(var(sdpid){s.int});
 xlog("$var(dpid)");
 if(!dp_translate("$var(dpid)","$ruri.user/$ruri.user")){
 send_reply("420", "Invalid Destination");
 exit;
 }
 xlog("$avp(s:dest)");
 if ($avp(s:dest)=="usrloc") {
 #Route to usrloc
 route(3);
 }
 if ($avp(s:dest)=="local") {
 #route to pstn
 $var(v_pr)=$avp(s:country)+$avp(s:area);
 $ru="sip:"+$var(v_pr)+$rU+"@"+$rd;
 xlog("$ru");
 route(4);
 }
 if ($avp(s:dest)=="ld" || $avp(s:dest)=="int") {
 #route to pstn
 route(4);
 }
 if ($avp(s:dest)=="media") {
 #route to media server
 route(5);
 }
 send_reply("420", "Invalid Extension");

 exit;
}
route[1] {
 # for INVITEs enable some additional helper routes
 #---- Helper route, if nat=yes in the R-URI set flag 6 ----#
 #---- This is used to Process REINVITES ----#
 if (subst_uri('/(sip:.*);nat=yes/\1/')){
 setbflag(6);
 };
 #-- If caller(flag 5) or callee(flag 6) are behind NAT --#
 #-- Call the route(6) to force the use of the RTP Proxy --#
 if (isflagset(5)||isbflagset(6)) {
 route(6);
 };
 if (isflagset(5)){
 search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
 }
 if (is_method("INVITE")) {
 t_on_branch("2");
 t_on_reply("2");
 t_on_failure("1");
 }
 if (!t_relay()) {
 sl_reply_error();
 };
 exit;
}
#Route for user lookups
route[3]{
 if (!lookup("location", "m")) {
 switch ($retcode) {
 case -1:
 case -3:
 t_newtran();
 t_reply("404", "Not Found");
 exit;
 case -2:
 sl_send_reply("405", "Method Not Allowed");
 exit;
 }
 }
 # when routing via usrloc, log the missed calls also
 setflag(2);
 route(1);
}
route[4] {

 #---- PSTN route ----#
 if(!do_routing()){
 send_reply("503", "No rules found matching the URI prefix");
 exit;
 }
 #--- mark the transaction with flag 10 - route to pstn
 setflag(10);
 route(1);
}
route[5] {
 #---- Route to media servers ----#
 #xlog("route to media servers");
 rewritehostport("192.168.1.202:5062");
 route(1);
}
route[6] {
 #---- RTP Proxy handling ---#
 if (is_method("BYE|CANCEL")) {
 unforce_rtp_proxy();
 }
 else if (is_method("INVITE")){
 #---- Activates the RTP Proxy for the CALLEE ---#
 force_rtp_proxy();
 t_on_failure("1");
 };
}
branch_route[2] {
 xlog("new branch at $ru\n");
}
onreply_route[2] {
 #xlog("incoming reply\n");
 #---- Handling of the SDP for the 200 or 183 reply ----#
 #---- If behind nat (flags 5 or 6) start RTP Proxy ----#
 #---- Activates the RTP Proxy for the CALLER ----#
 if ((isflagset(5) || isbflagset(6)) && status=~"(183)|(2[0-9][0-
 9])"){
 force_rtp_proxy();
 append_hf("P-hint: onreply_route|force_rtp_proxy \r\n");
 }
 #---- If the CALLEE is behind NAT, fix the CONTACT HF ----#
 if (isbflagset(6)) {
 #-- Insert nat=yes at the end of the Contact header --#
 #-- This helps with REINVITEs, --#

 #- nat=yes will be included in the R-URI for seq.requests-#
 search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
 append_hf("P-hint: Onreply-route - fixcontact \r\n");
 fix_nated_contact();
 }
 exit;
}
failure_route[1] {
 #---- If a failure has ocurred, deactivate the RTP Proxy ----#
 if (isflagset(5) || isbflagset(6)){
 unforce_rtp_proxy();
 }
 if (t_was_cancelled()) {
 exit;
 }
 #- if the failure comes from a PSTN route, handle properly -#
 if(isflagset(10)){
 if (use_next_gw()) {
 xlog ("next gateway $ru \n");
 route(1);
 exit;
 }
 else {
 t_reply("503", "Service not available, no more gws");
 exit;
 }
 }
 # Redirect busy calls to a media server
 if (t_check_status("486")) {
 revert_uri();
 sethostport("192.168.1.202:5062");
 prefix("b");
 t_relay();
 }
 # Redirect unanswered calls to the media server
 if (t_check_status("480|408")) {
 revert_uri;
 sethostport("192.168.1.202:5062");
 prefix("u");
 t_relay();
 }
}

조회 수 :
4131
등록일 :
2017.12.10
14:24:20 (*.160.88.18)
엮인글 :
http://www.webs.co.kr/index.php?document_srl=3312389&act=trackback&key=e7b
게시글 주소 :
http://www.webs.co.kr/index.php?document_srl=3312389
List of Articles