538 lines
17 KiB
Diff
538 lines
17 KiB
Diff
|
From f6aab7bc2a821117b2079f7504ab444dd13f4708 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan-Michael Brummer <jan.brummer@tabos.org>
|
||
|
Date: Tue, 16 May 2023 15:10:53 +0200
|
||
|
Subject: [PATCH 1/7] Guard PxManager test with pacrunner-duktape option (#215)
|
||
|
|
||
|
Fixes: https://github.com/libproxy/libproxy/issues/213
|
||
|
---
|
||
|
tests/meson.build | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/tests/meson.build b/tests/meson.build
|
||
|
index 4ae8e7d..c8fe11f 100644
|
||
|
--- a/tests/meson.build
|
||
|
+++ b/tests/meson.build
|
||
|
@@ -17,7 +17,7 @@ if get_option('tests')
|
||
|
env: envs
|
||
|
)
|
||
|
|
||
|
- if soup_dep.found()
|
||
|
+ if soup_dep.found() and get_option('pacrunner-duktape')
|
||
|
px_manager_test = executable('test-px-manager',
|
||
|
['px-manager-test.c', 'px-manager-helper.c'],
|
||
|
include_directories: px_backend_inc,
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From 917e8be8756ae8f7bf502c23499fd6a605e9871e Mon Sep 17 00:00:00 2001
|
||
|
From: Thomas Klausner <wiz@gatalith.at>
|
||
|
Date: Wed, 17 May 2023 21:05:44 +0200
|
||
|
Subject: [PATCH 2/7] Fix build on NetBSD (#220)
|
||
|
|
||
|
Closes #219
|
||
|
---
|
||
|
src/backend/plugins/pacrunner-duktape/pacrunner-duktape.c | 1 +
|
||
|
1 file changed, 1 insertion(+)
|
||
|
|
||
|
diff --git a/src/backend/plugins/pacrunner-duktape/pacrunner-duktape.c b/src/backend/plugins/pacrunner-duktape/pacrunner-duktape.c
|
||
|
index 3845fca..40137ca 100644
|
||
|
--- a/src/backend/plugins/pacrunner-duktape/pacrunner-duktape.c
|
||
|
+++ b/src/backend/plugins/pacrunner-duktape/pacrunner-duktape.c
|
||
|
@@ -26,6 +26,7 @@
|
||
|
#include <ws2tcpip.h>
|
||
|
#else
|
||
|
#include <netdb.h>
|
||
|
+#include <netinet/in.h>
|
||
|
#endif
|
||
|
|
||
|
#include "pacrunner-duktape.h"
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From 383681b0111e29bafe513cbbf4c6fe6e7129714f Mon Sep 17 00:00:00 2001
|
||
|
From: David King <amigadave@amigadave.com>
|
||
|
Date: Mon, 22 May 2023 06:59:06 +0100
|
||
|
Subject: [PATCH 3/7] Install libpxbackend into pkglibdir (#223)
|
||
|
|
||
|
Fixes: https://github.com/libproxy/libproxy/issues/222
|
||
|
---
|
||
|
meson.build | 2 +-
|
||
|
src/backend/meson.build | 4 +++-
|
||
|
2 files changed, 4 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/meson.build b/meson.build
|
||
|
index f209f60..b6bda0d 100644
|
||
|
--- a/meson.build
|
||
|
+++ b/meson.build
|
||
|
@@ -12,7 +12,7 @@ root_dir = include_directories('.')
|
||
|
|
||
|
px_prefix = get_option('prefix')
|
||
|
datadir = get_option('datadir')
|
||
|
-px_libdir = join_paths(px_prefix, get_option('libdir'))
|
||
|
+pkglibdir = join_paths(px_prefix, get_option('libdir'), 'libproxy')
|
||
|
girdir = get_option('datadir') / 'gir-1.0'
|
||
|
typelibdir = get_option('libdir') / 'girepository-1.0'
|
||
|
vapidir = get_option('datadir') / 'vala' / 'vapi'
|
||
|
diff --git a/src/backend/meson.build b/src/backend/meson.build
|
||
|
index c8be5da..ce5a242 100644
|
||
|
--- a/src/backend/meson.build
|
||
|
+++ b/src/backend/meson.build
|
||
|
@@ -37,7 +37,9 @@ px_backend = shared_library(
|
||
|
px_backend_sources,
|
||
|
dependencies: px_backend_deps,
|
||
|
c_args: px_backend_c_args,
|
||
|
- install: true
|
||
|
+ install: true,
|
||
|
+ install_dir: pkglibdir,
|
||
|
+ install_rpath: pkglibdir
|
||
|
)
|
||
|
|
||
|
px_backend_dep = declare_dependency(
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From d32f1e65bf54d5d9cae9e9f57d04ce34005b90f0 Mon Sep 17 00:00:00 2001
|
||
|
From: Thomas Klausner <wiz@gatalith.at>
|
||
|
Date: Mon, 22 May 2023 08:56:50 +0200
|
||
|
Subject: [PATCH 4/7] Move glib2 inclusion out of c++ protection (#227)
|
||
|
|
||
|
Fixes usage of header file from C++
|
||
|
|
||
|
Addresses one part of #226.
|
||
|
---
|
||
|
src/libproxy/proxy.h | 4 ++--
|
||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/libproxy/proxy.h b/src/libproxy/proxy.h
|
||
|
index cf4fc34..1289f41 100644
|
||
|
--- a/src/libproxy/proxy.h
|
||
|
+++ b/src/libproxy/proxy.h
|
||
|
@@ -22,12 +22,12 @@
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
+#include <gio/gio.h>
|
||
|
+
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
-#include <gio/gio.h>
|
||
|
-
|
||
|
/**
|
||
|
* SECTION:px-proxy
|
||
|
* @short_description: A convient helper for using proxy servers
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From 14430634e1bb003c5f6e7b83caca60c08e5579bd Mon Sep 17 00:00:00 2001
|
||
|
From: Jan-Michael Brummer <jan.brummer@tabos.org>
|
||
|
Date: Mon, 22 May 2023 11:01:00 +0200
|
||
|
Subject: [PATCH 5/7] Replace libsoup with glib socket service functions (#228)
|
||
|
|
||
|
---
|
||
|
meson.build | 1 -
|
||
|
tests/config-kde-test.c | 4 +-
|
||
|
tests/data/px-manager-pac | 6 +-
|
||
|
tests/data/sample-kde-proxy-disabled | 2 +-
|
||
|
tests/data/sample-kde-proxy-pac | 2 +-
|
||
|
tests/meson.build | 4 +-
|
||
|
tests/px-manager-test.c | 143 ++++++++++++++++++++++-----
|
||
|
7 files changed, 127 insertions(+), 35 deletions(-)
|
||
|
|
||
|
diff --git a/meson.build b/meson.build
|
||
|
index b6bda0d..49a5fb4 100644
|
||
|
--- a/meson.build
|
||
|
+++ b/meson.build
|
||
|
@@ -106,7 +106,6 @@ endif
|
||
|
|
||
|
glib_dep = dependency('glib-2.0', version: '>= 2.71.3')
|
||
|
gio_dep = dependency('gio-2.0', version: '>= 2.71.3')
|
||
|
-soup_dep = dependency('libsoup-3.0', required: get_option('tests'))
|
||
|
curl_dep = dependency('libcurl', required: get_option('curl'))
|
||
|
ws2_32_dep = cc.find_library('ws2_32', required : with_platform_windows)
|
||
|
gsettings_desktop_schema = dependency('gsettings-desktop-schemas', required: get_option('config-gnome'))
|
||
|
diff --git a/tests/config-kde-test.c b/tests/config-kde-test.c
|
||
|
index 5129384..07f83f9 100644
|
||
|
--- a/tests/config-kde-test.c
|
||
|
+++ b/tests/config-kde-test.c
|
||
|
@@ -168,9 +168,9 @@ test_config_kde_pac (void)
|
||
|
|
||
|
config = px_manager_get_configuration (manager, uri, &error);
|
||
|
if (test.success)
|
||
|
- g_assert_cmpstr (config[0], ==, "pac+http://127.0.0.1/test.pac");
|
||
|
+ g_assert_cmpstr (config[0], ==, "pac+http://127.0.0.1/px-manager-sample.pac");
|
||
|
else
|
||
|
- g_assert_cmpstr (config[0], !=, "pac+http://127.0.0.1/test.pac");
|
||
|
+ g_assert_cmpstr (config[0], !=, "pac+http://127.0.0.1/px-manager-sample.pac");
|
||
|
|
||
|
g_clear_object (&manager);
|
||
|
}
|
||
|
diff --git a/tests/data/px-manager-pac b/tests/data/px-manager-pac
|
||
|
index 2ff4000..cb74134 100644
|
||
|
--- a/tests/data/px-manager-pac
|
||
|
+++ b/tests/data/px-manager-pac
|
||
|
@@ -1,5 +1,5 @@
|
||
|
PROXY_ENABLED="yes"
|
||
|
-HTTP_PROXY="pac+http://127.0.0.1:1983/test.pac"
|
||
|
-HTTPS_PROXY="pac+http://127.0.0.1:1983/test.pac"
|
||
|
-FTP_PROXY="pac+http://127.0.0.1:1983/test.pac"
|
||
|
+HTTP_PROXY="pac+http://127.0.0.1:1983/px-manager-sample.pac"
|
||
|
+HTTPS_PROXY="pac+http://127.0.0.1:1983/px-manager-sample.pac"
|
||
|
+FTP_PROXY="pac+http://127.0.0.1:1983/px-manager-sample.pac"
|
||
|
NO_PROXY="localhost, 127.0.0.1"
|
||
|
diff --git a/tests/data/sample-kde-proxy-disabled b/tests/data/sample-kde-proxy-disabled
|
||
|
index 9598abd..1c8aa46 100644
|
||
|
--- a/tests/data/sample-kde-proxy-disabled
|
||
|
+++ b/tests/data/sample-kde-proxy-disabled
|
||
|
@@ -2,7 +2,7 @@ ProxyUrlDisplayFlags=15
|
||
|
|
||
|
[Proxy Settings]
|
||
|
NoProxyFor=localhost,127.0.0.1
|
||
|
-Proxy Config Script=http://127.0.0.1/test.pac
|
||
|
+Proxy Config Script=http://127.0.0.1/px-manager-sample.pac
|
||
|
ProxyType=0
|
||
|
ReversedException=false
|
||
|
ftpProxy=ftp://127.0.0.1 8080
|
||
|
diff --git a/tests/data/sample-kde-proxy-pac b/tests/data/sample-kde-proxy-pac
|
||
|
index c0db824..c051879 100644
|
||
|
--- a/tests/data/sample-kde-proxy-pac
|
||
|
+++ b/tests/data/sample-kde-proxy-pac
|
||
|
@@ -2,7 +2,7 @@ ProxyUrlDisplayFlags=15
|
||
|
|
||
|
[Proxy Settings]
|
||
|
NoProxyFor=localhost,127.0.0.1
|
||
|
-Proxy Config Script=http://127.0.0.1/test.pac
|
||
|
+Proxy Config Script=http://127.0.0.1/px-manager-sample.pac
|
||
|
ProxyType=2
|
||
|
ReversedException=false
|
||
|
ftpProxy=ftp://127.0.0.1 8080
|
||
|
diff --git a/tests/meson.build b/tests/meson.build
|
||
|
index c8fe11f..f955f15 100644
|
||
|
--- a/tests/meson.build
|
||
|
+++ b/tests/meson.build
|
||
|
@@ -17,11 +17,11 @@ if get_option('tests')
|
||
|
env: envs
|
||
|
)
|
||
|
|
||
|
- if soup_dep.found() and get_option('pacrunner-duktape')
|
||
|
+ if get_option('pacrunner-duktape')
|
||
|
px_manager_test = executable('test-px-manager',
|
||
|
['px-manager-test.c', 'px-manager-helper.c'],
|
||
|
include_directories: px_backend_inc,
|
||
|
- dependencies: [soup_dep, glib_dep, px_backend_dep],
|
||
|
+ dependencies: [glib_dep, px_backend_dep],
|
||
|
)
|
||
|
test('PX Manager test',
|
||
|
px_manager_test,
|
||
|
diff --git a/tests/px-manager-test.c b/tests/px-manager-test.c
|
||
|
index bfd3112..311e632 100644
|
||
|
--- a/tests/px-manager-test.c
|
||
|
+++ b/tests/px-manager-test.c
|
||
|
@@ -22,7 +22,7 @@
|
||
|
#include "px-manager.h"
|
||
|
#include "px-manager-helper.h"
|
||
|
|
||
|
-#include <libsoup/soup.h>
|
||
|
+#include <gio/gio.h>
|
||
|
|
||
|
#define SERVER_PORT 1983
|
||
|
|
||
|
@@ -32,27 +32,120 @@ typedef struct {
|
||
|
} Fixture;
|
||
|
|
||
|
static void
|
||
|
-server_callback (SoupServer *server,
|
||
|
- SoupServerMessage *msg,
|
||
|
- const char *path,
|
||
|
- GHashTable *query,
|
||
|
- gpointer data)
|
||
|
+send_error (GOutputStream *out,
|
||
|
+ int error_code,
|
||
|
+ const char *reason)
|
||
|
{
|
||
|
- g_print ("%s: path %s\n", __FUNCTION__, path);
|
||
|
- soup_server_message_set_status (SOUP_SERVER_MESSAGE (msg), SOUP_STATUS_OK, NULL);
|
||
|
-
|
||
|
- if (g_strcmp0 (path, "/test.pac") == 0) {
|
||
|
- g_autofree char *pac = g_test_build_filename (G_TEST_DIST, "data", "px-manager-sample.pac", NULL);
|
||
|
- g_autofree char *pac_data = NULL;
|
||
|
- g_autoptr (GError) error = NULL;
|
||
|
- gsize len;
|
||
|
-
|
||
|
- if (!g_file_get_contents (pac, &pac_data, &len, &error)) {
|
||
|
- g_warning ("Could not read pac file: %s", error ? error->message : "");
|
||
|
- return;
|
||
|
+ char *res;
|
||
|
+
|
||
|
+ res = g_strdup_printf ("HTTP/1.0 %d %s\r\n\r\n"
|
||
|
+ "<html><head><title>%d %s</title></head>"
|
||
|
+ "<body>%s</body></html>",
|
||
|
+ error_code, reason,
|
||
|
+ error_code, reason,
|
||
|
+ reason);
|
||
|
+ g_output_stream_write_all (out, res, strlen (res), NULL, NULL, NULL);
|
||
|
+ g_free (res);
|
||
|
+}
|
||
|
+
|
||
|
+static gboolean
|
||
|
+on_incoming (GSocketService *service,
|
||
|
+ GSocketConnection *connection,
|
||
|
+ GObject *source_object)
|
||
|
+{
|
||
|
+ GOutputStream *out = NULL;
|
||
|
+ GInputStream *in = NULL;
|
||
|
+ g_autoptr (GDataInputStream) data = NULL;
|
||
|
+ g_autoptr (GFile) f = NULL;
|
||
|
+ g_autoptr (GError) error = NULL;
|
||
|
+ g_autoptr (GFileInputStream) file_in = NULL;
|
||
|
+ g_autoptr (GString) s = NULL;
|
||
|
+ g_autoptr (GFileInfo) info = NULL;
|
||
|
+ g_autofree char *line = NULL;
|
||
|
+ g_autofree char *unescaped = NULL;
|
||
|
+ g_autofree char *path = NULL;
|
||
|
+ char *escaped;
|
||
|
+ char *version;
|
||
|
+ char *tmp;
|
||
|
+
|
||
|
+ in = g_io_stream_get_input_stream (G_IO_STREAM (connection));
|
||
|
+ out = g_io_stream_get_output_stream (G_IO_STREAM (connection));
|
||
|
+
|
||
|
+ data = g_data_input_stream_new (in);
|
||
|
+ /* Be tolerant of input */
|
||
|
+ g_data_input_stream_set_newline_type (data, G_DATA_STREAM_NEWLINE_TYPE_ANY);
|
||
|
+
|
||
|
+ line = g_data_input_stream_read_line (data, NULL, NULL, NULL);
|
||
|
+
|
||
|
+ if (line == NULL) {
|
||
|
+ send_error (out, 400, "Invalid request");
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (!g_str_has_prefix (line, "GET ")) {
|
||
|
+ send_error (out, 501, "Only GET implemented");
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+
|
||
|
+ escaped = line + 4; /* Skip "GET " */
|
||
|
+
|
||
|
+ version = NULL;
|
||
|
+ tmp = strchr (escaped, ' ');
|
||
|
+ if (tmp == NULL) {
|
||
|
+ send_error (out, 400, "Bad Request");
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+ *tmp = 0;
|
||
|
+
|
||
|
+ version = tmp + 1;
|
||
|
+ if (!g_str_has_prefix (version, "HTTP/1.")) {
|
||
|
+ send_error(out, 505, "HTTP Version Not Supported");
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+
|
||
|
+ unescaped = g_uri_unescape_string (escaped, NULL);
|
||
|
+ path = g_test_build_filename (G_TEST_DIST, "data", unescaped, NULL);
|
||
|
+ f = g_file_new_for_path (path);
|
||
|
+
|
||
|
+ error = NULL;
|
||
|
+ file_in = g_file_read (f, NULL, &error);
|
||
|
+ if (file_in == NULL) {
|
||
|
+ send_error (out, 404, error->message);
|
||
|
+ goto out;
|
||
|
+ }
|
||
|
+
|
||
|
+ s = g_string_new ("HTTP/1.0 200 OK\r\n");
|
||
|
+
|
||
|
+ info = g_file_input_stream_query_info (file_in,
|
||
|
+ G_FILE_ATTRIBUTE_STANDARD_SIZE ","
|
||
|
+ G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
|
||
|
+ NULL, NULL);
|
||
|
+ if (info) {
|
||
|
+ const char *content_type;
|
||
|
+ char *mime_type;
|
||
|
+
|
||
|
+ if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_SIZE))
|
||
|
+ g_string_append_printf (s, "Content-Length: %"G_GINT64_FORMAT"\r\n", g_file_info_get_size (info));
|
||
|
+
|
||
|
+ if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE)) {
|
||
|
+ content_type = g_file_info_get_content_type (info);
|
||
|
+ if (content_type) {
|
||
|
+ mime_type = g_content_type_get_mime_type (content_type);
|
||
|
+ if (mime_type) {
|
||
|
+ g_string_append_printf (s, "Content-Type: %s\r\n", mime_type);
|
||
|
+ g_free (mime_type);
|
||
|
+ }
|
||
|
+ }
|
||
|
}
|
||
|
- soup_server_message_set_response (msg, "text/plain", SOUP_MEMORY_COPY, pac_data, len);
|
||
|
}
|
||
|
+ g_string_append (s, "\r\n");
|
||
|
+
|
||
|
+ if (g_output_stream_write_all (out, s->str, s->len, NULL, NULL, NULL)) {
|
||
|
+ g_output_stream_splice (out, G_INPUT_STREAM (file_in), 0, NULL, NULL);
|
||
|
+ }
|
||
|
+
|
||
|
+out:
|
||
|
+ return TRUE;
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
@@ -82,7 +175,7 @@ download_pac (gpointer data)
|
||
|
Fixture *self = data;
|
||
|
GBytes *pac;
|
||
|
|
||
|
- pac = px_manager_pac_download (self->manager, "http://127.0.0.1:1983/test.pac");
|
||
|
+ pac = px_manager_pac_download (self->manager, "http://127.0.0.1:1983/px-manager-sample.pac");
|
||
|
g_assert_nonnull (pac);
|
||
|
|
||
|
g_main_loop_quit (self->loop);
|
||
|
@@ -286,18 +379,18 @@ int
|
||
|
main (int argc,
|
||
|
char **argv)
|
||
|
{
|
||
|
- SoupServer *server = NULL;
|
||
|
+ g_autoptr (GSocketService) service = NULL;
|
||
|
g_autoptr (GError) error = NULL;
|
||
|
|
||
|
g_test_init (&argc, &argv, NULL);
|
||
|
|
||
|
- server = soup_server_new (NULL, NULL);
|
||
|
- if (!soup_server_listen_local (server, SERVER_PORT, SOUP_SERVER_LISTEN_IPV4_ONLY, &error)) {
|
||
|
- g_warning ("Could not create local server: %s", error ? error->message : "");
|
||
|
+ service = g_socket_service_new ();
|
||
|
+ if (!g_socket_listener_add_inet_port (G_SOCKET_LISTENER (service), SERVER_PORT, NULL, &error)) {
|
||
|
+ g_error ("Could not create server socket: %s", error ? error->message : "?");
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
- soup_server_add_handler (server, NULL, server_callback, NULL, NULL);
|
||
|
+ g_signal_connect (service, "incoming", G_CALLBACK (on_incoming), NULL);
|
||
|
|
||
|
g_test_add ("/pac/download", Fixture, "px-manager-direct", fixture_setup, test_pac_download, fixture_teardown);
|
||
|
g_test_add ("/pac/get_proxies_direct", Fixture, "px-manager-direct", fixture_setup, test_get_proxies_direct, fixture_teardown);
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From 59b5306bba8419e118ff6eaab45ea6f735616db9 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan-Michael Brummer <jan.brummer@tabos.org>
|
||
|
Date: Mon, 22 May 2023 14:06:46 +0200
|
||
|
Subject: [PATCH 6/7] Enforce online state for tests (#229)
|
||
|
|
||
|
Fixes: https://github.com/libproxy/libproxy/issues/224
|
||
|
---
|
||
|
src/backend/px-manager.c | 22 +++++++++++++++++++---
|
||
|
tests/px-manager-helper.c | 1 +
|
||
|
2 files changed, 20 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/src/backend/px-manager.c b/src/backend/px-manager.c
|
||
|
index 67a0b0f..3231aae 100644
|
||
|
--- a/src/backend/px-manager.c
|
||
|
+++ b/src/backend/px-manager.c
|
||
|
@@ -66,6 +66,7 @@ enum {
|
||
|
PROP_0,
|
||
|
PROP_CONFIG_PLUGIN,
|
||
|
PROP_CONFIG_OPTION,
|
||
|
+ PROP_FORCE_ONLINE,
|
||
|
LAST_PROP
|
||
|
};
|
||
|
|
||
|
@@ -89,6 +90,7 @@ struct _PxManager {
|
||
|
char *config_plugin;
|
||
|
char *config_option;
|
||
|
|
||
|
+ gboolean force_online;
|
||
|
gboolean online;
|
||
|
gboolean wpad;
|
||
|
GBytes *pac_data;
|
||
|
@@ -208,9 +210,14 @@ px_manager_constructed (GObject *object)
|
||
|
|
||
|
self->pac_data = NULL;
|
||
|
|
||
|
- self->network_monitor = g_network_monitor_get_default ();
|
||
|
- g_signal_connect_object (G_OBJECT (self->network_monitor), "network-changed", G_CALLBACK (px_manager_on_network_changed), self, 0);
|
||
|
- px_manager_on_network_changed (self->network_monitor, g_network_monitor_get_network_available (self->network_monitor), self);
|
||
|
+ if (!self->force_online) {
|
||
|
+ self->network_monitor = g_network_monitor_get_default ();
|
||
|
+ g_signal_connect_object (G_OBJECT (self->network_monitor), "network-changed", G_CALLBACK (px_manager_on_network_changed), self, 0);
|
||
|
+ px_manager_on_network_changed (self->network_monitor, g_network_monitor_get_network_available (self->network_monitor), self);
|
||
|
+ } else {
|
||
|
+ px_manager_on_network_changed (NULL, TRUE, self);
|
||
|
+ }
|
||
|
+
|
||
|
g_debug ("%s: Up and running", __FUNCTION__);
|
||
|
}
|
||
|
|
||
|
@@ -245,6 +252,9 @@ px_manager_set_property (GObject *object,
|
||
|
case PROP_CONFIG_OPTION:
|
||
|
self->config_option = g_strdup (g_value_get_string (value));
|
||
|
break;
|
||
|
+ case PROP_FORCE_ONLINE:
|
||
|
+ self->force_online = g_value_get_boolean (value);
|
||
|
+ break;
|
||
|
default:
|
||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||
|
}
|
||
|
@@ -287,6 +297,12 @@ px_manager_class_init (PxManagerClass *klass)
|
||
|
NULL,
|
||
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||
|
|
||
|
+ obj_properties[PROP_FORCE_ONLINE] = g_param_spec_boolean ("force-online",
|
||
|
+ NULL,
|
||
|
+ NULL,
|
||
|
+ FALSE,
|
||
|
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
|
||
|
+
|
||
|
g_object_class_install_properties (object_class, LAST_PROP, obj_properties);
|
||
|
}
|
||
|
|
||
|
diff --git a/tests/px-manager-helper.c b/tests/px-manager-helper.c
|
||
|
index e3129a2..10b43a2 100644
|
||
|
--- a/tests/px-manager-helper.c
|
||
|
+++ b/tests/px-manager-helper.c
|
||
|
@@ -27,5 +27,6 @@ px_test_manager_new (const char *config_plugin, const char *config_option)
|
||
|
{
|
||
|
return px_manager_new_with_options ("config-plugin", config_plugin,
|
||
|
"config-option", config_option,
|
||
|
+ "force-online", TRUE,
|
||
|
NULL);
|
||
|
}
|
||
|
--
|
||
|
2.40.1
|
||
|
|
||
|
|
||
|
From 4a4f54ca754689fb5a47dc7361e2530344ce82f5 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan-Michael Brummer <jan.brummer@tabos.org>
|
||
|
Date: Mon, 22 May 2023 17:24:02 +0200
|
||
|
Subject: [PATCH 7/7] Use glib-object header instead of gio (#230)
|
||
|
|
||
|
3rd party libraries (like QT) which defines same variable names will
|
||
|
clash if we use gio/gio.h in public proxy.h. Switch to minimal required
|
||
|
to fix compilation issues with QT5/6.
|
||
|
|
||
|
Fixes: https://github.com/libproxy/libproxy/issues/226
|
||
|
---
|
||
|
src/libproxy/proxy.h | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/libproxy/proxy.h b/src/libproxy/proxy.h
|
||
|
index 1289f41..d24dc0f 100644
|
||
|
--- a/src/libproxy/proxy.h
|
||
|
+++ b/src/libproxy/proxy.h
|
||
|
@@ -22,7 +22,7 @@
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
-#include <gio/gio.h>
|
||
|
+#include <glib-object.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
--
|
||
|
2.40.1
|
||
|
|