Merge "res_pjsip_config_wizard: Add 2 new parameters to help with proxy config"
This commit is contained in:
commit
7898aad02d
19
CHANGES
19
CHANGES
|
@ -12,6 +12,25 @@
|
||||||
--- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
|
--- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
--- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
res_pjsip_config_wizard
|
||||||
|
------------------
|
||||||
|
* Two new parameters have been added to the pjsip config wizard.
|
||||||
|
Setting 'sends_line_with_registrations' to true will cause the wizard
|
||||||
|
to skip the creation of an identify object to match incoming requests
|
||||||
|
to the endpoint and instead add the line and endpoint parameters to
|
||||||
|
the outbound registration object.
|
||||||
|
Setting 'outbound_proxy' is a shortcut for adding individual
|
||||||
|
endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
|
||||||
|
parameters.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
Build System
|
Build System
|
||||||
------------------
|
------------------
|
||||||
* LOW_MEMORY no longer has an effect on Asterisk ABI. Symbols that were
|
* LOW_MEMORY no longer has an effect on Asterisk ABI. Symbols that were
|
||||||
|
|
|
@ -79,6 +79,13 @@
|
||||||
; sends_auth must also be specified.
|
; sends_auth must also be specified.
|
||||||
; (default: "no")
|
; (default: "no")
|
||||||
|
|
||||||
|
;sends_line_with_registrations= ; Setting this to true will cause the wizard to
|
||||||
|
; skip the creation of an identify object to match
|
||||||
|
; incoming requests to the endpoint and instead add the
|
||||||
|
; line and endpoint parameters to the outbound
|
||||||
|
; registration object.
|
||||||
|
; (default: "no")
|
||||||
|
|
||||||
;accepts_registrations= ; Will create an aor with dynamic contacts which will
|
;accepts_registrations= ; Will create an aor with dynamic contacts which will
|
||||||
; accept registrations.
|
; accept registrations.
|
||||||
; accepts_auth must also be specified.
|
; accepts_auth must also be specified.
|
||||||
|
@ -96,6 +103,11 @@
|
||||||
; SRV records are not currently supported.
|
; SRV records are not currently supported.
|
||||||
; (default: "")
|
; (default: "")
|
||||||
|
|
||||||
|
;outbound_proxy= ; Setting this is a shortcut for setting
|
||||||
|
; endpoint/outbound_proxy
|
||||||
|
; aor/outbound_proxy
|
||||||
|
; registration/outbound_proxy
|
||||||
|
|
||||||
;transport= ; The transport to use for the endpoint and registrations
|
;transport= ; The transport to use for the endpoint and registrations
|
||||||
; (default: the pjsip default)
|
; (default: the pjsip default)
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,12 @@
|
||||||
entry in the list. If send_registrations is also set, a registration will
|
entry in the list. If send_registrations is also set, a registration will
|
||||||
also be created for each.</para></description>
|
also be created for each.</para></description>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
<configOption name="outbound_proxy">
|
||||||
|
<synopsis>Shortcut for specifying proxy on individual objects.</synopsis>
|
||||||
|
<description><para>Shortcut for specifying endpoint/outbound_proxy,
|
||||||
|
aor/outbound_proxy, and registration/outbound_proxy individually.
|
||||||
|
</para></description>
|
||||||
|
</configOption>
|
||||||
<configOption name="sends_auth" default="no">
|
<configOption name="sends_auth" default="no">
|
||||||
<synopsis>Send outbound authentication to remote hosts.</synopsis>
|
<synopsis>Send outbound authentication to remote hosts.</synopsis>
|
||||||
<description><para>At least outbound_auth/username is required.</para></description>
|
<description><para>At least outbound_auth/username is required.</para></description>
|
||||||
|
@ -153,6 +159,13 @@
|
||||||
be created for each host in the remote _hosts string. If authentication is required,
|
be created for each host in the remote _hosts string. If authentication is required,
|
||||||
sends_auth and an outbound_auth/username must also be supplied.</para></description>
|
sends_auth and an outbound_auth/username must also be supplied.</para></description>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
<configOption name="sends_line_with_registrations" default="no">
|
||||||
|
<synopsis>Sets "line" and "endpoint parameters on registrations.</synopsis>
|
||||||
|
<description><para>Setting this to true will cause the wizard to skip the
|
||||||
|
creation of an identify object to match incoming requests to the endpoint and
|
||||||
|
instead add the line and endpoint parameters to the outbound registration object.
|
||||||
|
</para></description>
|
||||||
|
</configOption>
|
||||||
<configOption name="accepts_registrations" default="no">
|
<configOption name="accepts_registrations" default="no">
|
||||||
<synopsis>Accept inbound registration from remote hosts.</synopsis>
|
<synopsis>Accept inbound registration from remote hosts.</synopsis>
|
||||||
<description><para>An AOR with dynamic contacts will be created. If
|
<description><para>An AOR with dynamic contacts will be created. If
|
||||||
|
@ -595,11 +608,16 @@ static int handle_aor(const struct ast_sorcery *sorcery, struct object_type_wiza
|
||||||
struct ast_sorcery_object *obj = NULL;
|
struct ast_sorcery_object *obj = NULL;
|
||||||
const char *id = ast_category_get_name(wiz);
|
const char *id = ast_category_get_name(wiz);
|
||||||
const char *contact_pattern;
|
const char *contact_pattern;
|
||||||
|
const char *outbound_proxy = ast_variable_find_last_in_list(wizvars, "outbound_proxy");
|
||||||
int host_count = AST_VECTOR_SIZE(remote_hosts_vector);
|
int host_count = AST_VECTOR_SIZE(remote_hosts_vector);
|
||||||
RAII_VAR(struct ast_variable *, vars, get_object_variables(wizvars, "aor/"), ast_variables_destroy);
|
RAII_VAR(struct ast_variable *, vars, get_object_variables(wizvars, "aor/"), ast_variables_destroy);
|
||||||
|
|
||||||
variable_list_append(&vars, "@pjsip_wizard", id);
|
variable_list_append(&vars, "@pjsip_wizard", id);
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(outbound_proxy)) {
|
||||||
|
variable_list_append_return(&vars, "outbound_proxy", outbound_proxy);
|
||||||
|
}
|
||||||
|
|
||||||
/* If the user explicitly specified an aor/contact, don't use remote hosts. */
|
/* If the user explicitly specified an aor/contact, don't use remote hosts. */
|
||||||
if (!ast_variable_find_last_in_list(vars, "contact")) {
|
if (!ast_variable_find_last_in_list(vars, "contact")) {
|
||||||
if (!(contact_pattern = ast_variable_find_last_in_list(wizvars, "contact_pattern"))) {
|
if (!(contact_pattern = ast_variable_find_last_in_list(wizvars, "contact_pattern"))) {
|
||||||
|
@ -647,6 +665,7 @@ static int handle_endpoint(const struct ast_sorcery *sorcery, struct object_type
|
||||||
struct ast_variable *wizvars = ast_category_first(wiz);
|
struct ast_variable *wizvars = ast_category_first(wiz);
|
||||||
struct ast_sorcery_object *obj = NULL;
|
struct ast_sorcery_object *obj = NULL;
|
||||||
const char *id = ast_category_get_name(wiz);
|
const char *id = ast_category_get_name(wiz);
|
||||||
|
const char *outbound_proxy = ast_variable_find_last_in_list(wizvars, "outbound_proxy");
|
||||||
const char *transport = ast_variable_find_last_in_list(wizvars, "transport");
|
const char *transport = ast_variable_find_last_in_list(wizvars, "transport");
|
||||||
const char *hint_context = hint_context = ast_variable_find_last_in_list(wizvars, "hint_context");
|
const char *hint_context = hint_context = ast_variable_find_last_in_list(wizvars, "hint_context");
|
||||||
const char *hint_exten = ast_variable_find_last_in_list(wizvars, "hint_exten");
|
const char *hint_exten = ast_variable_find_last_in_list(wizvars, "hint_exten");
|
||||||
|
@ -657,6 +676,10 @@ static int handle_endpoint(const struct ast_sorcery *sorcery, struct object_type
|
||||||
variable_list_append_return(&vars, "@pjsip_wizard", id);
|
variable_list_append_return(&vars, "@pjsip_wizard", id);
|
||||||
variable_list_append_return(&vars, "aors", id);
|
variable_list_append_return(&vars, "aors", id);
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(outbound_proxy)) {
|
||||||
|
variable_list_append_return(&vars, "outbound_proxy", outbound_proxy);
|
||||||
|
}
|
||||||
|
|
||||||
if (ast_strlen_zero(hint_context)) {
|
if (ast_strlen_zero(hint_context)) {
|
||||||
hint_context = ast_variable_find_last_in_list(vars, "context");
|
hint_context = ast_variable_find_last_in_list(vars, "context");
|
||||||
}
|
}
|
||||||
|
@ -719,8 +742,9 @@ static int handle_identify(const struct ast_sorcery *sorcery, struct object_type
|
||||||
|
|
||||||
snprintf(new_id, sizeof(new_id), "%s-identify", id);
|
snprintf(new_id, sizeof(new_id), "%s-identify", id);
|
||||||
|
|
||||||
/* If accepting registrations, we don't need an identify. */
|
/* If accepting registrations or we're sending line, we don't need an identify. */
|
||||||
if (is_variable_true(wizvars, "accepts_registrations")) {
|
if (is_variable_true(wizvars, "accepts_registrations")
|
||||||
|
|| is_variable_true(wizvars, "sends_line_with_registrations")) {
|
||||||
/* If one exists, delete it. */
|
/* If one exists, delete it. */
|
||||||
obj = otw->wizard->retrieve_id(sorcery, otw->wizard_data, "identify", new_id);
|
obj = otw->wizard->retrieve_id(sorcery, otw->wizard_data, "identify", new_id);
|
||||||
if (obj) {
|
if (obj) {
|
||||||
|
@ -836,6 +860,7 @@ static int handle_registrations(const struct ast_sorcery *sorcery, struct object
|
||||||
const char *id = ast_category_get_name(wiz);
|
const char *id = ast_category_get_name(wiz);
|
||||||
const char *server_uri_pattern;
|
const char *server_uri_pattern;
|
||||||
const char *client_uri_pattern;
|
const char *client_uri_pattern;
|
||||||
|
const char *outbound_proxy = ast_variable_find_last_in_list(wizvars, "outbound_proxy");
|
||||||
const char *transport = ast_variable_find_last_in_list(wizvars, "transport");
|
const char *transport = ast_variable_find_last_in_list(wizvars, "transport");
|
||||||
const char *username;
|
const char *username;
|
||||||
char new_id[strlen(id) + MAX_ID_SUFFIX];
|
char new_id[strlen(id) + MAX_ID_SUFFIX];
|
||||||
|
@ -855,6 +880,10 @@ static int handle_registrations(const struct ast_sorcery *sorcery, struct object
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ast_strlen_zero(outbound_proxy)) {
|
||||||
|
variable_list_append_return(&vars, "outbound_proxy", outbound_proxy);
|
||||||
|
}
|
||||||
|
|
||||||
otw->wizard->retrieve_multiple(sorcery, otw->wizard_data, "registration", existing, search);
|
otw->wizard->retrieve_multiple(sorcery, otw->wizard_data, "registration", existing, search);
|
||||||
ast_variables_destroy(search);
|
ast_variables_destroy(search);
|
||||||
|
|
||||||
|
@ -925,6 +954,11 @@ static int handle_registrations(const struct ast_sorcery *sorcery, struct object
|
||||||
variable_list_append_return(®istration_vars, "transport", transport);
|
variable_list_append_return(®istration_vars, "transport", transport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_variable_true(wizvars, "sends_line_with_registrations")) {
|
||||||
|
variable_list_append_return(®istration_vars, "line", "yes");
|
||||||
|
variable_list_append_return(®istration_vars, "endpoint", id);
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(new_id, sizeof(new_id), "%s-reg-%d", id, host_counter);
|
snprintf(new_id, sizeof(new_id), "%s-reg-%d", id, host_counter);
|
||||||
|
|
||||||
obj = create_object(sorcery, new_id, "registration", registration_vars);
|
obj = create_object(sorcery, new_id, "registration", registration_vars);
|
||||||
|
|
Loading…
Reference in New Issue