<div dir="ltr"><div><div><div><div>> <span class="im"></span>sorry, i thought you use registrar/usrloc modules<br></div>Well, I do use them - so if you could explain in which table does Kamailio write the user's proto and which flags I can use - I'll make a test to see which scheme is preferable :)   <span id="result_box" class="" lang="en"><span class=""><br><br></span></span></div><span id="result_box" class="" lang="en"><span class="">So, about script:<br><br></span></span></div><span id="result_box" class="" lang="en"><span class="">1.) Write to redis<br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">Please read <a href="http://kamailio.org/docs/modules/4.3.x/modules/ndb_redis.html">http://kamailio.org/docs/modules/4.3.x/modules/ndb_redis.html</a> this guide to understand how to connect redis to Kamailio<br></span></span></div><span id="result_box" class="" lang="en"><span class="">It route[AUTH] you shall add write to redis command:<br></span></span><br><pre class=""><div class="" id="file-kamailio-cfg-LC600">    if (is_method(<span class=""><span class="">"</span>REGISTER<span class="">"</span></span>) || <span class="">from_uri</span>==myself)
</div><div class="" id="file-kamailio-cfg-LC601">       {
</div><div class="" id="file-kamailio-cfg-LC602">               <span class=""># authenticate requests</span>
</div><div class="" id="file-kamailio-cfg-LC605"><span class=""><span class=""></span><span class=""></span></span><span class=""><span class=""></span><span class=""></span></span><span class=""><span class=""></span><span class=""></span></span><span class=""></span>                <pre class="">                redis_cmd("protobase", "SET $fU $proto bar", "r"); # Here is the redis </pre>
</div><div class="" id="file-kamailio-cfg-LC607">               if (!auth_check(<span class=""><span class="">"</span>$fd<span class="">"</span></span>, <span class=""><span class="">"</span>subscriber<span class="">"</span></span>, <span class=""><span class="">"</span>1<span class="">"</span></span>)) {
<span class=""></span>
</div><div class="" id="file-kamailio-cfg-LC608">                       auth_challenge(<span class=""><span class="">"</span>$fd<span class="">"</span></span>, <span class=""><span class="">"</span>0<span class="">"</span></span>)<span class="">;</span>
</div><div class="" id="file-kamailio-cfg-LC609">                       exit<span class="">;</span>
</div><div class="" id="file-kamailio-cfg-LC610">               }
</div><div class="" id="file-kamailio-cfg-LC611">               <span class=""># user authenticated - remove auth header</span>
</div><div class="" id="file-kamailio-cfg-LC612">               if(!is_method(<span class=""><span class="">"</span>REGISTER|PUBLISH<span class="">"</span></span>))
</div><div class="" id="file-kamailio-cfg-LC613">                       consume_credentials()<span class="">;</span>
</div><div class="" id="file-kamailio-cfg-LC614">       }
</div></pre><div><div><div><span id="result_box" class="" lang="en"><span class="">You can find information about pseudo-variables on this <a href="http://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariables">http://www.kamailio.org/wiki/cookbooks/4.0.x/pseudovariables</a> page<br><br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">2. Rtpengine algorithm<br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">First of all, look through <a href="https://github.com/sipwise/rtpengine">https://github.com/sipwise/rtpengine</a> and <a href="http://kamailio.org/docs/modules/4.3.x/modules/rtpengine.html">http://kamailio.org/docs/modules/4.3.x/modules/rtpengine.html</a> to understand what's the difference between rtpengine and rtpproxy<br></span></span></div><div><span id="result_box" class="" lang="en"><span class="">In your NATMANAGE route change </span></span><span id="result_box" class="" lang="en"><span class="">rtpproxy_manage(); or rtpengine_manage(); string to this:<br></span></span></div><div><span id="result_box" class="" lang="en"><span class=""><br>    if(ds_is_from_list())<br>    {<br>        xlog("L_NOTICE","====== selecting $tU proto\n");<br>        redis_cmd("protobase", "GET $tU", "uproto");<br>             xlog("L_NOTICE","===== $tU has proto $redis(uproto=>value)\n");<br>        if ($redis(uproto=>value)=="ws")<br>        { <br>             xlog("L_NOTICE","===== $tU is a websocket user\n");<br>        rtpengine_manage("direction=internal direction=external force trust-address replace-origin replace-session-connection ICE=force RTP/SAVPF");<br>        }<br>        else<br>        {<br>        xlog("L_NOTICE","===== $tU is classy user\n");<br>        rtpengine_manage("direction=internal direction=external force trust-address replace-origin replace-session-connection");<br>        }<br>    } else {<br>        xlog("L_NOTICE","====== $fU proto is $proto ");<br>              if ($proto=="ws")<br>        {<br>            xlog("L_NOTICE","===== $fU is websocket user\n");<br>            rtpengine_manage("direction=external direction=internal force trust-address replace-origin replace-session-connection ICE=force RTP/AVP");<br>        }<br>        else<br>        {<br>            xlog("L_NOTICE","===== $fU is a classy user");<br>            rtpengine_manage("direction=external direction=internal replace-origin replace-session-connection force trust-address RTP/AVP");<br>        }<br>        <br>    }<br><br></span></span></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-14 22:24 GMT+03:00 Juha Heinanen <span dir="ltr"><<a href="mailto:jh@tutpro.com" target="_blank">jh@tutpro.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Alexandru Covalschi writes:<br>
<br>
> > you don't need a database for that.  you can use location table flags<br>
> Can you please describe how to do that? I chosen redis because I need to<br>
> figure out the proto of the leg_b (called) user pretty fast - mysql is much<br>
> slower.<br>
<br>
</span>sorry, i thought you use registrar/usrloc modules.<br>
<div class="HOEnZb"><div class="h5"><br>
-- juha<br>
<br>
_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list<br>
<a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">Alexandru Covalschi<br>ABRISS-Solutions<div>VoIP engineer and system administrator<br>phone: +37367398493<br>web: <a href="http://abs-telecom.com/" target="_blank">http://abs-telecom.com/</a></div></div></div>
</div>