[OpenSIPS-Users] Trouble getting mediaproxy to work (dialog module)
Jeff Pyle
jpyle at fidelityvoice.com
Fri Mar 20 14:41:17 CET 2009
Hi Bogdan,
Is there any reason that engage_media_proxy() has to run before
create_dialog()? If it's the other way around, engage_media_proxy() doesn't
do anything, even at the highest debug level.
- Jeff
On 3/20/09 8:30 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
> Hi,
>
> Do you get something like this at statup:
> engage_media_proxy() will not work because the dialog module is not
> loaded
>
> Regards,
> Bogdan
>
>
> slophoo wrote:
>> Opensips trace returns the following error to me:
>>
>> ERROR:mediaproxy:EngageMediaProxy: engage_media_proxy requires the dialog
>> module to be loaded and configured
>>
>> I have not needed the dialog module before, but have now loaded it and it
>> required one parameter, so I copied that from the example as well.
>>
>> loadmodule "dialog.so"
>> modparam("dialog", "dlg_flag",4)
>>
>> it seems to be loaded, but i still get the above error when making a call
>> and mediaproxy is not used. What am I missing?
>>
>> I'll post my entire opensips.cfg here in case it helps, maybe the issue is
>> the order in which i call engage_media_proxy. By the way, at the moment my
>> goal is to get ALL calls to use mediaproxy just to verify that it works.
>> Later I will work out the specific NAT situations where it is needed:
>>
>>
>>
>> #
>> # $Id: opensips.cfg 4423 2008-06-27 10:25:01Z henningw $
>> #
>> # OpenSIPS basic configuration script
>> # by Anca Vamanu <anca at voice-system.ro>
>> #
>> # Please refer to the Core CookBook at
>> http://www.opensips.org/dokuwiki/doku.php
>> # for a explanation of possible statements, functions and parameters.
>> # hhii
>>
>> ####### Global Parameters #########
>>
>> debug=3
>> log_stderror=no
>> log_facility=LOG_LOCAL0
>>
>> fork=yes
>> children=4
>>
>> /* uncomment the following lines to enable debugging */
>> debug=6
>> #fork=no
>> log_stderror=yes
>>
>> /* uncomment the next line to disable TCP (default on) */
>> #disable_tcp=yes
>>
>> /* uncomment the next line to enable the auto temporary blacklisting of
>> not available destinations (default disabled) */
>> #disable_dns_blacklist=no
>>
>> /* uncomment the next line to enable IPv6 lookup after IPv4 dns
>> lookup failures (default disabled) */
>> #dns_try_ipv6=yes
>>
>> /* uncomment the next line to disable the auto discovery of local aliases
>> based on revers DNS on IPs (default on) */
>> #auto_aliases=no
>>
>> /* uncomment the following lines to enable TLS support (default off) */
>> #disable_tls = no
>> #listen = tls:your_IP:5061
>> #tls_verify_server = 1
>> #tls_verify_client = 1
>> #tls_require_client_certificate = 0
>> #tls_method = TLSv1
>> #tls_certificate = "/usr/local/etc/opensips/tls/user/user-cert.pem"
>> #tls_private_key = "/usr/local/etc/opensips/tls/user/user-privkey.pem"
>> #tls_ca_list = "/usr/local/etc/opensips/tls/user/user-calist.pem"
>>
>>
>> port=5060
>>
>> /* uncomment and configure the following line if you want opensips to
>> bind on a specific interface/port/proto (default bind on all available)
>> */
>> #listen=udp:192.168.1.2:5060
>>
>>
>> ####### Modules Section ########
>>
>> #set module path
>> mpath="/usr/local/lib/opensips/modules/"
>>
>> /* uncomment next line for MySQL DB support */
>> loadmodule "db_mysql.so"
>> loadmodule "sl.so"
>> loadmodule "tm.so"
>> loadmodule "rr.so"
>> loadmodule "maxfwd.so"
>> loadmodule "usrloc.so"
>> loadmodule "registrar.so"
>> loadmodule "textops.so"
>> loadmodule "mi_fifo.so"
>> loadmodule "uri_db.so"
>> loadmodule "uri.so"
>> loadmodule "xlog.so"
>> loadmodule "dialog.so"
>> loadmodule "acc.so"
>> /* uncomment next lines for MySQL based authentication support
>> NOTE: a DB (like db_mysql) module must be also loaded */
>> loadmodule "auth.so"
>> loadmodule "auth_db.so"
>> /* uncomment next line for aliases support
>> NOTE: a DB (like db_mysql) module must be also loaded */
>> #loadmodule "alias_db.so"
>> /* uncomment next line for multi-domain support
>> NOTE: a DB (like db_mysql) module must be also loaded
>> NOTE: be sure and enable multi-domain support in all used modules
>> (see "multi-module params" section ) */
>> loadmodule "domain.so"
>> /* uncomment the next two lines for presence server support
>> NOTE: a DB (like db_mysql) module must be also loaded */
>> #loadmodule "presence.so"
>> #loadmodule "presence_xml.so"
>>
>> loadmodule "nathelper.so"
>> loadmodule "mediaproxy.so"
>>
>> # ----------------- setting module-specific parameters ---------------
>>
>>
>> # ----- mi_fifo params -----
>> modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
>>
>>
>> # ----- rr params -----
>> # add value to ;lr param to cope with most of the UAs
>> modparam("rr", "enable_full_lr", 1)
>> # do not append from tag to the RR (no need for this script)
>> modparam("rr", "append_fromtag", 0)
>>
>>
>> # ----- rr params -----
>> modparam("registrar", "method_filtering", 1)
>> /* uncomment the next line to disable parallel forking via location */
>> # modparam("registrar", "append_branches", 0)
>> /* uncomment the next line not to allow more than 10 contacts per AOR */
>> modparam("registrar", "max_contacts", 10)
>>
>> # ----- uri_db params -----
>> /* by default we disable the DB support in the module as we do not need it
>> in this configuration */
>> modparam("uri_db", "use_uri_table", 0)
>> modparam("uri_db", "db_url", "")
>> modparam("registrar", "received_avp", "$avp(i:42)")
>>
>> modparam("dialog","dlg_flag",4)
>>
>>
>> # ----- acc params -----
>> /* what sepcial events should be accounted ? */
>> modparam("acc", "early_media", 1)
>> modparam("acc", "report_ack", 1)
>> modparam("acc", "report_cancels", 1)
>> /* by default ww do not adjust the direct of the sequential requests.
>> if you enable this parameter, be sure the enable "append_fromtag"
>> in "rr" module */
>> modparam("acc", "detect_direction", 0)
>> /* account triggers (flags) */
>> modparam("acc", "failed_transaction_flag", 3)
>> modparam("acc", "log_flag", 1)
>> modparam("acc", "log_missed_flag", 2)
>> /* uncomment the following lines to enable DB accounting also */
>> modparam("acc", "db_flag", 1)
>> modparam("acc", "db_missed_flag", 2)
>>
>>
>> # ----- usrloc params -----
>> modparam("usrloc", "db_mode", 0)
>> /* uncomment the following lines if you want to enable DB persistency
>> for location entries */
>> modparam("usrloc", "db_mode", 2)
>> modparam("usrloc", "db_url",
>> "mysql://openser:openserrw@127.0.0.1/openser")
>>
>>
>> # ----- auth_db params -----
>> /* uncomment the following lines if you want to enable the DB based
>> authentication */
>> modparam("auth_db", "calculate_ha1", yes)
>> modparam("auth_db", "password_column", "password")
>> modparam("auth_db", "db_url",
>> "mysql://openser:openserrw@127.0.0.1/openser")
>> modparam("auth_db", "load_credentials", "")
>>
>>
>> # ----- alias_db params -----
>> /* uncomment the following lines if you want to enable the DB based
>> aliases */
>> #modparam("alias_db", "db_url",
>> # "mysql://opensips:opensipsrw@localhost/opensips")
>>
>>
>> # ----- domain params -----
>> /* uncomment the following lines to enable multi-domain detection
>> support */
>> modparam("domain", "db_url", "mysql://openser:openserrw@127.0.0.1/openser")
>> modparam("domain", "db_mode", 1) # Use caching
>>
>>
>> # ----- multi-module params -----
>> /* uncomment the following line if you want to enable multi-domain support
>> in the modules (dafault off) */
>> modparam("alias_db|auth_db|usrloc|uri_db", "use_domain", 1)
>>
>>
>> # ----- presence params -----
>> /* uncomment the following lines if you want to enable presence */
>> #modparam("presence|presence_xml", "db_url",
>> "mysql://openser:openserrw@127.0.0.1/openser")
>> #modparam("presence_xml", "force_active", 1)
>> #modparam("presence", "server_address", "sip:74.85.27.9:5060")
>>
>>
>> # ----- nathelper params -----
>> #modparam("nathelper", "rtpproxy_disable", 1)
>> modparam("nathelper", "natping_interval", 0)
>> modparam("nathelper","received_avp","$avp(i:42)")
>>
>> #modparam("mediaproxy","natping_interval",30)
>> modparam("mediaproxy", "mediaproxy_socket",
>> "/var/run/mediaproxy/dispatcher.sock")
>>
>>
>>
>> ####### Routing Logic ########
>>
>>
>> # main request routing logic
>>
>> route{
>> if (!mf_process_maxfwd_header("10")) {
>> sl_send_reply("483","Too Many Hops");
>> exit;
>> }
>>
>> if (has_totag()) {
>> # sequential request withing a dialog should
>> # take the path determined by record-routing
>> if (loose_route()) {
>> if (is_method("BYE")) {
>> setflag(1); # do accounting ...
>> setflag(3); # ... even if the transaction fails
>> }
>> route(1);
>> } else {
>> /* uncomment the following lines if you want to enable presence */
>> ##if (is_method("SUBSCRIBE") && $rd == "your.server.ip.address") {
>> ## # in-dialog subscribe requests
>> ## route(2);
>> ## exit;
>> ##}
>> if ( is_method("ACK") ) {
>> if ( t_check_trans() ) {
>> # non loose-route, but stateful ACK; must be an ACK after a 487 or e.g.
>> 404 from upstream server
>> t_relay();
>> exit;
>> } else {
>> # ACK without matching transaction ... ignore and discard.\n");
>> exit;
>> }
>> }
>> sl_send_reply("404","Not here");
>> }
>> exit;
>> }
>>
>> #initial requests
>>
>> # CANCEL processing
>> if (is_method("CANCEL"))
>> {
>> if (t_check_trans())
>> t_relay();
>> exit;
>> }
>>
>> t_check_trans();
>>
>> # authenticate if from local subscriber (uncomment to enable auth)
>> ##if (!(method=="REGISTER") && from_uri==myself)
>> ##{
>> ## if (!proxy_authorize("", "subscriber")) {
>> ## proxy_challenge("", "0");
>> ## exit;
>> ## }
>> ## if (!check_from()) {
>> ## sl_send_reply("403","Forbidden auth ID");
>> ## exit;
>> ## }
>> ##
>> ## consume_credentials();
>> ## # caller authenticated
>> ##}
>>
>> # record routing
>> if (!is_method("REGISTER|MESSAGE"))
>> append_hf("P-hint: hello record routing\r\n");
>> record_route();
>>
>> # account only INVITEs
>> if (is_method("INVITE")) {
>> setflag(1); # do accounting
>> }
>> if (!uri==myself)
>> /* replace with following line if multi-domain support is used */
>> ##if (!is_uri_host_local())
>> {
>> append_hf("P-hint: outbound\r\n");
>> # if you have some interdomain connections via TLS
>> ##if($rd=="tls_domain1.net") {
>> ## t_relay("tls:domain1.net");
>> ## exit;
>> ##} else if($rd=="tls_domain2.net") {
>> ## t_relay("tls:domain2.net");
>> ## exit;
>> ##}
>> route(1);
>> }
>>
>> # requests for my domain
>>
>> /* uncomment this if you want to enable presence server
>> and comment the next 'if' block
>> NOTE: uncomment also the definition of route[2] from below */
>> ##if( is_method("PUBLISH|SUBSCRIBE"))
>> ## route(2);
>>
>> if (is_method("PUBLISH"))
>> {
>> append_hf("P-hint: outbound alias\r\n");
>> sl_send_reply("503", "Service sort of Unavailable");
>> exit;
>> }
>>
>>
>>
>>
>>
>>
>>
>>
>> if (is_method("REGISTER"))
>> {
>> # authenticate the REGISTER requests (uncomment to enable auth)
>> ##if (!www_authorize("", "subscriber"))
>> ##{
>> ## www_challenge("", "0");
>> ## exit;
>> ##}
>> ##
>> ##if (!check_to())
>> ##{
>> ## sl_send_reply("403","Forbidden auth ID");
>> ## exit;
>> ##}
>> append_hf("P-hint: hello register\r\n");
>> if (!search("^Contact:[ ]*\*")) {
>> setflag(6);
>> fix_nated_register();
>> force_rport();
>> };
>> if (!save("location"))
>> sl_reply_error();
>>
>> exit;
>> }
>>
>> if ($rU==NULL) {
>> # request with no Username in RURI
>> sl_send_reply("484","Address Incomplete");
>> exit;
>> }
>>
>> # apply DB based aliases (uncomment to enable)
>> ##alias_db_lookup("dbaliases");
>>
>> if (!lookup("location")) {
>> switch ($retcode) {
>> case -1:
>> case -3:
>> t_newtran();
>> t_reply("404", "Not Found");
>> exit;
>> case -2:
>> sl_send_reply("405", "Method Not Allowed");
>> exit;
>> }
>> }
>>
>> # when routing via usrloc, log the missed calls also
>> setflag(2);
>>
>> route(1);
>> }
>>
>> route[1] {
>> # for INVITEs enable some additional helper routes
>> if (is_method("INVITE")) {
>> ## #use_media_proxy();
>> engage_media_proxy();
>> append_hf("P-hint: setflag7|forcerport|fix_contact\r\n");
>> t_on_branch("2");
>> t_on_reply("2");
>> t_on_failure("1");
>> }
>>
>> if (!t_relay()) {
>> sl_reply_error();
>> };
>> exit;
>> }
>>
>>
>> # Presence route
>> /* uncomment the whole following route for enabling presence
>> NOTE: do not forget to enable the call of this route from the main
>> route */
>> ##route[2]
>> ##{
>> ## if (!t_newtran())
>> ## {
>> ## sl_reply_error();
>> ## exit;
>> ## };
>> ##
>> ## if(is_method("PUBLISH"))
>> ## {
>> ## handle_publish();
>> ## t_release();
>> ## }
>> ## else
>> ## if( is_method("SUBSCRIBE"))
>> ## {
>> ## handle_subscribe();
>> ## t_release();
>> ## }
>> ##
>> ## exit;
>> ##}
>>
>>
>> branch_route[2] {
>> xlog("new branch at $ru\n");
>> }
>>
>>
>> onreply_route[2] {
>> ## use_media_proxy();
>> append_hf("P-hint: onreplyrout\r\n)");
>> xlog("incoming reply\n");
>> }
>>
>>
>> failure_route[1] {
>> if (t_was_cancelled()) {
>> exit;}
>>
>> # uncomment the following lines if you want to block client
>> # redirect based on 3xx replies.
>> ##if (t_check_status("3[0-9][0-9]")) {
>> ##t_reply("404","Not found");
>> ## exit;
>> ##}
>>
>> # uncomment the following lines if you want to redirect the failed
>> # calls to a different new destination
>> ##if (t_check_status("486|408")) {
>> ## sethostport("192.168.2.100:5060");
>> ## append_branch();
>> ## # do not set the missed call flag again
>> ## t_relay();
>> ##}
>> }
>>
>>
>>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
More information about the Users
mailing list