summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAtul Anand <atulhjp@gmail.com>2016-08-16 05:56:00 +0530
committerThomas Haller <thaller@redhat.com>2016-09-27 12:06:27 +0200
commite172720b3cfbd096339f154e9c94443ebc69dcde (patch)
tree559411e70f408427f4ccb95c48a2aff2592ab55c
parent7deed503462300de7ef0b4cd5c1102ce0019d1fe (diff)
downloadNetworkManager-e172720b3cfbd096339f154e9c94443ebc69dcde.tar.gz
nmcli: Add Proxy support to nmcli
nmcli fixed to allow users edit proxy properties.
-rw-r--r--clients/cli/connections.c33
-rw-r--r--clients/cli/devices.c5
-rw-r--r--clients/cli/settings.c329
-rw-r--r--clients/cli/settings.h2
4 files changed, 367 insertions, 2 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index 0a64e2fb7f..d93aea9f4a 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -170,6 +170,7 @@ NmcOutputField nmc_fields_settings_names[] = {
SETTING_FIELD (NM_SETTING_IP_TUNNEL_SETTING_NAME, nmc_fields_setting_ip_tunnel + 1), /* 26 */
SETTING_FIELD (NM_SETTING_MACVLAN_SETTING_NAME, nmc_fields_setting_macvlan + 1), /* 27 */
SETTING_FIELD (NM_SETTING_VXLAN_SETTING_NAME, nmc_fields_setting_vxlan + 1), /* 28 */
+ SETTING_FIELD (NM_SETTING_PROXY_SETTING_NAME, nmc_fields_setting_proxy + 1), /* 29 */
{NULL, NULL, 0, NULL, NULL, FALSE, FALSE, 0}
};
#define NMC_FIELDS_SETTINGS_NAMES_ALL_X NM_SETTING_CONNECTION_SETTING_NAME","\
@@ -199,7 +200,8 @@ NmcOutputField nmc_fields_settings_names[] = {
NM_SETTING_TUN_SETTING_NAME"," \
NM_SETTING_IP_TUNNEL_SETTING_NAME"," \
NM_SETTING_MACVLAN_SETTING_NAME"," \
- NM_SETTING_VXLAN_SETTING_NAME
+ NM_SETTING_VXLAN_SETTING_NAME"," \
+ NM_SETTING_PROXY_SETTING_NAME
#define NMC_FIELDS_SETTINGS_NAMES_ALL NMC_FIELDS_SETTINGS_NAMES_ALL_X
/* Active connection data */
@@ -2995,6 +2997,7 @@ static const NameItem nmc_bridge_slave_settings [] = {
static const NameItem nmc_no_slave_settings [] = {
{ NM_SETTING_IP4_CONFIG_SETTING_NAME, NULL, NULL, FALSE },
{ NM_SETTING_IP6_CONFIG_SETTING_NAME, NULL, NULL, FALSE },
+ { NM_SETTING_PROXY_SETTING_NAME, NULL, NULL, FALSE },
{ NULL, NULL, NULL, FALSE }
};
@@ -4301,6 +4304,21 @@ static OptionInfo option_info[] = {
{ NM_SETTING_IP6_CONFIG_SETTING_NAME, NM_SETTING_IP_CONFIG_ADDRESSES, "ip6", OPTION_MULTI, N_("IPv6 address (IP[/plen]) [none]"), NULL,
set_ip6_address, NULL },
{ NM_SETTING_IP6_CONFIG_SETTING_NAME, NM_SETTING_IP_CONFIG_GATEWAY, "gw6", OPTION_NONE, N_("IPv6 gateway [none]"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_METHOD, "method", OPTION_NONE, N_("Proxy method"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_HTTP_PROXY, "http-proxy", OPTION_NONE, N_("HTTP Proxy"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_HTTP_PORT, "http-port", OPTION_NONE, N_("HTTP Port"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_HTTP_DEFAULT, "http-default", OPTION_NONE, N_("HTTP Default"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_SSL_PROXY, "ssl-proxy", OPTION_NONE, N_("SSL Proxy"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_SSL_PORT, "ssl-port", OPTION_NONE, N_("SSL Port"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_FTP_PROXY, "ftp-proxy", OPTION_NONE, N_("FTP Proxy"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_FTP_PORT, "ftp-port", OPTION_NONE, N_("FTP Port"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_SOCKS_PROXY, "socks-proxy", OPTION_NONE, N_("SOCKS Proxy"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_SOCKS_PORT, "socks-port", OPTION_NONE, N_("SOCKS Port"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_SOCKS_VERSION_5, "socks-version-5", OPTION_NONE, N_("SOCKS V5"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_NO_PROXY_FOR, "no-proxy-for", OPTION_NONE, N_("NO Proxy For"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_BROWSER_ONLY, "browser-only", OPTION_NONE, N_("Browser Only"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_PAC_URL, "pac-url", OPTION_NONE, N_("PAC Url"), NULL, NULL, NULL },
+ { NM_SETTING_PROXY_SETTING_NAME, NM_SETTING_PROXY_PAC_SCRIPT, "pac-script", OPTION_NONE, N_("PAC Script"), NULL, NULL, NULL },
{ NULL, NULL, NULL, OPTION_NONE, NULL, NULL, NULL, NULL },
};
@@ -4803,6 +4821,8 @@ setting_name_to_name (const char *name)
return _("IPv4 protocol");
if (strcmp (name, NM_SETTING_IP6_CONFIG_SETTING_NAME) == 0)
return _("IPv6 protocol");
+ if (strcmp (name, NM_SETTING_PROXY_SETTING_NAME) == 0)
+ return _("Proxy");
/* Should not happen; but let's still try to be somewhat sensible. */
return name;
@@ -7087,6 +7107,8 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
nmc_setting_ip4_connect_handlers (NM_SETTING_IP_CONFIG (setting));
else if (NM_IS_SETTING_IP6_CONFIG (setting))
nmc_setting_ip6_connect_handlers (NM_SETTING_IP_CONFIG (setting));
+ else if (NM_IS_SETTING_PROXY (setting))
+ nmc_setting_proxy_connect_handlers (NM_SETTING_PROXY (setting));
nm_connection_add_setting (connection, setting);
}
@@ -7733,6 +7755,11 @@ editor_init_new_connection (NmCli *nmc, NMConnection *connection)
setting = nm_setting_ip6_config_new ();
nmc_setting_custom_init (setting);
nm_connection_add_setting (connection, setting);
+
+ /* Also Proxy Setting */
+ setting = nm_setting_proxy_new ();
+ nmc_setting_custom_init (setting);
+ nm_connection_add_setting (connection, setting);
}
}
@@ -7740,11 +7767,13 @@ static void
editor_init_existing_connection (NMConnection *connection)
{
NMSettingIPConfig *s_ip4, *s_ip6;
+ NMSettingProxy *s_proxy;
NMSettingWireless *s_wireless;
NMSettingConnection *s_con;
s_ip4 = nm_connection_get_setting_ip4_config (connection);
s_ip6 = nm_connection_get_setting_ip6_config (connection);
+ s_proxy = nm_connection_get_setting_proxy (connection);
s_wireless = nm_connection_get_setting_wireless (connection);
s_con = nm_connection_get_setting_connection (connection);
@@ -7752,6 +7781,8 @@ editor_init_existing_connection (NMConnection *connection)
nmc_setting_ip4_connect_handlers (s_ip4);
if (s_ip6)
nmc_setting_ip6_connect_handlers (s_ip6);
+ if (s_proxy)
+ nmc_setting_proxy_connect_handlers (s_proxy);
if (s_wireless)
nmc_setting_wireless_connect_handlers (s_wireless);
if (s_con)
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index 550f0c2e1d..5409452f36 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -3313,6 +3313,7 @@ do_device_wifi_hotspot (NmCli *nmc, int argc, char **argv)
NMSettingWireless *s_wifi;
NMSettingWirelessSecurity *s_wsec;
NMSettingIPConfig *s_ip4, *s_ip6;
+ NMSettingProxy *s_proxy;
GBytes *ssid_bytes;
GError *error = NULL;
@@ -3479,6 +3480,10 @@ do_device_wifi_hotspot (NmCli *nmc, int argc, char **argv)
nm_connection_add_setting (connection, NM_SETTING (s_ip6));
g_object_set (s_ip6, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, NULL);
+ s_proxy = (NMSettingProxy *) nm_setting_proxy_new ();
+ nm_connection_add_setting (connection, NM_SETTING (s_proxy));
+ g_object_set (s_proxy, NM_SETTING_PROXY_METHOD, NM_SETTING_PROXY_METHOD_NONE, NULL);
+
/* Activate the connection now */
nmc->nowait_flag = (nmc->timeout == 0);
nmc->should_wait++;
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index ee167d2c6a..385c9c4fc8 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -795,6 +795,42 @@ NmcOutputField nmc_fields_setting_vxlan[] = {
NM_SETTING_VXLAN_L2_MISS","\
NM_SETTING_VXLAN_L3_MISS
+/* Available fields for NM_SETTING_PROXY_SETTING_NAME */
+NmcOutputField nmc_fields_setting_proxy[] = {
+ SETTING_FIELD ("name"), /* 0 */
+ SETTING_FIELD (NM_SETTING_PROXY_METHOD), /* 1 */
+ SETTING_FIELD (NM_SETTING_PROXY_HTTP_PROXY), /* 2 */
+ SETTING_FIELD (NM_SETTING_PROXY_HTTP_PORT), /* 3 */
+ SETTING_FIELD (NM_SETTING_PROXY_HTTP_DEFAULT), /* 4 */
+ SETTING_FIELD (NM_SETTING_PROXY_SSL_PROXY), /* 5 */
+ SETTING_FIELD (NM_SETTING_PROXY_SSL_PORT), /* 6 */
+ SETTING_FIELD (NM_SETTING_PROXY_FTP_PROXY), /* 7 */
+ SETTING_FIELD (NM_SETTING_PROXY_FTP_PORT), /* 8 */
+ SETTING_FIELD (NM_SETTING_PROXY_SOCKS_PROXY), /* 9 */
+ SETTING_FIELD (NM_SETTING_PROXY_SOCKS_PORT), /* 10 */
+ SETTING_FIELD (NM_SETTING_PROXY_SOCKS_VERSION_5), /* 11 */
+ SETTING_FIELD (NM_SETTING_PROXY_NO_PROXY_FOR), /* 12 */
+ SETTING_FIELD (NM_SETTING_PROXY_BROWSER_ONLY), /* 13 */
+ SETTING_FIELD (NM_SETTING_PROXY_PAC_URL), /* 14 */
+ SETTING_FIELD (NM_SETTING_PROXY_PAC_SCRIPT), /* 15 */
+ {NULL, NULL, 0, NULL, FALSE, FALSE, 0}
+};
+#define NMC_FIELDS_SETTING_PROXY_ALL "name"","\
+ NM_SETTING_PROXY_METHOD","\
+ NM_SETTING_PROXY_HTTP_PROXY","\
+ NM_SETTING_PROXY_HTTP_PORT","\
+ NM_SETTING_PROXY_HTTP_DEFAULT","\
+ NM_SETTING_PROXY_SSL_PROXY","\
+ NM_SETTING_PROXY_SSL_PORT","\
+ NM_SETTING_PROXY_FTP_PROXY","\
+ NM_SETTING_PROXY_FTP_PORT","\
+ NM_SETTING_PROXY_SOCKS_PROXY","\
+ NM_SETTING_PROXY_SOCKS_PORT","\
+ NM_SETTING_PROXY_SOCKS_VERSION_5","\
+ NM_SETTING_PROXY_NO_PROXY_FOR","\
+ NM_SETTING_PROXY_BROWSER_ONLY","\
+ NM_SETTING_PROXY_PAC_URL","\
+ NM_SETTING_PROXY_PAC_SCRIPT
/*----------------------------------------------------------------------------*/
static char *
wep_key_type_to_string (NMWepKeyType type)
@@ -2100,6 +2136,86 @@ DEFINE_GETTER (nmc_property_vxlan_get_rsc, NM_SETTING_VXLAN_RSC)
DEFINE_GETTER (nmc_property_vxlan_get_l2_miss, NM_SETTING_VXLAN_L2_MISS)
DEFINE_GETTER (nmc_property_vxlan_get_l3_miss, NM_SETTING_VXLAN_L3_MISS)
+/* --- NM_SETTING_PROXY_SETTING_NAME property get functions --- */
+DEFINE_GETTER (nmc_property_proxy_get_http_proxy, NM_SETTING_PROXY_HTTP_PROXY)
+DEFINE_GETTER (nmc_property_proxy_get_http_port, NM_SETTING_PROXY_HTTP_PORT)
+DEFINE_GETTER (nmc_property_proxy_get_http_default, NM_SETTING_PROXY_HTTP_DEFAULT)
+DEFINE_GETTER (nmc_property_proxy_get_ssl_proxy, NM_SETTING_PROXY_SSL_PROXY)
+DEFINE_GETTER (nmc_property_proxy_get_ssl_port, NM_SETTING_PROXY_SSL_PORT)
+DEFINE_GETTER (nmc_property_proxy_get_ftp_proxy, NM_SETTING_PROXY_FTP_PROXY)
+DEFINE_GETTER (nmc_property_proxy_get_ftp_port, NM_SETTING_PROXY_FTP_PORT)
+DEFINE_GETTER (nmc_property_proxy_get_socks_proxy, NM_SETTING_PROXY_SOCKS_PROXY)
+DEFINE_GETTER (nmc_property_proxy_get_socks_port, NM_SETTING_PROXY_SOCKS_PORT)
+DEFINE_GETTER (nmc_property_proxy_get_socks_version_5, NM_SETTING_PROXY_SOCKS_VERSION_5)
+DEFINE_GETTER (nmc_property_proxy_get_no_proxy_for, NM_SETTING_PROXY_NO_PROXY_FOR)
+DEFINE_GETTER (nmc_property_proxy_get_browser_only, NM_SETTING_PROXY_BROWSER_ONLY)
+DEFINE_GETTER (nmc_property_proxy_get_pac_url, NM_SETTING_PROXY_PAC_URL)
+DEFINE_GETTER (nmc_property_proxy_get_pac_script, NM_SETTING_PROXY_PAC_SCRIPT)
+
+static char *
+nmc_property_proxy_get_method (NMSetting *setting, NmcPropertyGetType get_type)
+{
+ NMSettingProxy *s_proxy = NM_SETTING_PROXY (setting);
+ NMSettingProxyMethod method;
+
+ method = nm_setting_proxy_get_method (s_proxy);
+ return nm_utils_enum_to_str (nm_setting_proxy_method_get_type (), method);
+}
+
+static gboolean
+nmc_property_proxy_set_method (NMSetting *setting, const char *prop,
+ const char *val, GError **error)
+{
+ NMSettingProxyMethod method;
+ gboolean ret;
+
+ ret = nm_utils_enum_from_str (nm_setting_proxy_method_get_type(), val,
+ (int *) &method, NULL);
+
+ if (!ret) {
+ gs_free const char **values = NULL;
+ gs_free char *values_str = NULL;
+
+ values = nm_utils_enum_get_values (nm_setting_proxy_method_get_type (),
+ NM_SETTING_PROXY_METHOD_AUTO,
+ G_MAXINT);
+ values_str = g_strjoinv (",", (char **) values);
+ g_set_error (error, 1, 0, _("invalid method '%s', use one of %s"),
+ val, values_str);
+
+ return FALSE;
+ }
+
+ g_object_set (setting, prop, method, NULL);
+ return TRUE;
+}
+
+/* No Proxy For */
+static gboolean
+nmc_property_proxy_set_no_proxy_for (NMSetting *setting, const char *prop, const char *val, GError **error)
+{
+ char **strv = NULL, **no_proxy_for = NULL, **iter;
+ GPtrArray *tmp_array = NULL;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ tmp_array = g_ptr_array_new ();
+ strv = nmc_strsplit_set (val, " \t,", 0);
+ for (iter = strv; iter && *iter; iter++) {
+ char *stripped = g_strstrip (*iter);
+
+ if (strlen (stripped))
+ g_ptr_array_add (tmp_array, g_strdup (stripped));
+ }
+ g_strfreev (strv);
+
+ g_ptr_array_add (tmp_array, NULL);
+ no_proxy_for = (char **) g_ptr_array_free (tmp_array, (tmp_array->len == 1));
+
+ g_object_set (setting, prop, no_proxy_for, NULL);
+ return TRUE;
+}
+
/*----------------------------------------------------------------------------*/
static void
@@ -2311,6 +2427,56 @@ ipv6_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
}
static void
+proxy_method_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
+{
+ NMSettingProxyMethod method;
+
+ method = nm_setting_proxy_get_method (NM_SETTING_PROXY (object));
+
+ switch (method) {
+ case NM_SETTING_PROXY_METHOD_AUTO:
+ g_object_set (object,
+ NM_SETTING_PROXY_HTTP_PROXY, NULL,
+ NM_SETTING_PROXY_HTTP_PORT, 0,
+ NM_SETTING_PROXY_HTTP_DEFAULT, FALSE,
+ NM_SETTING_PROXY_SSL_PROXY, NULL,
+ NM_SETTING_PROXY_SSL_PORT, 0,
+ NM_SETTING_PROXY_FTP_PROXY, NULL,
+ NM_SETTING_PROXY_FTP_PORT, 0,
+ NM_SETTING_PROXY_SOCKS_PROXY, NULL,
+ NM_SETTING_PROXY_SOCKS_PORT, 0,
+ NM_SETTING_PROXY_SOCKS_VERSION_5, FALSE,
+ NM_SETTING_PROXY_NO_PROXY_FOR, NULL,
+ NULL);
+
+ break;
+ case NM_SETTING_PROXY_METHOD_MANUAL:
+ g_object_set (object,
+ NM_SETTING_PROXY_PAC_URL, NULL,
+ NM_SETTING_PROXY_PAC_SCRIPT, NULL,
+ NULL);
+
+ break;
+ case NM_SETTING_PROXY_METHOD_NONE:
+ g_object_set (object,
+ NM_SETTING_PROXY_HTTP_PROXY, NULL,
+ NM_SETTING_PROXY_HTTP_PORT, 0,
+ NM_SETTING_PROXY_HTTP_DEFAULT, FALSE,
+ NM_SETTING_PROXY_SSL_PROXY, NULL,
+ NM_SETTING_PROXY_SSL_PORT, 0,
+ NM_SETTING_PROXY_FTP_PROXY, NULL,
+ NM_SETTING_PROXY_FTP_PORT, 0,
+ NM_SETTING_PROXY_SOCKS_PROXY, NULL,
+ NM_SETTING_PROXY_SOCKS_PORT, 0,
+ NM_SETTING_PROXY_SOCKS_VERSION_5, FALSE,
+ NM_SETTING_PROXY_NO_PROXY_FOR, NULL,
+ NM_SETTING_PROXY_PAC_URL, NULL,
+ NM_SETTING_PROXY_PAC_SCRIPT, NULL,
+ NULL);
+ }
+}
+
+static void
wireless_band_channel_changed_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
{
const char *value = NULL, *mode;
@@ -2388,6 +2554,15 @@ nmc_setting_ip6_connect_handlers (NMSettingIPConfig *setting)
}
void
+nmc_setting_proxy_connect_handlers (NMSettingProxy *setting)
+{
+ g_return_if_fail (NM_IS_SETTING_PROXY (setting));
+
+ g_signal_connect (setting, "notify::" NM_SETTING_PROXY_METHOD,
+ G_CALLBACK (proxy_method_changed_cb), NULL);
+}
+
+void
nmc_setting_wireless_connect_handlers (NMSettingWireless *setting)
{
g_return_if_fail (NM_IS_SETTING_WIRELESS (setting));
@@ -2460,6 +2635,10 @@ nmc_setting_custom_init (NMSetting *setting)
g_object_set (NM_SETTING_IP_CONFIG (setting),
NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO,
NULL);
+ } else if (NM_IS_SETTING_PROXY (setting)) {
+ g_object_set (NM_SETTING_PROXY (setting),
+ NM_SETTING_PROXY_METHOD, NM_SETTING_PROXY_METHOD_NONE,
+ NULL);
} else if (NM_IS_SETTING_TUN (setting)) {
g_object_set (NM_SETTING_TUN (setting),
NM_SETTING_TUN_MODE, NM_SETTING_TUN_MODE_TUN,
@@ -7787,6 +7966,113 @@ nmc_properties_init (void)
NULL,
NULL,
NULL);
+
+ /* Add editable properties for NM_SETTING_PROXY_SETTING_NAME */
+ nmc_add_prop_funcs (GLUE (PROXY, METHOD),
+ nmc_property_proxy_get_method,
+ nmc_property_proxy_set_method,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, HTTP_PROXY),
+ nmc_property_proxy_get_http_proxy,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, HTTP_PORT),
+ nmc_property_proxy_get_http_port,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, HTTP_DEFAULT),
+ nmc_property_proxy_get_http_default,
+ nmc_property_set_bool,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, SSL_PROXY),
+ nmc_property_proxy_get_ssl_proxy,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, SSL_PORT),
+ nmc_property_proxy_get_ssl_port,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, FTP_PROXY),
+ nmc_property_proxy_get_ftp_proxy,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, FTP_PORT),
+ nmc_property_proxy_get_ftp_port,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, SOCKS_PROXY),
+ nmc_property_proxy_get_socks_proxy,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, SOCKS_PORT),
+ nmc_property_proxy_get_socks_port,
+ nmc_property_set_uint,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, SOCKS_VERSION_5),
+ nmc_property_proxy_get_socks_version_5,
+ nmc_property_set_bool,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, NO_PROXY_FOR),
+ nmc_property_proxy_get_no_proxy_for,
+ nmc_property_proxy_set_no_proxy_for,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, BROWSER_ONLY),
+ nmc_property_proxy_get_browser_only,
+ nmc_property_set_bool,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, PAC_URL),
+ nmc_property_proxy_get_pac_url,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ nmc_add_prop_funcs (GLUE (PROXY, PAC_SCRIPT),
+ nmc_property_proxy_get_pac_script,
+ nmc_property_set_string,
+ NULL,
+ NULL,
+ NULL,
+ NULL);
}
void
@@ -9042,7 +9328,7 @@ setting_macvlan_details (NMSetting *setting, NmCli *nmc, const char *one_prop,
return TRUE;
}
- static gboolean
+static gboolean
setting_vxlan_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets)
{
NMSettingVxlan *s_vxlan = NM_SETTING_VXLAN (setting);
@@ -9083,6 +9369,46 @@ setting_vxlan_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gb
return TRUE;
}
+static gboolean
+setting_proxy_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets)
+{
+ NMSettingProxy *s_proxy = NM_SETTING_PROXY (setting);
+ NmcOutputField *tmpl, *arr;
+ size_t tmpl_len;
+
+ g_return_val_if_fail (NM_IS_SETTING_PROXY (s_proxy), FALSE);
+
+ tmpl = nmc_fields_setting_proxy;
+ tmpl_len = sizeof (nmc_fields_setting_proxy);
+ nmc->print_fields.indices = parse_output_fields (one_prop ? one_prop : NMC_FIELDS_SETTING_PROXY_ALL,
+ tmpl, FALSE, NULL, NULL);
+ arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES);
+ g_ptr_array_add (nmc->output_data, arr);
+
+ arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX);
+ set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting)));
+ set_val_str (arr, 1, nmc_property_proxy_get_method (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 2, nmc_property_proxy_get_http_proxy (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 3, nmc_property_proxy_get_http_port (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 4, nmc_property_proxy_get_http_default (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 5, nmc_property_proxy_get_ssl_proxy (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 6, nmc_property_proxy_get_ssl_port (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 7, nmc_property_proxy_get_ftp_proxy (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 8, nmc_property_proxy_get_ftp_port (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 9, nmc_property_proxy_get_socks_proxy (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 10, nmc_property_proxy_get_socks_port (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 11, nmc_property_proxy_get_socks_version_5 (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 12, nmc_property_proxy_get_no_proxy_for (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 13, nmc_property_proxy_get_browser_only (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 14, nmc_property_proxy_get_pac_url (setting, NMC_PROPERTY_GET_PRETTY));
+ set_val_str (arr, 15, nmc_property_proxy_get_pac_script (setting, NMC_PROPERTY_GET_PRETTY));
+ g_ptr_array_add (nmc->output_data, arr);
+
+ print_data (nmc); /* Print all data */
+
+ return TRUE;
+}
+
typedef struct {
const char *sname;
gboolean (*func) (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets);
@@ -9118,6 +9444,7 @@ static const SettingDetails detail_printers[] = {
{ NM_SETTING_IP_TUNNEL_SETTING_NAME, setting_ip_tunnel_details },
{ NM_SETTING_MACVLAN_SETTING_NAME, setting_macvlan_details },
{ NM_SETTING_VXLAN_SETTING_NAME, setting_vxlan_details },
+ { NM_SETTING_PROXY_SETTING_NAME, setting_proxy_details },
{ NULL },
};
diff --git a/clients/cli/settings.h b/clients/cli/settings.h
index 33900510fd..9ef9c270d2 100644
--- a/clients/cli/settings.h
+++ b/clients/cli/settings.h
@@ -32,6 +32,7 @@ NMSetting *nmc_setting_new_for_name (const char *name);
void nmc_setting_custom_init (NMSetting *setting);
void nmc_setting_ip4_connect_handlers (NMSettingIPConfig *setting);
void nmc_setting_ip6_connect_handlers (NMSettingIPConfig *setting);
+void nmc_setting_proxy_connect_handlers (NMSettingProxy *setting);
void nmc_setting_wireless_connect_handlers (NMSettingWireless *setting);
void nmc_setting_connection_connect_handlers (NMSettingConnection *setting, NMConnection *connection);
@@ -92,5 +93,6 @@ extern NmcOutputField nmc_fields_setting_tun[];
extern NmcOutputField nmc_fields_setting_ip_tunnel[];
extern NmcOutputField nmc_fields_setting_macvlan[];
extern NmcOutputField nmc_fields_setting_vxlan[];
+extern NmcOutputField nmc_fields_setting_proxy[];
#endif /* NMC_SETTINGS_H */