Blame src/nm-proxy-config.c

Packit Service b23acc
// SPDX-License-Identifier: GPL-2.0+
Packit Service b23acc
/*
Packit Service b23acc
 * Copyright (C) 2016 Atul Anand <atulhjp@gmail.com>.
Packit Service b23acc
 */
Packit Service b23acc
Packit Service b23acc
#include "nm-default.h"
Packit Service b23acc
Packit Service b23acc
#include "nm-proxy-config.h"
Packit Service b23acc
Packit Service b23acc
#include <stdlib.h>
Packit Service b23acc
Packit Service b23acc
#include "nm-core-internal.h"
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
typedef struct {
Packit Service b23acc
	NMProxyConfigMethod method;
Packit Service b23acc
	gboolean browser_only;
Packit Service b23acc
	char *pac_url;
Packit Service b23acc
	char *pac_script;
Packit Service b23acc
} NMProxyConfigPrivate;
Packit Service b23acc
Packit Service b23acc
struct _NMProxyConfig {
Packit Service b23acc
	GObject parent;
Packit Service b23acc
	NMProxyConfigPrivate _priv;
Packit Service b23acc
};
Packit Service b23acc
Packit Service b23acc
struct _NMProxyConfigClass {
Packit Service b23acc
	GObjectClass parent;
Packit Service b23acc
};
Packit Service b23acc
Packit Service b23acc
G_DEFINE_TYPE (NMProxyConfig, nm_proxy_config, G_TYPE_OBJECT)
Packit Service b23acc
Packit Service b23acc
#define NM_PROXY_CONFIG_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMProxyConfig, NM_IS_PROXY_CONFIG)
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
void
Packit Service b23acc
nm_proxy_config_set_method (NMProxyConfig *config, NMProxyConfigMethod method)
Packit Service b23acc
{
Packit Service b23acc
	NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	priv->method = method;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
NMProxyConfigMethod
Packit Service b23acc
nm_proxy_config_get_method (const NMProxyConfig *config)
Packit Service b23acc
{
Packit Service b23acc
	const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	return priv->method;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
void
Packit Service b23acc
nm_proxy_config_merge_setting (NMProxyConfig *config, NMSettingProxy *setting)
Packit Service b23acc
{
Packit Service b23acc
	const char *tmp = NULL;
Packit Service b23acc
	NMProxyConfigPrivate *priv;
Packit Service b23acc
	NMSettingProxyMethod method;
Packit Service b23acc
Packit Service b23acc
	if (!setting)
Packit Service b23acc
		return;
Packit Service b23acc
Packit Service b23acc
	g_return_if_fail (NM_IS_SETTING_PROXY (setting));
Packit Service b23acc
Packit Service b23acc
	priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	nm_clear_g_free (&priv->pac_script);
Packit Service b23acc
Packit Service b23acc
	method = nm_setting_proxy_get_method (setting);
Packit Service b23acc
	switch (method) {
Packit Service b23acc
	case NM_SETTING_PROXY_METHOD_AUTO:
Packit Service b23acc
		priv->method = NM_PROXY_CONFIG_METHOD_AUTO;
Packit Service b23acc
Packit Service b23acc
		/* Free DHCP Obtained PAC Url (i.e Option 252)
Packit Service b23acc
		 * only when libnm overrides it.
Packit Service b23acc
		 */
Packit Service b23acc
		tmp = nm_setting_proxy_get_pac_url (setting);
Packit Service b23acc
		if (tmp) {
Packit Service b23acc
			g_free (priv->pac_url);
Packit Service b23acc
			priv->pac_url = g_strdup (tmp);
Packit Service b23acc
		}
Packit Service b23acc
Packit Service b23acc
		tmp = nm_setting_proxy_get_pac_script (setting);
Packit Service b23acc
		priv->pac_script = g_strdup (tmp);
Packit Service b23acc
Packit Service b23acc
		break;
Packit Service b23acc
	case NM_SETTING_PROXY_METHOD_NONE:
Packit Service b23acc
		priv->method = NM_PROXY_CONFIG_METHOD_NONE;
Packit Service b23acc
		break;
Packit Service b23acc
	}
Packit Service b23acc
Packit Service b23acc
	priv->browser_only = nm_setting_proxy_get_browser_only (setting);
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
gboolean
Packit Service b23acc
nm_proxy_config_get_browser_only (const NMProxyConfig *config)
Packit Service b23acc
{
Packit Service b23acc
	const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	return priv->browser_only;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
void
Packit Service b23acc
nm_proxy_config_set_pac_url (NMProxyConfig *config, const char *url)
Packit Service b23acc
{
Packit Service b23acc
	NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	g_free (priv->pac_url);
Packit Service b23acc
	priv->pac_url = g_strdup (url);
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
const char *
Packit Service b23acc
nm_proxy_config_get_pac_url (const NMProxyConfig *config)
Packit Service b23acc
{
Packit Service b23acc
	const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	return priv->pac_url;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
void
Packit Service b23acc
nm_proxy_config_set_pac_script (NMProxyConfig *config, const char *script)
Packit Service b23acc
{
Packit Service b23acc
	NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	g_free (priv->pac_script);
Packit Service b23acc
	priv->pac_script = g_strdup (script);
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
const char *
Packit Service b23acc
nm_proxy_config_get_pac_script (const NMProxyConfig *config)
Packit Service b23acc
{
Packit Service b23acc
	const NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	return priv->pac_script;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
nm_proxy_config_init (NMProxyConfig *config)
Packit Service b23acc
{
Packit Service b23acc
	NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (config);
Packit Service b23acc
Packit Service b23acc
	priv->method = NM_PROXY_CONFIG_METHOD_NONE;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
NMProxyConfig *
Packit Service b23acc
nm_proxy_config_new (void)
Packit Service b23acc
{
Packit Service b23acc
	return NM_PROXY_CONFIG (g_object_new (NM_TYPE_PROXY_CONFIG, NULL));
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
finalize (GObject *object)
Packit Service b23acc
{
Packit Service b23acc
	NMProxyConfig *self = NM_PROXY_CONFIG (object);
Packit Service b23acc
	NMProxyConfigPrivate *priv = NM_PROXY_CONFIG_GET_PRIVATE (self);
Packit Service b23acc
Packit Service b23acc
	g_free (priv->pac_url);
Packit Service b23acc
	g_free (priv->pac_script);
Packit Service b23acc
Packit Service b23acc
	G_OBJECT_CLASS (nm_proxy_config_parent_class)->finalize (object);
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
nm_proxy_config_class_init (NMProxyConfigClass *klass)
Packit Service b23acc
{
Packit Service b23acc
	GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit Service b23acc
Packit Service b23acc
	object_class->finalize = finalize;
Packit Service b23acc
}