[OpenSIPS-Users] registrant example

Alberto alberto.rinaudo at gmail.com
Sun Sep 22 00:10:50 UTC 2024


Hi,

I'm trying to put together a simple script to use uac_registrant
So I have:
LEFT SIP SERVERS <-[ip authentication]-> OPENSIPS <-[uac_registrant]->
REMOTE SIP PROVIDER

Here's the 2 problems I still have:
I have the users for the remote sip provider in the registrant table, and
opensips is already able to register to this remote sip provider,but:
- When an INVITE comes from the remote sip provider I register to, how do I
validate which user is it related to? Where should I store avp, and how
should I load them?
- When an INVITE comes from the left sip servers and I have to call the
remote sip provider, how do I load the credentials from the database to
authenticate the INVITE to the remote sip provider?

I'm using the address table for the left sip servers and check_address, but
I've stripped all that from my example below.
I hope this makes sense, thank you.

Here is a short example script I'm working with

#######
debug_mode=no

log_level=2
xlog_level=2
log_stdout=yes
stderror_enabled=yes
syslog_facility=LOG_LOCAL0

auto_aliases=no

server_signature=yes

socket=udp:0.0.0.0:5060

mpath="/usr/lib64/opensips/modules/"

loadmodule "db_mysql.so"

loadmodule "signaling.so"

loadmodule "sl.so"

loadmodule "tm.so"
modparam("tm", "auto_100trying", 0)
modparam("tm", "fr_inv_timeout", 120)
modparam("tm", "fr_timeout", 30)
modparam("tm", "onreply_avp_mode", 1)
modparam("tm", "restart_fr_on_each_reply", 0)

loadmodule "rr.so"
modparam("rr", "append_fromtag", 1)

loadmodule "dialog.so"
modparam("dialog", "default_timeout", 14400)
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "enable_stats", 1)
modparam("dialog", "profiles_with_value", "caller")

loadmodule "sipmsgops.so"

loadmodule "usrloc.so"

loadmodule "registrar.so"

loadmodule "uac_auth.so"
modparam("uac_auth", "credential", "username:domain:password")

loadmodule "uac_registrant.so"
modparam("uac_registrant", "db_url", "mysql://opensips:opensipsrw@localhost
/opensips")

loadmodule "proto_udp.so"

route {
  if (has_totag()) {
    if (loose_route()) {
      if ($DLG_status != NULL && !validate_dialog()) {
        exit;
      }
    } else {
      if (is_method("ACK")) {
        if (t_check_trans()) {
          t_relay();
        }
        exit;
      }

      sl_send_reply(404, "Not Found");
      exit;
    }

    t_relay();

    exit;
  }

  if (is_method("CANCEL")) {
    if (t_check_trans()) {
      t_relay();
    }
    exit;
  }

  t_check_trans();

  if (is_method("INVITE")) {
    if (!create_dialog("B")) {
      sl_send_reply(500, "Internal Server Error");
      exit;
    }
  }

  route(relay);
}

route[relay] {
  if (is_method("INVITE")) {
    # VALIDATE THIS RELATES TO A USER IN THE UAC_REGISTRANT TABLE AND LOAD
AVPS
    # OR LOAD CREDENTIALS TO SEND INVITE ONWARD TO THE REMOTE SIP PROVIDER

    t_on_failure("invite_failure_route");
  }

  if (!t_relay()) {
    sl_send_reply(500, "Internal Error");
  }

  exit;
}

failure_route[invite_failure_route] {
  if (t_was_cancelled()) {
    exit;
  }

  if (t_check_status("3[0-9][0-9]")) {
    t_reply(404, "Not found");
    exit;
  }
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20240922/7f0e7c2e/attachment.html>


More information about the Users mailing list