<div class="gmail_quote"><div>Hi Bogdan,</div><div><br></div><div>Thanks for your suggestion, few things I want to ask from you;</div><div><br></div><div>1- Can I use rewritehostport(); function instead of $rd=&#39;11.22.33.44&#39; and append it to t_relay()? Like;</div>
<div><div><br></div><div>setflag(2);</div><div>rewritehostport(&quot;<a href="http://203.215.179.34:5060">203.215.179.34:5060</a>&quot;);</div><div>t_relay();</div><div>route(1);</div><div>exit;</div><div><br></div></div>
<div>2- When using check_source_address() function of permissions module, I&#39;m facing weird problem. On machine A I&#39;ve installed OpenSIPS ver 1.6.1 svn one, I used this function to permitted certain source IPs as I listed in address table. On machine B (currently working on it using Radius) I&#39;ve installed same version of OpenSIPS as on machine A, when I call its check_source_address() function in INVITE section, it is working as it worked on machine A. Machine A settings are listed below;</div>
<div><br></div><div><br></div><div><div>if(is_method(&quot;INVITE&quot;) &amp;&amp; check_source_address(&quot;0&quot;))</div><div>{</div><div>       log(&quot;#################### CHECK SOURCE ADDRESS ######################&quot;);</div>
<div>       route(1);</div><div>       setflag(1);</div><div>}</div><div><br></div><div><br></div><div>Machine B description I&#39;m mentioning below;</div><div><br></div><div>2-1- If user registered him/her self on SIP phone their source IP not going to be checked, and make calls to each other.</div>
<div>2-2- If user A is on GW calls user B who is located and Registered on  OpenSIPS, user A GW&#39;s source IP must be checked by OpenSIPs, if the IP exists on address table, call is permitted if not deny the call.</div>
<div><br></div><div>Problems;</div><div><br></div><div>When I user A and user B registered on OpenSIPs (using Radius) they can call each other, but if a user A calling from GW to user B who is registered on OpenSIPs, calls is made even the address is not listed on address table. And also in logs I see that that permissions module shows that it doesn&#39;t find any IP enlisted in its hash table, but still permitting it. The configuration of machine B is listed below;</div>
<div><br></div><div><div><div># main request routing logic</div><div><br></div><div>route{</div><div><br></div><div>        if (!mf_process_maxfwd_header(&quot;10&quot;)) {</div><div>                sl_send_reply(&quot;483&quot;,&quot;Too Many Hops&quot;);</div>
<div>                exit;</div><div>        }</div><div><br></div><div>        if (has_totag()) {</div><div>                if (loose_route()) {</div><div>                        if (is_method(&quot;BYE&quot;)) {</div><div>
                                setflag(1); # do accounting ...</div><div>                                setflag(3); # ... even if the transaction fails</div><div>                        } else if (is_method(&quot;INVITE&quot;)) {</div>
<div>                                record_route();</div><div>                        }</div><div>                        route(1);</div><div>                } else {</div><div>                        if ( is_method(&quot;ACK&quot;) ) {</div>
<div>                                if ( t_check_trans() ) {</div><div>                                        # non loose-route, but stateful ACK; must be an ACK after</div><div>                                        # a 487 or e.g. 404 from upstream server</div>
<div>                                        t_relay();</div><div>                                        exit;</div><div>                                } else {</div><div>                                        # ACK without matching transaction -&gt;</div>
<div>                                        # ignore and discard</div><div>                                        exit;</div><div>                                }</div><div>                        }</div><div>                        sl_send_reply(&quot;404&quot;,&quot;Not here&quot;);</div>
<div>                }</div><div>                exit;</div><div>        }</div><div><br></div></div><div>        #initial requests</div><div><br></div><div>        # CANCEL processing</div><div>        if (is_method(&quot;CANCEL&quot;))</div>
<div>        {</div><div>                if (t_check_trans())</div><div>                        t_relay();</div><div>                exit;</div><div>        }</div><div><br></div><div>        t_check_trans();</div><div><br>
</div><div>         # preloaded route checking</div><div>        if (loose_route()) {</div><div>                xlog(&quot;L_ERR&quot;,</div><div>                &quot;Attempt to route with preloaded Route&#39;s [$fu/$tu/$ru/$ci]&quot;);</div>
<div>                if (!is_method(&quot;ACK&quot;))</div><div>                        sl_send_reply(&quot;403&quot;,&quot;Preload Route denied&quot;);</div><div>                exit;</div><div>        }</div><div><br></div>
<div>        # record routing</div><div>        if (!is_method(&quot;REGISTER|MESSAGE&quot;))</div><div>                record_route();</div><div><br></div></div><div><div><br></div><div>        # account only INVITEs</div>
<div>        if (is_method(&quot;INVITE&quot;) &amp;&amp; check_source_address(&quot;0&quot;)){</div><div>                log(&quot;#################### INVITE CASE 1 ####################&quot;);</div><div>                setflag(1); # do accounting</div>
<div>        }</div><div><div>        if (!uri==myself)</div><div>        ## replace with following line if multi-domain support is used</div><div>        ##if (!is_uri_host_local())</div><div>        {</div><div>                append_hf(&quot;P-hint: outbound\r\n&quot;);</div>
<div>                # if you have some interdomain connections via TLS</div><div>                ##if($rd==&quot;<a href="http://tls_domain1.net">tls_domain1.net</a>&quot;) {</div><div>                ##      t_relay(&quot;tls:<a href="http://domain1.net">domain1.net</a>&quot;);</div>
<div>                ##      exit;</div><div>                ##} else if($rd==&quot;<a href="http://tls_domain2.net">tls_domain2.net</a>&quot;) {</div><div>                ##      t_relay(&quot;tls:<a href="http://domain2.net">domain2.net</a>&quot;);</div>
<div>                ##      exit;</div><div>                ##}</div><div>                route(1);</div><div>        }</div><div><br></div><div>        # requests for my domain</div><div><br></div><div>        ## uncomment this if you want to enable presence server</div>
<div>        ##   and comment the next &#39;if&#39; block</div><div>        ##   NOTE: uncomment also the definition of route[2] from  below</div><div>        ##if( is_method(&quot;PUBLISH|SUBSCRIBE&quot;))</div><div>        ##              route(2);</div>
<div><br></div><div>        if (is_method(&quot;PUBLISH&quot;))</div><div>        {</div><div>                sl_send_reply(&quot;503&quot;, &quot;Service Unavailable&quot;);</div><div>                exit;</div><div>        }</div>
<div><div>        if (is_method(&quot;REGISTER&quot;))</div><div>        {</div><div>                route(2);</div><div>        }</div><div><br></div><div>        if ($rU==NULL) {</div><div>                # request with no Username in RURI</div>
<div>                sl_send_reply(&quot;484&quot;,&quot;Address Incomplete&quot;);</div><div>                exit;</div><div>        }</div><div><br></div><div>        # apply DB based aliases (uncomment to enable)</div>
<div>        ##alias_db_lookup(&quot;dbaliases&quot;);</div><div><br></div><div>        # do lookup with method filtering</div><div>        if (!lookup(&quot;location&quot;,&quot;m&quot;)) {</div><div>                switch ($retcode) {</div>
<div>                        case -1:</div><div>                                log(&quot;############# LOOKUP LOCATION FLAG -1 PASS ###############&quot;);</div><div>                                setflag(2);</div><div>
                                rewritehostport(&quot;<a href="http://11.22.33.44:5060">11.22.33.44:5060</a>&quot;);</div><div>                                log(&quot;############### CALL ROUTING TO ROUTE 1 ###################&quot;);</div>
<div>                                route(1);</div><div>                                exit;</div><div>                        case -3:</div><div>                                 log(&quot;############# LOOKUP LOCATION FLAG -3 PASS ###############&quot;);</div>
<div>                                t_newtran();</div><div>                                t_reply(&quot;404&quot;, &quot;Not Found&quot;);</div><div>                                exit;</div><div>                        case -2:</div>
<div>                                 log(&quot;############# LOOKUP LOCATION FLAG -2 PASS ###############&quot;);</div><div>                                sl_send_reply(&quot;405&quot;, &quot;Method Not Allowed&quot;);</div>
<div>                                exit;</div><div>                }</div><div>        }</div><div><br></div><div>        # when routing via usrloc, log the missed calls also</div><div>        setflag(2);</div><div><br>
</div><div>        log(&quot;############ LOOKUP LOCATION FLAG 1 PASS ################&quot;);</div><div>        route(1);</div><div>}</div><div><br></div><div><div>route[1] {</div><div>        # for INVITEs enable some additional helper routes</div>
<div>        #if (is_method(&quot;INVITE&quot;) &amp;&amp; check_source_address(&quot;0&quot;)) {</div><div>        if (is_method(&quot;INVITE&quot;)) {</div><div>                log(&quot;####################INVITE ROUTE 1 Function####################&quot;);</div>
<div>                t_on_branch(&quot;2&quot;);</div><div>                t_on_reply(&quot;2&quot;);</div><div>                t_on_failure(&quot;1&quot;);</div><div>                #ds_select_dst(&quot;1&quot;,&quot;4&quot;);</div>
<div>                #forward();</div><div>        }</div><div><br></div><div>        if (!t_relay()) {</div><div>                sl_reply_error();</div><div>        };</div><div>        exit;</div><div>}</div><div><br></div>
<div><div>route[2]</div><div>{</div><div><br></div><div><br></div><div>        log(&quot;############## AAA-REGISTRATION #################&quot;);</div><div>        if (!aaa_www_authorize(&quot;<a href="http://rose.abc.com">rose.abc.com</a>&quot;))</div>
<div>        {</div><div>                www_challenge(&quot;<a href="http://rose.abc.com">rose.abc.com</a>&quot;, &quot;1&quot;);</div><div>                 return;</div><div>        }</div><div><br></div><div>        if (!save(&quot;location&quot;))</div>
<div>                sl_reply_error();</div><div><br></div><div>        exit;</div><div>}</div><div><div>branch_route[2] {</div><div>        xlog(&quot;new branch at $ru\n&quot;);</div><div>}</div><div><br></div><div><br>
</div><div>onreply_route[2] {</div><div>        xlog(&quot;incoming reply\n&quot;);</div><div>}</div><div><br></div><div><br></div><div>failure_route[1] {</div><div>        if (t_was_cancelled()) {</div><div>                exit;</div>
<div>        }</div><div><br></div><div>}</div><div><br></div><div><br></div><div>Kindly assist me, how can I permit or deny user from source IP ? Because on machine A, check_source_address() function is working perfectly but I haven&#39;t integrated FreeRadius with OpenSIPs. Please sort out my problem as your earliest.</div>
</div></div></div></div></div></div></div><div><br></div><div> </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Date: Thu, 18 Mar 2010 18:38:29 +0200<br>
From: Bogdan-Andrei Iancu &lt;<a href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a>&gt;<br>
Subject: Re: [OpenSIPS-Users] Check Live Peers on OpenSIPS<br>
To: OpenSIPS users mailling list &lt;<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>&gt;<br>
Message-ID: &lt;<a href="mailto:4BA25705.10506@voice-system.ro">4BA25705.10506@voice-system.ro</a>&gt;<br>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
<br>
Hi Ahmed,<br>
<br>
Ahmed Munir wrote:<br>
&gt; Hi Bogdan,<br>
&gt;<br>
&gt; Thanks for reply. I forgot to mention earlier that for I&#39;m using<br>
&gt; OpenSIPS + FreeRadius, where radius is doing accounting and<br>
&gt; authentication. I used aaa_does_uri_exist() function as well, but<br>
&gt; seems not working or making mistake while implementing it. On other<br>
&gt; hand using lookup(&quot;location&quot;,m) function, on retcode = -1, I<br>
&gt; redirected the INVITE to GW, using Dispatcher.  But though thanks for<br>
&gt; your suggestion and I&#39;ll consider it.<br>
&gt;<br>
&gt; Few things I want to ask you, as I listed below;<br>
&gt; 1-How can I forward SIP INVITE request to other SIP machine in state<br>
&gt; full manner ?<br>
simply do:<br>
    # set new destination in RURI<br>
    $rd= &quot;11.22.33.44&quot;;<br>
    # send it out in stateful mode<br>
    t_relay();<br>
    exit;<br>
<br>
&gt; 2- While accounting using radius, when user A (registered on OpenSIPS)<br>
&gt; calls the user B who is located at GW side, accounting doesn&#39;t take<br>
&gt; place.  On the other hand when user B (from GW) calls user A (to<br>
&gt; OpenSIPS), accounting take place. I want to know its cause? Because I<br>
&gt; want its accounting on both sides.<br>
take care and check where you set in script the acc flag - maybe you are<br>
setting it only if lookup is successful.<br>
<br>
Regards,<br>
Bogdan<br>
&gt;<br>
&gt; Kindly advise me at your earliest.<br>
&gt;<br>
&gt;<br>
&gt;     ------------------------------<br>
&gt;<br>
&gt;     Message: 6<br>
&gt;     Date: Thu, 18 Mar 2010 10:23:27 +0200<br>
&gt;     From: Bogdan-Andrei Iancu &lt;<a href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a><br>
&gt;     &lt;mailto:<a href="mailto:bogdan@voice-system.ro">bogdan@voice-system.ro</a>&gt;&gt;<br>
&gt;     Subject: Re: [OpenSIPS-Users] Check Live Peers on OpenSIPS<br>
&gt;     To: OpenSIPS users mailling list &lt;<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a><br>
&gt;     &lt;mailto:<a href="mailto:users@lists.opensips.org">users@lists.opensips.org</a>&gt;&gt;<br>
&gt;     Message-ID: &lt;<a href="mailto:4BA1E2FF.3060702@voice-system.ro">4BA1E2FF.3060702@voice-system.ro</a><br>
&gt;     &lt;mailto:<a href="mailto:4BA1E2FF.3060702@voice-system.ro">4BA1E2FF.3060702@voice-system.ro</a>&gt;&gt;<br>
&gt;     Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br>
&gt;<br>
&gt;     Hi Ahmed,<br>
&gt;<br>
&gt;     if the destination number (called number) is not a local subscriber (a<br>
&gt;     SIP user), you simply route the call to a PSTN GW (you do this<br>
&gt;     re-route<br>
&gt;     from the script)<br>
&gt;<br>
&gt;     To check if a user is a local subscriber, you can either check a<br>
&gt;     pattern<br>
&gt;     (like all my local users are alphanumeric, or all starts with 3345*,<br>
&gt;     etc), either simply check if the user does exists in the subscriber<br>
&gt;     table (see the URI module, the db_does_uri_exists() function:<br>
&gt;        <a href="http://www.opensips.org/html/docs/modules/1.6.x/uri.html#id271131" target="_blank">http://www.opensips.org/html/docs/modules/1.6.x/uri.html#id271131</a><br>
&gt;<br>
&gt;     Regards,<br>
&gt;     Bogdan<br>
&gt;<br>
&gt;     Ahmed Munir wrote:<br>
&gt;     &gt; Hi,<br>
&gt;     &gt;<br>
&gt;     &gt; I want to know how can I check the peers of source and destination<br>
&gt;     &gt; phones? Like if both phones are located (registered) on one<br>
&gt;     &gt; UAS(OpenSIPS) can call SIP-SIP, if any one phone is registered<br>
&gt;     on UAS<br>
&gt;     &gt; and other is on PSTN, call will be re-routed to SIP-PSTN. In case of<br>
&gt;     &gt; SIP-SIP, lookup(&quot;location&quot;) function works and I need to know<br>
&gt;     how can<br>
&gt;     &gt; I forward call to SIP-PSTN ?<br>
&gt;     &gt;<br>
&gt;     &gt; Kindly advise me the method/ function can used for it.<br>
&gt;     &gt;<br>
&gt;     &gt; --<br>
&gt;     &gt; Regards,<br>
&gt;     &gt;<br>
&gt;     &gt; Ahmed Munir<br>
&gt;     &gt;<br>
&gt;     &gt;<br>
&gt;     &gt;<br>
&gt;     ------------------------------------------------------------------------<br>
&gt;     &gt;<br>
&gt;     &gt; _______________________________________________<br>
&gt;     &gt; Users mailing list<br>
&gt;     &gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a> &lt;mailto:<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>&gt;<br>
&gt;     &gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;     &gt;<br>
&gt;<br>
&gt;<br>
&gt;     --<br>
&gt;     Bogdan-Andrei Iancu<br>
&gt;     <a href="http://www.voice-system.ro" target="_blank">www.voice-system.ro</a> &lt;<a href="http://www.voice-system.ro" target="_blank">http://www.voice-system.ro</a>&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Regards,<br>
&gt;<br>
&gt; Ahmed Munir<br>
&gt;<br>
&gt;<br>
&gt; ------------------------------------------------------------------------<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Users mailing list<br>
&gt; <a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
&gt; <a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
&gt;<br>
<br>
<br>
--<br>
Bogdan-Andrei Iancu<br>
<a href="http://www.voice-system.ro" target="_blank">www.voice-system.ro</a><br>
<br>
<br>
<br>
<br></blockquote></div><br>-- <br>Regards,<br><br>Ahmed Munir<br><br><br>