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)
|
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,
|
||||||
|
Reference in New Issue
Block a user