On Tue, 2016-06-28 at 16:45 -0500, Dan Williams wrote:
> On Wed, 2016-06-29 at 02:08 +0530, Atul Anand wrote:
> > 
> > Apologies for these stupid mistakes. And there's no reason to
> > export
> > ProxyConfig on DBus. Only useful property was pac-url which also
> > isn't
> > needed to be on Bus as the url is apparently passed into pacrunner.
> > Will remove them .
> No problem, they aren't stupid mistakes you've worked with the NM and

"*unless* you've worked with the NM"  I meant to say...

> GDBus code for a couple years.  Plus copy & paste is pretty standard
> for a new GObject :)  I'm pretty sure nobody writes them from
> scratch.
> 
> Dan
> 
> > 
> > Thanks!
> > 
> > On 6/29/16, Dan Williams <d...@redhat.com> wrote:
> > > 
> > > 
> > > On Fri, 2016-06-24 at 00:42 +0530, Atul Anand wrote:
> > > > 
> > > > 
> > > > A new Object NMProxyConfig added with properties for proxies,
> > > > PAC Url and PAC Script. Getters are setters implemented for
> > > > manipulating those fields.
> > > > 
> > > I couldn't find anywhere in the code that actually uses the
> > > GObject
> > > properties for the ProxyConfig object, it seems everything uses
> > > the
> > > accessors.  Which is fine, as long as the object isn't exported
> > > over D-
> > > Bus, and since I don't think it is, we probably don't need
> > > GObject
> > > properties on the ProxyConfig object yet.
> > > 
> > > Dan
> > > 
> > > > 
> > > > 
> > > > ---
> > > >  src/Makefile.am       |   4 +
> > > >  src/nm-proxy-config.c | 243
> > > > ++++++++++++++++++++++++++++++++++++++++++++++++++
> > > >  src/nm-proxy-config.h |  53 +++++++++++
> > > >  3 files changed, 300 insertions(+)
> > > >  create mode 100644 src/nm-proxy-config.c
> > > >  create mode 100644 src/nm-proxy-config.h
> > > > 
> > > > diff --git a/src/Makefile.am b/src/Makefile.am
> > > > index 5e289d9..700cfc4 100644
> > > > --- a/src/Makefile.am
> > > > +++ b/src/Makefile.am
> > > > @@ -415,6 +415,8 @@ libNetworkManager_la_SOURCES = \
> > > >         nm-exported-object.h \
> > > >         nm-firewall-manager.c \
> > > >         nm-firewall-manager.h \
> > > > +       nm-proxy-config.c \
> > > > +       nm-proxy-config.h \
> > > >         nm-ip4-config.c \
> > > >         nm-ip4-config.h \
> > > >         nm-ip6-config.c \
> > > > @@ -565,6 +567,8 @@ libnm_iface_helper_la_SOURCES = \
> > > >         \
> > > >         nm-exported-object.c \
> > > >         nm-exported-object.h \
> > > > +       nm-proxy-config.c \
> > > > +       nm-proxy-config.h \
> > > >         nm-ip4-config.c \
> > > >         nm-ip4-config.h \
> > > >         nm-ip6-config.c \
> > > > diff --git a/src/nm-proxy-config.c b/src/nm-proxy-config.c
> > > > new file mode 100644
> > > > index 0000000..93f9b21
> > > > --- /dev/null
> > > > +++ b/src/nm-proxy-config.c
> > > > @@ -0,0 +1,243 @@
> > > > +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-
> > > > offset: 4
> > > > -*- */
> > > > +
> > > > +#include "nm-default.h"
> > > > +
> > > > +#include "nm-proxy-config.h"
> > > > +
> > > > +#include <string.h>
> > > > +
> > > > +#include "nm-utils.h"
> > > > +#include "NetworkManagerUtils.h"
> > > > +
> > > > +#define NM_PROXY_CONFIG_GET_PRIVATE(o)
> > > > (G_TYPE_INSTANCE_GET_PRIVATE
> > > > ((o), NM_TYPE_PROXY_CONFIG, NMProxyConfigPrivate))
> > > > +
> > > > +G_DEFINE_TYPE (NMProxyConfig, nm_proxy_config, G_TYPE_OBJECT)
> > > > +
> > > > +typedef struct {
> > > > +       NMProxyConfigMethod method;
> > > > +       GPtrArray *proxies;
> > > > +       char *pac_url;
> > > > +       char *pac_script;
> > > > +} NMProxyConfigPrivate;
> > > > +
> > > > +NM_GOBJECT_PROPERTIES_DEFINE (NMProxyConfig,
> > > > +       PROP_METHOD,
> > > > +       PROP_PROXIES,
> > > > +       PROP_PAC_URL,
> > > > +       PROP_PAC_SCRIPT,
> > > > +);
> > > > +
> > > > +NMProxyConfig *
> > > > +nm_proxy_config_new (void)
> > > > +{
> > > > +       return NM_PROXY_CONFIG (g_object_new
> > > > (NM_TYPE_PROXY_CONFIG,
> > > > NULL));
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_set_method (NMProxyConfig *config,
> > > > NMProxyConfigMethod method)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       priv->method = method;
> > > > +}
> > > > +
> > > > +NMProxyConfigMethod
> > > > +nm_proxy_config_get_method (const NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       return priv->method;
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_reset_proxies (NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       if (priv->proxies->len !=0) {
> > > > +               g_ptr_array_set_size (priv->proxies, 0);
> > > > +               _notify (config, PROP_PROXIES);
> > > > +       }
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_add_proxy (NMProxyConfig *config, const char
> > > > *proxy)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +       int i;
> > > > +
> > > > +       g_return_if_fail (proxy != NULL);
> > > > +       g_return_if_fail (proxy[0] != '\0');
> > > > +
> > > > +       for (i = 0; i < priv->proxies->len; i++)
> > > > +               if (!g_strcmp0 (g_ptr_array_index (priv-
> > > > > 
> > > > > proxies,
> > > > i), proxy))
> > > > +                       return;
> > > > +
> > > > +       g_ptr_array_add (priv->proxies, g_strdup (proxy));
> > > > +       _notify (config, PROP_PROXIES);
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_del_proxy (NMProxyConfig *config, guint i)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       g_return_if_fail (i < priv->proxies->len);
> > > > +
> > > > +       g_ptr_array_remove_index (priv->proxies, i);
> > > > +       _notify (config, PROP_PROXIES);
> > > > +}
> > > > +
> > > > +guint32
> > > > +nm_proxy_config_get_num_proxies (const NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       return priv->proxies->len;
> > > > +}
> > > > +
> > > > +const char *
> > > > +nm_proxy_config_get_proxy (const NMProxyConfig *config, guint
> > > > i)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       return g_ptr_array_index (priv->proxies, i);
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_set_pac_url (NMProxyConfig *config, const char
> > > > *url)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       g_free (priv->pac_url);
> > > > +       priv->pac_url = g_strdup (url);
> > > > +}
> > > > +
> > > > +const char *
> > > > +nm_proxy_config_get_pac_url (const NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       return priv->pac_url;
> > > > +}
> > > > +
> > > > +void
> > > > +nm_proxy_config_set_pac_script (NMProxyConfig *config, const
> > > > char
> > > > *script)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       g_free (priv->pac_script);
> > > > +       priv->pac_script = g_strdup (script);
> > > > +}
> > > > +
> > > > +const char *
> > > > +nm_proxy_config_get_pac_script (const NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       return priv->pac_script;
> > > > +}
> > > > +
> > > > +static void
> > > > +nm_proxy_config_init (NMProxyConfig *config)
> > > > +{
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       priv->method = NM_PROXY_CONFIG_METHOD_NONE;
> > > > +       priv->proxies = g_ptr_array_new_with_free_func
> > > > (g_free);
> > > > +}
> > > > +
> > > > +static void
> > > > +finalize (GObject *object)
> > > > +{
> > > > +       NMProxyConfig *self = NM_PROXY_CONFIG (object);
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (self);
> > > > +
> > > > +       g_ptr_array_unref (priv->proxies);
> > > > +       g_free (priv->pac_url);
> > > > +       g_free (priv->pac_script);
> > > > +
> > > > +       G_OBJECT_CLASS (nm_proxy_config_parent_class)-
> > > > >finalize
> > > > (object);
> > > > +}
> > > > +
> > > > +static void
> > > > +get_property (GObject *object, guint prop_id,
> > > > +              GValue *value, GParamSpec *pspec)
> > > > +{
> > > > +       NMProxyConfig *config = NM_PROXY_CONFIG (object);
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (config);
> > > > +
> > > > +       switch (prop_id) {
> > > > +       case PROP_METHOD:
> > > > +               g_value_set_int (value, priv->method);
> > > > +               break;
> > > > +       case PROP_PROXIES:
> > > > +               nm_utils_g_value_set_strv (value, priv-
> > > > > 
> > > > > proxies);
> > > > +               break;
> > > > +       case PROP_PAC_URL:
> > > > +               g_value_set_string (value, priv->pac_url);
> > > > +               break;
> > > > +       case PROP_PAC_SCRIPT:
> > > > +               g_value_set_string (value, priv->pac_script);
> > > > +               break;
> > > > +       default:
> > > > +               G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
> > > > prop_id,
> > > > pspec);
> > > > +               break;
> > > > +       }
> > > > +}
> > > > +
> > > > +static void
> > > > +set_property (GObject *object,
> > > > +              guint prop_id,
> > > > +              const GValue *value,
> > > > +              GParamSpec *pspec)
> > > > +{
> > > > +       NMProxyConfig *self = NM_PROXY_CONFIG (object);
> > > > +       NMProxyConfigPrivate *priv =
> > > > NM_PROXY_CONFIG_GET_PRIVATE
> > > > (self);
> > > > +
> > > > +       switch (prop_id) {
> > > > +       case PROP_METHOD:
> > > > +               priv->method = g_value_get_int (value);
> > > > +               break;
> > > > +       default:
> > > > +               G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
> > > > prop_id,
> > > > pspec);
> > > > +               break;
> > > > +       }
> > > > +}
> > > > +
> > > > +static void
> > > > +nm_proxy_config_class_init (NMProxyConfigClass *klass)
> > > > +{
> > > > +       GObjectClass *object_class = G_OBJECT_CLASS (klass);
> > > > +
> > > > +       g_type_class_add_private (object_class, sizeof
> > > > (NMProxyConfigPrivate));
> > > > +
> > > > +       /* virtual methods */
> > > > +       object_class->get_property = get_property;
> > > > +       object_class->set_property = set_property;
> > > > +       object_class->finalize = finalize;
> > > > +
> > > > +       obj_properties[PROP_METHOD] =
> > > > +               g_param_spec_int (NM_PROXY_CONFIG_METHOD, "",
> > > > "",
> > > > +                                 0, G_MAXINT, 0,
> > > > +                                 G_PARAM_READWRITE |
> > > > +                                 G_PARAM_CONSTRUCT_ONLY |
> > > > +                                 G_PARAM_STATIC_STRINGS);
> > > > +       obj_properties[PROP_PROXIES] =
> > > > +               g_param_spec_boxed (NM_PROXY_CONFIG_PROXIES,
> > > > "",
> > > > "",
> > > > +                                   G_TYPE_STRV,
> > > > +                                   G_PARAM_READABLE |
> > > > +                                   G_PARAM_STATIC_STRINGS);
> > > > +       obj_properties[PROP_PAC_URL] =
> > > > +               g_param_spec_string (NM_PROXY_CONFIG_PAC_URL,
> > > > "",
> > > > "",
> > > > +                                    NULL,
> > > > +                                    G_PARAM_READABLE |
> > > > +                                    G_PARAM_STATIC_STRINGS);
> > > > +       obj_properties[PROP_PAC_SCRIPT] =
> > > > +               g_param_spec_string
> > > > (NM_PROXY_CONFIG_PAC_SCRIPT,
> > > > "",
> > > > "",
> > > > +                                    NULL,
> > > > +                                    G_PARAM_READABLE |
> > > > +                                    G_PARAM_STATIC_STRINGS);
> > > > +
> > > > +       g_object_class_install_properties (object_class,
> > > > _PROPERTY_ENUMS_LAST, obj_properties);
> > > > +}
> > > > diff --git a/src/nm-proxy-config.h b/src/nm-proxy-config.h
> > > > new file mode 100644
> > > > index 0000000..b709e82
> > > > --- /dev/null
> > > > +++ b/src/nm-proxy-config.h
> > > > @@ -0,0 +1,53 @@
> > > > +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-
> > > > offset: 4
> > > > -*- */
> > > > +
> > > > +#include "nm-default.h"
> > > > +
> > > > +#ifndef __NETWORKMANAGER_PROXY_CONFIG_H__
> > > > +#define __NETWORKMANAGER_PROXY_CONFIG_H__
> > > > +
> > > > +typedef enum {
> > > > +       NM_PROXY_CONFIG_METHOD_NONE = 0,
> > > > +       NM_PROXY_CONFIG_METHOD_AUTO,
> > > > +       NM_PROXY_CONFIG_METHOD_MANUAL
> > > > +} NMProxyConfigMethod;
> > > > +
> > > > +#define NM_TYPE_PROXY_CONFIG (nm_proxy_config_get_type ())
> > > > +#define NM_PROXY_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST
> > > > ((obj),
> > > > NM_TYPE_PROXY_CONFIG, NMProxyConfig))
> > > > +#define NM_PROXY_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST
> > > > ((klass), NM_TYPE_PROXY_CONFIG, NMProxyConfigClass))
> > > > +#define NM_IS_PROXY_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE
> > > > ((obj),
> > > > NM_TYPE_PROXY_CONFIG))
> > > > +#define NM_IS_PROXY_CONFIG_CLASS(klass)
> > > > (G_TYPE_CHECK_CLASS_TYPE
> > > > ((klass), NM_TYPE_PROXY_CONFIG))
> > > > +#define NM_PROXY_CONFIG_GET_CLASS(obj)
> > > > (G_TYPE_INSTANCE_GET_CLASS
> > > > ((obj), NM_TYPE_PROXY_CONFIG, NMProxyConfigClass))
> > > > +
> > > > +struct _NMProxyConfig {
> > > > +       GObject parent;
> > > > +};
> > > > +
> > > > +typedef struct {
> > > > +       GObjectClass parent;
> > > > +} NMProxyConfigClass;
> > > > +
> > > > +#define NM_PROXY_CONFIG_METHOD "method"
> > > > +#define NM_PROXY_CONFIG_PROXIES "proxies"
> > > > +#define NM_PROXY_CONFIG_PAC_URL "pac-url"
> > > > +#define NM_PROXY_CONFIG_PAC_SCRIPT "pac-script"
> > > > +
> > > > +GType nm_proxy_config_get_type (void);
> > > > +
> > > > +NMProxyConfig * nm_proxy_config_new (void);
> > > > +
> > > > +void nm_proxy_config_set_method (NMProxyConfig *config,
> > > > NMProxyConfigMethod method);
> > > > +NMProxyConfigMethod nm_proxy_config_get_method (const
> > > > NMProxyConfig
> > > > *config);
> > > > +
> > > > +void nm_proxy_config_reset_proxies (NMProxyConfig *config);
> > > > +void nm_proxy_config_add_proxy (NMProxyConfig *config, const
> > > > char
> > > > *proxy);
> > > > +void nm_proxy_config_del_proxy (NMProxyConfig *config, guint
> > > > i);
> > > > +guint32 nm_proxy_config_get_num_proxies (const NMProxyConfig
> > > > *config);
> > > > +const char * nm_proxy_config_get_proxy (const NMProxyConfig
> > > > *config,
> > > > guint i);
> > > > +
> > > > +void nm_proxy_config_set_pac_url (NMProxyConfig *config, const
> > > > char
> > > > *url);
> > > > +const char * nm_proxy_config_get_pac_url (const NMProxyConfig
> > > > *config);
> > > > +
> > > > +void nm_proxy_config_set_pac_script (NMProxyConfig *config,
> > > > const
> > > > char *script);
> > > > +const char * nm_proxy_config_get_pac_script (const
> > > > NMProxyConfig
> > > > *config);
> > > > +
> > > > +#endif /* __NETWORKMANAGER_PROXY_CONFIG_H__ */
> _______________________________________________
> networkmanager-list mailing list
> networkmanager-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/networkmanager-list
_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to