libpurple/network.c

Tue, 15 Oct 2024 00:47:42 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Tue, 15 Oct 2024 00:47:42 -0500
changeset 43011
ce3144e2bc33
parent 43010
9a3485b096c8
child 43253
0cc00d7d6215
permissions
-rw-r--r--

Port prefs to AdwSwitchRow

Now that we depend on Adwaita 1.4, we can flip the switch on using these (pun intended).

This also simplifies some extra tracking we needed to do for activations and focus, since the Adwaita widgets do that for us.

Testing Done:
Opened prefs, confirmed all the switches were there, and toggled them all without any warnings.

Also used the mnemonics to toggle the switches from the keyboard.

Reviewed at https://reviews.imfreedom.org/r/3582/

42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
1 /*
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
2 * Purple - Internet Messaging Library
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
4 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
7 * source distribution.
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
8 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
12 * any later version.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
13 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
17 * more details.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
18 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
19 * You should have received a copy of the GNU General Public License along with
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
21 */
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
22
37450
703722d83214 Update network.c for the dns code removal
Gary Kramlich <grim@reaperworld.com>
parents: 36031
diff changeset
23 #include <gio/gio.h>
703722d83214 Update network.c for the dns code removal
Gary Kramlich <grim@reaperworld.com>
parents: 36031
diff changeset
24
41682
289867067994 Clean up a bunch of stuff in internal.h
Gary Kramlich <grim@reaperworld.com>
parents: 41153
diff changeset
25 #include <fcntl.h>
289867067994 Clean up a bunch of stuff in internal.h
Gary Kramlich <grim@reaperworld.com>
parents: 41153
diff changeset
26
42280
e29c71fb13e9 Remove internal.h
Gary Kramlich <grim@reaperworld.com>
parents: 42118
diff changeset
27 #ifdef _WIN32
42285
fc89d66998c4 Fix the windows build by adding a missing include
Gary Kramlich <grim@reaperworld.com>
parents: 42280
diff changeset
28 # include "win32/libc_interface.h"
42280
e29c71fb13e9 Remove internal.h
Gary Kramlich <grim@reaperworld.com>
parents: 42118
diff changeset
29 # include <nspapi.h>
13156
539a637c61dc [gaim-migrate @ 15518]
Thomas Butter <tbutter@users.sourceforge.net>
parents: 13131
diff changeset
30 #endif
539a637c61dc [gaim-migrate @ 15518]
Thomas Butter <tbutter@users.sourceforge.net>
parents: 13131
diff changeset
31
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
32 #include "core.h"
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
33 #include "debug.h"
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
34 #include "network.h"
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
35 #include "prefs.h"
42344
c51d37734155 Rename account.[ch] to purpleaccount.[ch]
Gary Kramlich <grim@reaperworld.com>
parents: 42285
diff changeset
36 #include "purpleaccount.h"
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
37
37488
88afe246144e First stab at replacing network-manager with gio, this probably breaks win32, need to test and see
Gary Kramlich <grim@reaperworld.com>
parents: 37466
diff changeset
38 static gboolean force_online = FALSE;
24999
84d597b7e7c6 Add a -f/--force-online option to Pidgin which tells libpurple to claim the
Richard Laager <rlaager@pidgin.im>
parents: 24519
diff changeset
39
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
40 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
41 purple_network_set_public_ip(const char *ip)
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
42 {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
43 GSettings *settings = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
44
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
45 g_return_if_fail(ip != NULL);
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
46
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
47 /* XXX - Ensure the IP address is valid */
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8834
diff changeset
48
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
49 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
50 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
51 g_settings_set_string(settings, "address", ip);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
52 g_object_unref(settings);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
53 }
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
54
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
55 char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
56 purple_network_get_public_ip(void)
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
57 {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
58 GSettings *settings = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
59 char *ip = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
60
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
61 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
62 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
63 ip = g_settings_get_string(settings, "address");
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
64 g_object_unref(settings);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
65
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
66 return ip;
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
67 }
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
68
40110
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
69 static gchar *
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
70 purple_network_get_local_system_ip_from_gio(GSocketConnection *sockconn)
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
71 {
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
72 GSocketAddress *addr;
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
73 GInetSocketAddress *inetsockaddr;
40110
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
74 gchar *ip;
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
75
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
76 addr = g_socket_connection_get_local_address(sockconn, NULL);
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
77 if ((inetsockaddr = G_INET_SOCKET_ADDRESS(addr)) != NULL) {
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
78 GInetAddress *inetaddr =
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
79 g_inet_socket_address_get_address(inetsockaddr);
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
80 if (g_inet_address_get_family(inetaddr) == G_SOCKET_FAMILY_IPV4 &&
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
81 !g_inet_address_get_is_loopback(inetaddr)) {
40110
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
82 ip = g_inet_address_to_string(inetaddr);
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
83 g_object_unref(addr);
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
84 return ip;
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
85 }
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
86 }
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
87 g_object_unref(addr);
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
88
40110
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
89 return g_strdup("0.0.0.0");
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
90 }
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
91
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
92 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
93 * purple_network_is_ipv4:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
94 * @hostname: The hostname to be verified.
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
95 *
33894
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
96 * Checks, if specified hostname is valid ipv4 address.
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
97 *
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
98 * Returns: TRUE, if the hostname is valid.
33894
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
99 */
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
100 static gboolean
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
101 purple_network_is_ipv4(const gchar *hostname)
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
102 {
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
103 g_return_val_if_fail(hostname != NULL, FALSE);
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
104
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
105 /* We don't accept ipv6 here. */
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
106 if (strchr(hostname, ':') != NULL)
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
107 return FALSE;
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
108
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
109 return g_hostname_is_ip_address(hostname);
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
110 }
7e3ea8475aad Get rid of useless form of purple_network_ip_atoi
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33883
diff changeset
111
40663
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
112 void
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
113 purple_network_discover_my_ip(void)
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
114 {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
115 GSettings *settings = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
116
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
117 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
118 purple_core_get_settings_backend());
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8251
diff changeset
119
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 8251
diff changeset
120 /* Check if the user specified an IP manually */
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
121 if(!g_settings_get_boolean(settings, "autodetect")) {
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
122 char *ip = purple_network_get_public_ip();
15116
037b787407ba [gaim-migrate @ 17838]
Mark Doliner <markdoliner@pidgin.im>
parents: 14959
diff changeset
123 /* Make sure the IP address entered by the user is valid */
40663
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
124 if (ip != NULL && purple_network_is_ipv4(ip)) {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
125 g_free(ip);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
126 g_clear_object(&settings);
40663
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
127 return;
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
128 }
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
129 g_free(ip);
40663
2453bef0abe7 Cleanup local IP getters
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40659
diff changeset
130 }
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
131
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
132 /* TODO: Actually discover the IP address. */
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
133
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
134 g_clear_object(&settings);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
135 }
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
136
40110
bc2b94f2595a Make purple_network_get_my_ip_from_gio return non-const.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40107
diff changeset
137 gchar *
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
138 purple_network_get_my_ip_from_gio(GSocketConnection *sockconn)
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
139 {
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
140 GSettings *settings = NULL;
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
141
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
142 settings = g_settings_new_with_backend("im.pidgin.Purple.Network.IP",
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
143 purple_core_get_settings_backend());
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
144
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
145 /* Check if the user specified an IP manually */
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
146 if(!g_settings_get_boolean(settings, "autodetect")) {
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
147 char *ip = purple_network_get_public_ip();
42118
97bc84c5233e Remove our stun code
Gary Kramlich <grim@reaperworld.com>
parents: 42032
diff changeset
148
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
149 /* Make sure the IP address entered by the user is valid */
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
150 if(ip != NULL && purple_network_is_ipv4(ip)) {
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
151 g_clear_object(&settings);
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
152 return ip;
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
153 }
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
154
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
155 g_free(ip);
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
156 }
43010
9a3485b096c8 Port network settings to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42997
diff changeset
157 g_clear_object(&settings);
40107
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
158
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
159 /* Just fetch the IP of the local system */
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
160 return purple_network_get_local_system_ip_from_gio(sockconn);
6320c272e8b2 xmpp: Convert unencrypted connections to pure GIO.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40017
diff changeset
161 }
11391
d172e72988cc [gaim-migrate @ 13620]
Adam Warrington <awarring@users.sourceforge.net>
parents: 11336
diff changeset
162
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
163 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
164 purple_network_is_available(void)
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
165 {
37488
88afe246144e First stab at replacing network-manager with gio, this probably breaks win32, need to test and see
Gary Kramlich <grim@reaperworld.com>
parents: 37466
diff changeset
166 if(force_online) {
24999
84d597b7e7c6 Add a -f/--force-online option to Pidgin which tells libpurple to claim the
Richard Laager <rlaager@pidgin.im>
parents: 24519
diff changeset
167 return TRUE;
23041
58661da65e36 Changes suggested by QuLogic to fix my broken changes to the NetworkManager
Richard Laager <rlaager@pidgin.im>
parents: 23040
diff changeset
168 }
24519
d4af3d043211 Improve our NetworkManager support in a couple of ways:
Richard Laager <rlaager@pidgin.im>
parents: 24044
diff changeset
169
37488
88afe246144e First stab at replacing network-manager with gio, this probably breaks win32, need to test and see
Gary Kramlich <grim@reaperworld.com>
parents: 37466
diff changeset
170 return g_network_monitor_get_network_available(g_network_monitor_get_default());
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
171 }
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
172
24999
84d597b7e7c6 Add a -f/--force-online option to Pidgin which tells libpurple to claim the
Richard Laager <rlaager@pidgin.im>
parents: 24519
diff changeset
173 void
41840
fe350460fb1c Remove C99-obsoleted constructs
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41828
diff changeset
174 purple_network_force_online(void)
24999
84d597b7e7c6 Add a -f/--force-online option to Pidgin which tells libpurple to claim the
Richard Laager <rlaager@pidgin.im>
parents: 24519
diff changeset
175 {
84d597b7e7c6 Add a -f/--force-online option to Pidgin which tells libpurple to claim the
Richard Laager <rlaager@pidgin.im>
parents: 24519
diff changeset
176 force_online = TRUE;
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
177 }
23039
c9b53691fe42 A patch from QuLogic to replace the libnm_glib calls with straight DBus
Richard Laager <rlaager@pidgin.im>
parents: 22735
diff changeset
178
36028
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
179 gboolean
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
180 _purple_network_set_common_socket_flags(int fd)
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
181 {
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
182 int flags;
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
183 gboolean succ = TRUE;
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
184
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
185 g_return_val_if_fail(fd >= 0, FALSE);
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
186
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
187 flags = fcntl(fd, F_GETFL);
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
188
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
189 if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) != 0) {
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
190 purple_debug_warning("network",
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
191 "Couldn't set O_NONBLOCK flag\n");
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
192 succ = FALSE;
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
193 }
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
194
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
195 #ifndef _WIN32
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
196 if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
197 purple_debug_warning("network",
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
198 "Couldn't set FD_CLOEXEC flag\n");
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
199 succ = FALSE;
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
200 }
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
201 #endif
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
202
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
203 return succ;
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
204 }
fc5300cb3617 Get rid of fair amount of copy-pasta and coverity warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35991
diff changeset
205
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
206 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
207 purple_network_init(void)
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
208 {
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents:
diff changeset
209 }
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
210
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
211 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15708
diff changeset
212 purple_network_uninit(void)
14758
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
213 {
13b9adc9efd2 [gaim-migrate @ 17448]
Sean Egan <seanegan@pidgin.im>
parents: 14329
diff changeset
214 }

mercurial