Hello List,
I have a working setup with a kamailio + freeswitch where i can register extension and make succesfull calls between them. I added now a "external" path for outbound call to which i can successfully route using the dialplan + dispatcher combo. My problem is that my outbound path requires authentication and i'm struggling to find a way to successfully authenticate with the remote end. I configured the UAC module to register against the remote end with a set of credentials but in the SIP trace i can see that the kamailio simply uses the local user credentials instead of the external ones.
I believe that this is because the 401 Unauthorized from the carrier gets proxied to the extension which responds with its own credentials.
Can anybody suggest how can i stop forwarding them in this case to extension and instead use the UAC to reply with different set of credentials?
Regards,
Krzysztof
The config:
request_route {
...
if($rU=~"[0-9]{5,}"){ xlog("L_INFO","Looking up route for $rU\n"); dp_match("1", "$rU"); $var(dsid) = $(var(attrs){s.int}); if(!ds_select_dst("$var(dsid)", "4")) { send_reply("404", "No destination"); exit; } if(!ds_select_domain("$var(dsid)", "4")) { send_reply("404", "No destination"); exit; } xlog("L_INFO", "Looking up $fn in database\n"); $avp(s:auth_realm_avp) = "realm.com"; $avp(s:auth_username_avp) = "username"; $avp(s:auth_password_avp) = "password"; if(uac_reg_request_to("$fn", 1)) { xlog("L_INFO", "Found remote user [$rU] on [$rd] via [$du]"); t_on_failure("REMOTE_AUTH"); xlog("L_INFO", "going to <$ru> via <$du>\n"); route(RELAY); } exit; }
failure_route[REMOTE_AUTH] { if ($T_reply_code == 401 or $T_reply_code == 407) { xlog("L_INFO", "Remote asked for authentication"); uac_auth();
} }