diff options
author | George Joseph <gjoseph@digium.com> | 2017-03-28 12:10:32 -0600 |
---|---|---|
committer | George Joseph <gjoseph@digium.com> | 2017-03-28 15:51:21 -0600 |
commit | 2fe52174de092c89080d0e6dc567bb2d6797d1e7 (patch) | |
tree | 580aa62152870effac0a06c930ed7de1a50f6965 /res/res_pjsip_config_wizard.c | |
parent | d0ada2246e7d594b4b3e4eb30f53eeb822aa8963 (diff) |
res_pjsip_config_wizard: Add 2 new parameters to help with proxy config
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 request
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.
Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0
(cherry picked from commit a827892ff77cd37912b528d9c45b446be091bbc0)
(cherry picked from commit 27344675be1941d30508c6e6bd684acdd0791e1a)
Diffstat (limited to 'res/res_pjsip_config_wizard.c')
-rw-r--r-- | res/res_pjsip_config_wizard.c | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/res/res_pjsip_config_wizard.c b/res/res_pjsip_config_wizard.c index 83e282821..1526dc2e2 100644 --- a/res/res_pjsip_config_wizard.c +++ b/res/res_pjsip_config_wizard.c @@ -139,6 +139,12 @@ entry in the list. If send_registrations is also set, a registration will also be created for each.</para></description> </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"> <synopsis>Send outbound authentication to remote hosts.</synopsis> <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, sends_auth and an outbound_auth/username must also be supplied.</para></description> </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"> <synopsis>Accept inbound registration from remote hosts.</synopsis> <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; const char *id = ast_category_get_name(wiz); 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); RAII_VAR(struct ast_variable *, vars, get_object_variables(wizvars, "aor/"), ast_variables_destroy); 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 (!ast_variable_find_last_in_list(vars, "contact")) { 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_sorcery_object *obj = NULL; 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 *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"); @@ -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, "aors", id); + if (!ast_strlen_zero(outbound_proxy)) { + variable_list_append_return(&vars, "outbound_proxy", outbound_proxy); + } + if (ast_strlen_zero(hint_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); - /* If accepting registrations, we don't need an identify. */ - if (is_variable_true(wizvars, "accepts_registrations")) { + /* If accepting registrations or we're sending line, we don't need an identify. */ + if (is_variable_true(wizvars, "accepts_registrations") + || is_variable_true(wizvars, "sends_line_with_registrations")) { /* If one exists, delete it. */ obj = otw->wizard->retrieve_id(sorcery, otw->wizard_data, "identify", new_id); 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 *server_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 *username; 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; } + 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); 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); } + 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); obj = create_object(sorcery, new_id, "registration", registration_vars); |