Hi Juan<br>Its not a horrible solution, actually we are using both, Opensips and Asterisk (with a2billing AGI) in a heavy production environment for pre/post wholesale billing and I can control almost everything from a2billing admin interface.<br>
<br>Try this procedure:<br><br>You can use a mysql VIEW for &#39;opensips subscriber table&#39; from &#39;a2billing user table&#39; to facilitate opensips users provisioning from a2billing admin/user web interfaces.<br><br>
For example, Sip proxy Opensips IP: 192.1689.12.254<br>DB: 192.168.1.29<br>A2billing DB: a2billing<br>A2billing subscriber table: cc_card<br><br>In mysql console:<br><br>USE opensips;<br><br>CREATE VIEW opensips.subscriber_v1 AS <br>
SELECT id AS id, <br>useralias AS username, <br>&#39;192.168.12.254&#39; AS domain, <br>userpass AS password, <br>email AS email_address, <br>md5(concat(useralias,&#39; : &#39;,&#39;192.168.12.254&#39;,&#39; : &#39;,userpass)) AS ha1, <br>
md5(concat(useralias,&#39;@&#39;,&#39;192.168.12.254&#39;,&#39; : &#39;,&#39;192.168.12.254&#39;,&#39; : &#39;,userpass)) AS ha1b, <br>useralias AS rpid from a2billing.cc_card WHERE tariff=2;<br><br>INSERT INTO version (table_name,table_version) VALUES (&#39;subscriber_v1&#39;,&#39;6&#39;);<br>
<br><br>Then in your opensips config file note that you have to indicate the new table &#39;subscriber_v1&#39; as follows:<br><br>.<br>.<br>.<br># Tablas &#39;uri&#39; y tabla &#39;subscriber&#39; <br>loadmodule &quot;uri_db.so&quot;<br>
modparam(&quot;uri_db&quot;, &quot;db_url&quot;, &quot;mysql://opensips:******@<a href="http://192.168.1.29/opensips">192.168.1.29/opensips</a>&quot;)<br>modparam(&quot;uri_db&quot;, &quot;db_table&quot;, &quot;subscriber_v1&quot;)<br>
.<br>...<br>########################################################################<br># Request route &#39;base-route-REGISTER&#39;<br>########################################################################<br>route[2]<br>
{<br>&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br>&nbsp;&nbsp;&nbsp; if(!www_authorize(&quot;&quot;, &quot;subscriber_v1&quot;)) <br>&nbsp;&nbsp;&nbsp; # Nota: tabla &#39;subscriber_v1&#39; es un VIEW de mya2billing.cc_card<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # xlog(&quot;L_INFO&quot;, &quot;Register authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci UA=$ua \n&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;Register authentication failed - F=$fu IP=$si UA=$ua \n&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; www_challenge(&quot;&quot;, &quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if(!check_to()) ...<br>.<br>.<br>
.<br>#########################################################################<br># Request route &#39;base-route-INVITE&#39;<br>#########################################################################<br>route[4]<br>{<br>
&nbsp;&nbsp;&nbsp; log(1,&quot; route[4]---&gt; INVITE Message Handler \n&quot;);<br>&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br>&nbsp;&nbsp;&nbsp; if(from_gw())&nbsp; ## verifica si la llamada viene de alguno de los GWs, tabla &#39;lcr&#39;<br>
&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;Call from PSTN - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(23);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(allow_trusted())&nbsp; ## Si la llamada no viene del GW, verifica si el ip de origen esta en la tabla &#39;trusted&#39;<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;Call from trusted peer - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!is_domain_local(&quot;$rd&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;Rejecting peering attempt with non-local request domain - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply(&quot;403&quot;, &quot;Relaying Denied&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(23);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else ## =&gt; Si no viene del GW o de algun UA en &#39;trusted&#39; entonces la llamada se origina en el sip server y debe autenticarse:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!proxy_authorize(&quot;&quot;, &quot;subscriber_v1&quot;)) <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_INFO&quot;, &quot;Proxy authentication failed - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci UA=$ua \n\n&quot;);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_challenge(&quot;&quot;, &quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!check_from())<br>.<br>.<br>.<br><br>Good luck!<br>Rafael<br><br>PS: I also want to know why some people think its a horrible solution... I think its the best.<br>
<br><br><div class="gmail_quote">On Tue, Feb 10, 2009 at 10:21 AM, Juan Asencio <span dir="ltr">&lt;<a href="mailto:juan@asencio.dk">juan@asencio.dk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Raúl and list,<br>
<br>
Could anyone explain a little bit, why the OpenSIPS+Asterisk+A2Billing<br>
would be a horrible solution?<br>
<br>
I&#39;m new at this and I would like to learn and understand what kind of<br>
problems could arise from such a solution.<br>
<br>
Regards,<br>
<font color="#888888"><br>
Juan.-<br>
</font><div><div></div><div class="Wj3C7c"><br>
&gt; El Lunes, 9 de Febrero de 2009 18:41, Gonzalo Gonzalez escribió:<br>
&gt;&gt; May be I am not explaining myself right, but read this post:<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://forum.asterisk2billing.org/viewtopic.php?t=2456" target="_blank">http://forum.asterisk2billing.org/viewtopic.php?t=2456</a><br>
&gt;&gt;<br>
&gt;&gt; I know people use the same database using database views.<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt;<br>
&gt;&gt; Gonzalo<br>
&gt;<br>
&gt; Please, reply to the list, not to me directly.<br>
&gt;<br>
&gt; Talking about the issue .. that thread only said that you could use the<br>
&gt; same<br>
&gt; DB throught views to have the same users on OpenSIPS and on Asterisk,<br>
&gt; anything more.<br>
&gt;<br>
&gt; You could not do accounting/billing only with OpenSIPS and A2Billing,<br>
&gt; that&#39;s<br>
&gt; what I told you, you need OpenSIPS+Asterisk+A2Billing and IHMO that&#39;s a<br>
&gt; horrible solution, with lot of problems on you future.<br>
&gt;<br>
&gt; Regards<br>
&gt; --<br>
&gt; Raúl Alexis Betancor Santana<br>
&gt; Dimensión Virtual<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>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
</div></div></blockquote></div><br>