merge: branch lr/agent-hints

https://github.com/NetworkManager/NetworkManager/pull/328
This commit is contained in:
Lubomir Rintel
2019-04-03 08:59:08 +02:00

View File

@@ -741,16 +741,8 @@ try_spawn_vpn_auth_helper (RequestData *request,
GPtrArray *secrets) GPtrArray *secrets)
{ {
NMSettingVpn *s_vpn = nm_connection_get_setting_vpn (request->connection); NMSettingVpn *s_vpn = nm_connection_get_setting_vpn (request->connection);
NMVpnPluginInfo *plugin_info; gs_unref_ptrarray GPtrArray *auth_dialog_argv = NULL;
gboolean supports_external; NMVpnPluginInfo *plugin_info;
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 };
const char *s; const char *s;
GPid auth_dialog_pid; GPid auth_dialog_pid;
int auth_dialog_in_fd; int auth_dialog_in_fd;
@@ -762,6 +754,7 @@ try_spawn_vpn_auth_helper (RequestData *request,
char *auth_dialog_request_str; char *auth_dialog_request_str;
gsize auth_dialog_request_len; gsize auth_dialog_request_len;
AuthDialogData *data; AuthDialogData *data;
int i;
plugin_info = nm_vpn_plugin_info_list_find_by_service (nm_vpn_get_plugin_infos (), plugin_info = nm_vpn_plugin_info_list_find_by_service (nm_vpn_get_plugin_infos (),
nm_setting_vpn_get_service_type (s_vpn)); nm_setting_vpn_get_service_type (s_vpn));
@@ -769,17 +762,37 @@ try_spawn_vpn_auth_helper (RequestData *request,
return FALSE; return FALSE;
s = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "supports-external-ui-mode"); 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 (!_nm_utils_ascii_str_to_bool (s, FALSE))
if (!supports_external)
return FALSE; return FALSE;
auth_dialog_argv[0] = nm_vpn_plugin_info_lookup_property (plugin_info, "GNOME", "auth-dialog"); auth_dialog_argv = g_ptr_array_new ();
g_return_val_if_fail (auth_dialog_argv[0], FALSE);
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) 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, G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL, NULL, NULL,
&auth_dialog_pid, &auth_dialog_pid,