<hr>

<h4>You can merge this Pull Request by running</h4>
<pre>  git pull https://github.com/andrei-datcu/opensips fraud_detection</pre>
<p>Or view, comment on, or merge it at:</p>
<p>&nbsp;&nbsp;<a href='https://github.com/OpenSIPS/opensips/pull/350'>https://github.com/OpenSIPS/opensips/pull/350</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>[fraud_detection] HashMap created</li>
  <li>Added modparams</li>
  <li>[fraud_detection] DB loading working ok</li>
  <li>[fraud_detection] Backend is now functional</li>
  <li>Fraud detection - first version - untested yet</li>
  <li>Fixed user hashmap struct</li>
  <li>[fraud_detection] Added events for sync params</li>
  <li>[fraud_detection]Manually alloc event param list, to avoid automatic freeing and memory corruption</li>
  <li>[fraud_detection] Added show stats mi command</li>
  <li>[fraud_detection] Mi reload command fully working</li>
  <li>[fraud_detection] Added doc and schema</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-0">db/schema/fraud_detection.xml</a>
    (141)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-1">db/schema/opensips-fraud_detection.xml</a>
    (13)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-2">modules/fraud_detection/Makefile</a>
    (11)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-3">modules/fraud_detection/README</a>
    (448)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-4">modules/fraud_detection/doc/fraud_detection.xml</a>
    (38)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-5">modules/fraud_detection/doc/fraud_detection_admin.xml</a>
    (688)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-6">modules/fraud_detection/fraud_detection.c</a>
    (522)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-7">modules/fraud_detection/fraud_detection.h</a>
    (13)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-8">modules/fraud_detection/frd_events.c</a>
    (175)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-9">modules/fraud_detection/frd_events.h</a>
    (56)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-10">modules/fraud_detection/frd_hashmap.c</a>
    (87)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-11">modules/fraud_detection/frd_hashmap.h</a>
    (50)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-12">modules/fraud_detection/frd_load.c</a>
    (531)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-13">modules/fraud_detection/frd_load.h</a>
    (38)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-14">modules/fraud_detection/frd_stats.c</a>
    (150)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-15">modules/fraud_detection/frd_stats.h</a>
    (71)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-16">scripts/db_berkeley/opensips/fraud_detection</a>
    (12)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-17">scripts/dbtext/opensips/fraud_detection</a>
    (2)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-18">scripts/mysql/fraud_detection-create.sql</a>
    (20)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-19">scripts/oracle/fraud_detection-create.sql</a>
    (28)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-20">scripts/pi_http/fraud_detection-mod</a>
    (77)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-21">scripts/pi_http/fraud_detection-table</a>
    (21)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/OpenSIPS/opensips/pull/350/files#diff-22">scripts/postgres/fraud_detection-create.sql</a>
    (21)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/OpenSIPS/opensips/pull/350.patch'>https://github.com/OpenSIPS/opensips/pull/350.patch</a></li>
  <li><a href='https://github.com/OpenSIPS/opensips/pull/350.diff'>https://github.com/OpenSIPS/opensips/pull/350.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br>Reply to this email directly or <a href="https://github.com/OpenSIPS/opensips/pull/350">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/5479561__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcyODMxNDY4NCwiZGF0YSI6eyJpZCI6NDUwMzk5NTh9fQ==--f29445b98cb444cd0bfee334b1bc8d0b9c7c89e1.gif" width="1" /></p>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"View this Pull Request on GitHub","action":{"@type":"ViewAction","url":"https://github.com/OpenSIPS/opensips/pull/350","name":"View Pull Request"}}</script>