[Freeswitch-svn] [commit] r5713 - in freeswitch/trunk: conf src/mod/endpoints/mod_sofia
Freeswitch SVN
anthm at freeswitch.org
Wed Sep 19 11:28:16 EDT 2007
Author: anthm
Date: Wed Sep 19 11:28:16 2007
New Revision: 5713
Modified:
freeswitch/trunk/conf/directory.xml
freeswitch/trunk/conf/sofia.conf.xml
freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
Log:
add register-proxy option to gateways so you can send outbound reg to your local proxy dest for the outside
Modified: freeswitch/trunk/conf/directory.xml
==============================================================================
--- freeswitch/trunk/conf/directory.xml (original)
+++ freeswitch/trunk/conf/directory.xml Wed Sep 19 11:28:16 2007
@@ -19,6 +19,8 @@
<!--<param name="extension" value="cluecon"/>-->
<!--/// proxy host: *optional* same as realm, if blank ///-->
<!--<param name="proxy" value="asterlink.com"/>-->
+ <!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
+ <!--<param name="register-proxy" value="mysbc.com"/>-->
<!--/// expire in seconds: *optional* 3600, if blank ///-->
<!--<param name="expire-seconds" value="60"/>-->
<!--/// do not register ///-->
Modified: freeswitch/trunk/conf/sofia.conf.xml
==============================================================================
--- freeswitch/trunk/conf/sofia.conf.xml (original)
+++ freeswitch/trunk/conf/sofia.conf.xml Wed Sep 19 11:28:16 2007
@@ -22,6 +22,8 @@
<!--<param name="extension" value="cluecon"/>-->
<!--/// proxy host: *optional* same as realm, if blank ///-->
<!--<param name="proxy" value="asterlink.com"/>-->
+ <!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
+ <!--<param name="register-proxy" value="mysbc.com"/>-->
<!--/// expire in seconds: *optional* 3600, if blank ///-->
<!--<param name="expire-seconds" value="60"/>-->
<!--/// do not register ///-->
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Wed Sep 19 11:28:16 2007
@@ -196,6 +196,7 @@
char *register_proxy;
char *register_context;
char *expires_str;
+ char *register_url;
uint32_t freq;
time_t expires;
time_t retry;
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Wed Sep 19 11:28:16 2007
@@ -501,7 +501,8 @@
*expire_seconds = "3600",
*retry_seconds = "30",
*from_domain = "",
- *to_domain = "";
+ *to_domain = "",
+ *register_proxy = NULL;
gateway->pool = profile->pool;
gateway->profile = profile;
@@ -539,13 +540,11 @@
from_domain = val;
} else if (!strcmp(var, "to-domain")) {
to_domain = val;
+ } else if (!strcmp(var, "register-proxy")) {
+ register_proxy = val;
}
}
-
- if (switch_strlen_zero(to_domain)) {
- to_domain = proxy;
- }
-
+
if (switch_strlen_zero(realm)) {
realm = name;
}
@@ -563,7 +562,7 @@
if (switch_strlen_zero(extension)) {
extension = username;
}
-
+
if (switch_strlen_zero(proxy)) {
proxy = realm;
}
@@ -576,6 +575,14 @@
from_domain = realm;
}
+ if (switch_strlen_zero(register_proxy)) {
+ register_proxy = proxy;
+ }
+
+ if (switch_strlen_zero(to_domain)) {
+ to_domain = proxy;
+ }
+
gateway->retry_seconds = atoi(retry_seconds);
if (gateway->retry_seconds < 10) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "INVALID: retry_seconds correcting the value to 30\n");
@@ -589,6 +596,7 @@
if (switch_true(caller_id_in_from)) {
switch_set_flag(gateway, REG_FLAG_CALLERID);
}
+ gateway->register_url = switch_core_sprintf(gateway->pool, "sip:%s", register_proxy);
gateway->register_from = switch_core_sprintf(gateway->pool, "sip:%s@%s", username, from_domain);
gateway->register_contact = switch_core_sprintf(gateway->pool, "sip:%s@%s:%d", extension,
profile->extsipip ? profile->extsipip : profile->sipip, profile->sip_port);
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Wed Sep 19 11:28:16 2007
@@ -73,6 +73,7 @@
case REG_STATE_UNREGISTER:
nua_unregister(gateway_ptr->nh,
+ NUTAG_URL(gateway_ptr->register_url),
SIPTAG_FROM_STR(gateway_ptr->register_from),
SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -97,6 +98,7 @@
if (now) {
nua_register(gateway_ptr->nh,
+ NUTAG_URL(gateway_ptr->register_url),
SIPTAG_FROM_STR(gateway_ptr->register_from),
SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -105,6 +107,7 @@
gateway_ptr->retry = now + gateway_ptr->retry_seconds;
} else {
nua_unregister(gateway_ptr->nh,
+ NUTAG_URL(gateway_ptr->register_url),
SIPTAG_FROM_STR(gateway_ptr->register_from),
SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -700,7 +703,7 @@
goto cancel;
}
}
-
+
snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, gateway->register_username, gateway->register_password);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n", profile->username, authentication);
More information about the Freeswitch-svn
mailing list