merge: branch lr/agent-hints
https://github.com/NetworkManager/NetworkManager/pull/328
This commit is contained in:
@@ -741,16 +741,8 @@ try_spawn_vpn_auth_helper (RequestData *request,
|
||||
GPtrArray *secrets)
|
||||
{
|
||||
NMSettingVpn *s_vpn = nm_connection_get_setting_vpn (request->connection);
|
||||
NMVpnPluginInfo *plugin_info;
|
||||
gboolean supports_external;
|
||||
const char *auth_dialog_argv[] = { NULL,
|
||||
"-u", nm_connection_get_uuid (request->connection),
|
||||
"-n", nm_connection_get_id (request->connection),
|
||||
"-s", nm_setting_vpn_get_service_type (s_vpn),
|
||||
"--external-ui-mode",
|
||||
"-i",
|
||||
NULL, /* [9], slot for "-r" */
|
||||
NULL };
|
||||
gs_unref_ptrarray GPtrArray *auth_dialog_argv = NULL;
|
||||
NMVpnPluginInfo *plugin_info;
|
||||
const char *s;
|
||||
GPid auth_dialog_pid;
|
||||
int auth_dialog_in_fd;
|
||||
@@ -762,6 +754,7 @@ try_spawn_vpn_auth_helper (RequestData *request,
|
||||
char *auth_dialog_request_str;
|
||||
gsize auth_dialog_request_len;
|
||||
AuthDialogData *data;
|
||||
int i;
|
||||
|
||||
plugin_info = nm_vpn_plugin_info_list_find_by_service (nm_vpn_get_plugin_infos (),
|
||||
nm_setting_vpn_get_service_type (s_vpn));
|
||||
@@ -769,17 +762,37 @@ try_spawn_vpn_auth_helper (RequestData *request,
|
||||
return FALSE;
|
||||
|
||||
s = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "supports-external-ui-mode");
|
||||
supports_external = _nm_utils_ascii_str_to_bool (s, FALSE);
|
||||
if (!supports_external)
|
||||
if (!_nm_utils_ascii_str_to_bool (s, FALSE))
|
||||
return FALSE;
|
||||
|
||||
auth_dialog_argv[0] = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "auth-dialog");
|
||||
g_return_val_if_fail (auth_dialog_argv[0], FALSE);
|
||||
auth_dialog_argv = g_ptr_array_new ();
|
||||
|
||||
s = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "auth-dialog");
|
||||
g_return_val_if_fail (s, FALSE);
|
||||
g_ptr_array_add (auth_dialog_argv, (gpointer) s);
|
||||
|
||||
g_ptr_array_add (auth_dialog_argv, "-u");
|
||||
g_ptr_array_add (auth_dialog_argv, (gpointer) nm_connection_get_uuid (request->connection));
|
||||
g_ptr_array_add (auth_dialog_argv, "-n");
|
||||
g_ptr_array_add (auth_dialog_argv, (gpointer) nm_connection_get_id (request->connection));
|
||||
g_ptr_array_add (auth_dialog_argv, "-s");
|
||||
g_ptr_array_add (auth_dialog_argv, (gpointer) nm_setting_vpn_get_service_type (s_vpn));
|
||||
g_ptr_array_add (auth_dialog_argv, "--external-ui-mode");
|
||||
g_ptr_array_add (auth_dialog_argv, "-i");
|
||||
|
||||
if (request->flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW)
|
||||
auth_dialog_argv[9] = "-r";
|
||||
g_ptr_array_add (auth_dialog_argv, "-r");
|
||||
|
||||
if (!g_spawn_async_with_pipes (NULL, (char **)auth_dialog_argv, NULL,
|
||||
s = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "supports-hints");
|
||||
if (_nm_utils_ascii_str_to_bool (s, FALSE)) {
|
||||
for (i = 0; request->hints[i]; i++) {
|
||||
g_ptr_array_add (auth_dialog_argv, "-t");
|
||||
g_ptr_array_add (auth_dialog_argv, request->hints[i]);
|
||||
}
|
||||
}
|
||||
|
||||
g_ptr_array_add (auth_dialog_argv, NULL);
|
||||
if (!g_spawn_async_with_pipes (NULL, (char **) auth_dialog_argv->pdata, NULL,
|
||||
G_SPAWN_DO_NOT_REAP_CHILD,
|
||||
NULL, NULL,
|
||||
&auth_dialog_pid,
|
||||
|
Reference in New Issue
Block a user