diff options
author | Jeff Johnston | 2021-01-22 02:32:04 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2021-04-23 16:06:25 +0000 |
commit | 42fcea372ad237bc43e78496c1cd38343dfad785 (patch) | |
tree | 1422723b43c39bb6c7c59f1c084c0419252725b6 | |
parent | 0493ef0515b3ce82e3490d0e1a977be1a48a8a17 (diff) | |
download | eclipse.platform.team-42fcea372ad237bc43e78496c1cd38343dfad785.tar.gz eclipse.platform.team-42fcea372ad237bc43e78496c1cd38343dfad785.tar.xz eclipse.platform.team-42fcea372ad237bc43e78496c1cd38343dfad785.zip |
Bug 566638 - Make linux proxy support work for all archsI20210423-1800
- add new o.e.core.net.linux fragment that is implemented using
JNA and can support multiple architectures
- make o.e.core.net.linux.x86_64 an empty fragment that requires
new o.e.core.net.linux
- remove UnixProxyProvider as it is no longer used
Change-Id: I612371fa1d664f2b312eefb1554d599ff583d44b
Signed-off-by: Jeff Johnston <jjohnstn@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.team/+/175195
Tested-by: Platform Bot <platform-bot@eclipse.org>
Reviewed-by: Alexander Kurtakov <akurtako@redhat.com>
16 files changed, 311 insertions, 108 deletions
diff --git a/bundles/org.eclipse.core.net.linux.x86_64/.classpath b/bundles/org.eclipse.core.net.linux.x86_64/.classpath index 01836c484..2a6645595 100644 --- a/bundles/org.eclipse.core.net.linux.x86_64/.classpath +++ b/bundles/org.eclipse.core.net.linux.x86_64/.classpath @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry kind="src" path="src"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/bundles/org.eclipse.core.net.linux.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.net.linux.x86_64/META-INF/MANIFEST.MF index 6cd2dc6c9..c213d6031 100644 --- a/bundles/org.eclipse.core.net.linux.x86_64/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.core.net.linux.x86_64/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: %fragmentName Bundle-Vendor: %providerName Bundle-Localization: fragment Bundle-SymbolicName: org.eclipse.core.net.linux.x86_64;singleton:=true -Bundle-Version: 1.2.400.qualifier +Bundle-Version: 1.2.500.qualifier Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0" Eclipse-PlatformFilter: (& (osgi.os=linux) (osgi.arch=x86_64)) Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/bundles/org.eclipse.core.net.linux.x86_64/META-INF/p2.inf b/bundles/org.eclipse.core.net.linux.x86_64/META-INF/p2.inf new file mode 100644 index 000000000..b1c174613 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux.x86_64/META-INF/p2.inf @@ -0,0 +1 @@ +requires.0.namespace=org.eclipse.core.net.linux diff --git a/bundles/org.eclipse.core.net.linux.x86_64/build.properties b/bundles/org.eclipse.core.net.linux.x86_64/build.properties index 4a611fc0e..18f77db2a 100644 --- a/bundles/org.eclipse.core.net.linux.x86_64/build.properties +++ b/bundles/org.eclipse.core.net.linux.x86_64/build.properties @@ -1,5 +1,5 @@ ############################################################################### -# Copyright (c) 2008, 2009 IBM Corporation and others. +# Copyright (c) 2008, 2021 IBM Corporation and others. # # This program and the accompanying materials # are made available under the terms of the Eclipse Public License 2.0 @@ -14,7 +14,5 @@ bin.includes = fragment.properties,\ .,\ META-INF/,\ - about.html,\ - libgnomeproxy-1.0.0.so + about.html src.includes = about.html -source.. = src/ diff --git a/bundles/org.eclipse.core.net.linux.x86_64/libgnomeproxy-1.0.0.so b/bundles/org.eclipse.core.net.linux.x86_64/libgnomeproxy-1.0.0.so Binary files differdeleted file mode 100644 index ab71687a2..000000000 --- a/bundles/org.eclipse.core.net.linux.x86_64/libgnomeproxy-1.0.0.so +++ /dev/null diff --git a/bundles/org.eclipse.core.net.linux.x86_64/pom.xml b/bundles/org.eclipse.core.net.linux.x86_64/pom.xml index d46b1abeb..5ad38b636 100644 --- a/bundles/org.eclipse.core.net.linux.x86_64/pom.xml +++ b/bundles/org.eclipse.core.net.linux.x86_64/pom.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (c) 2012, 2015 Eclipse Foundation and others. + Copyright (c) 2012, 2021 Eclipse Foundation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Distribution License v1.0 which accompanies this distribution, and is available at @@ -19,63 +19,11 @@ </parent> <groupId>org.eclipse.core</groupId> <artifactId>org.eclipse.core.net.linux.x86_64</artifactId> - <version>1.2.400-SNAPSHOT</version> + <version>1.2.500-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> - <build> - <plugins> - <plugin> - <groupId>org.eclipse.tycho</groupId> - <artifactId>target-platform-configuration</artifactId> - <configuration> - <environments> - <environment> - <os>linux</os> - <ws>gtk</ws> - <arch>x86_64</arch> - </environment> - </environments> - </configuration> - </plugin> - </plugins> - </build> + <properties> + <skipAPIAnalysis>true</skipAPIAnalysis> + </properties> - <profiles> - <profile> - <id>build-natives</id> - <activation> - <property> - <!-- This has to be hardcoded. Profiles are not allowed to use pom defined properties :-( --> - <name>native</name> - <value>gtk.linux.x86_64</value> - </property> - </activation> - <build> - <plugins> - <plugin> - <artifactId>maven-antrun-plugin</artifactId> - <executions> - <execution> - <id>natives</id> - <phase>process-resources</phase> - <configuration> - <target> - <exec executable="make" newenvironment="false" dir="../org.eclipse.core.net/natives/unix/linux/"/> - <copy todir="."> - <fileset dir="../org.eclipse.core.net/natives/unix/linux/"> - <include name="libgnomeproxy-*.so"/> - </fileset> - </copy> - </target> - </configuration> - <goals> - <goal>run</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> </project> diff --git a/bundles/org.eclipse.core.net.linux.x86_64/src/org/eclipse/core/net/ProxyProvider.java b/bundles/org.eclipse.core.net.linux.x86_64/src/org/eclipse/core/net/ProxyProvider.java deleted file mode 100644 index f2f9a4bcc..000000000 --- a/bundles/org.eclipse.core.net.linux.x86_64/src/org/eclipse/core/net/ProxyProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2009 Oakland Software Incorporated and others - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Oakland Software Incorporated - initial API and implementation - *******************************************************************************/ -package org.eclipse.core.net; - -import org.eclipse.core.internal.net.proxy.unix.UnixProxyProvider; - -public class ProxyProvider extends UnixProxyProvider { -} diff --git a/bundles/org.eclipse.core.net.linux/.classpath b/bundles/org.eclipse.core.net.linux/.classpath new file mode 100644 index 000000000..01836c484 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/bundles/org.eclipse.core.net.linux/.project b/bundles/org.eclipse.core.net.linux/.project new file mode 100644 index 000000000..4cf8c2fd8 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.core.net.linux</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/bundles/org.eclipse.core.net.linux/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.net.linux/META-INF/MANIFEST.MF new file mode 100644 index 000000000..749024a1a --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %fragmentName +Bundle-Vendor: %providerName +Bundle-Localization: fragment +Bundle-SymbolicName: org.eclipse.core.net.linux;singleton:=true +Bundle-Version: 1.0.0.qualifier +Fragment-Host: org.eclipse.core.net;bundle-version="1.1.0" +Eclipse-PlatformFilter: (osgi.os=linux) +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Automatic-Module-Name: org.eclipse.core.net.linux +Require-Bundle: com.sun.jna diff --git a/bundles/org.eclipse.core.net.linux/about.html b/bundles/org.eclipse.core.net.linux/about.html new file mode 100644 index 000000000..164f781a8 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/about.html @@ -0,0 +1,36 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> +<title>About</title> +</head> +<body lang="EN-US"> + <h2>About This Content</h2> + + <p>November 30, 2017</p> + <h3>License</h3> + + <p> + The Eclipse Foundation makes available all content in this plug-in + ("Content"). Unless otherwise indicated below, the Content + is provided to you under the terms and conditions of the Eclipse + Public License Version 2.0 ("EPL"). A copy of the EPL is + available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>. + For purposes of the EPL, "Program" will mean the Content. + </p> + + <p> + If you did not receive this Content directly from the Eclipse + Foundation, the Content is being redistributed by another party + ("Redistributor") and different terms and conditions may + apply to your use of any object code in the Content. Check the + Redistributor's license that was provided with the Content. If no such + license exists, contact the Redistributor. Unless otherwise indicated + below, the terms and conditions of the EPL still apply to any source + code in the Content and such source code may be obtained at <a + href="http://www.eclipse.org/">http://www.eclipse.org</a>. + </p> + +</body> +</html>
\ No newline at end of file diff --git a/bundles/org.eclipse.core.net.linux/build.properties b/bundles/org.eclipse.core.net.linux/build.properties new file mode 100644 index 000000000..aeb64d809 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/build.properties @@ -0,0 +1,19 @@ +############################################################################### +# Copyright (c) 2021 Red Hat Inc. and others. +# +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License 2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Red Hat Inc. - initial API and implementation +############################################################################### +bin.includes = fragment.properties,\ + .,\ + META-INF/,\ + about.html +src.includes = about.html +source.. = src/ diff --git a/bundles/org.eclipse.core.net.linux/fragment.properties b/bundles/org.eclipse.core.net.linux/fragment.properties new file mode 100644 index 000000000..cbcfcd739 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/fragment.properties @@ -0,0 +1,15 @@ +############################################################################### +# Copyright (c) 2021 Red Hat Inc. and others. +# +# This program and the accompanying materials +# are made available under the terms of the Eclipse Public License 2.0 +# which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Red Hat Inc. - initial API and implementation +############################################################################### +fragmentName = Proxy for Linux +providerName = Eclipse.org diff --git a/bundles/org.eclipse.core.net.linux/pom.xml b/bundles/org.eclipse.core.net.linux/pom.xml new file mode 100644 index 000000000..10ac8f2b5 --- /dev/null +++ b/bundles/org.eclipse.core.net.linux/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2012, 2021 Eclipse Foundation and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Distribution License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/org/documents/edl-v10.php + + Contributors: + Igor Fedorenko - initial implementation + Red Hat Inc. - modified for use in org.eclipse.core.net.linux +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>eclipse.platform.team</artifactId> + <groupId>eclipse.platform.team</groupId> + <version>4.20.0-SNAPSHOT</version> + <relativePath>../../</relativePath> + </parent> + <groupId>org.eclipse.core</groupId> + <artifactId>org.eclipse.core.net.linux</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + + <properties> + <skipAPIAnalysis>true</skipAPIAnalysis> + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>target-platform-configuration</artifactId> + <configuration> + <environments> + <environment> + <os>linux</os> + <ws>gtk</ws> + </environment> + </environments> + </configuration> + </plugin> + </plugins> + </build> +</project> diff --git a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java b/bundles/org.eclipse.core.net.linux/src/org/eclipse/core/net/ProxyProvider.java index fffc477db..e9e499270 100644 --- a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java +++ b/bundles/org.eclipse.core.net.linux/src/org/eclipse/core/net/ProxyProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2018 Oakland Software Incorporated and others + * Copyright (c) 2021 Red Hat Inc. and others * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -9,14 +9,11 @@ * SPDX-License-Identifier: EPL-2.0 * * Contributors: - * Oakland Software Incorporated - initial API and implementation - * IBM Corporation - implementation - * Red Hat - GSettings implementation and code clean up (bug 394087) + * Red Hat Inc. - initial API and implementation *******************************************************************************/ -package org.eclipse.core.internal.net.proxy.unix; +package org.eclipse.core.net; import java.io.IOException; -import java.lang.reflect.Method; import java.net.URI; import java.util.ArrayList; import java.util.Locale; @@ -30,24 +27,43 @@ import org.eclipse.core.internal.net.ProxyData; import org.eclipse.core.internal.net.StringUtil; import org.eclipse.core.net.proxy.IProxyData; -public class UnixProxyProvider extends AbstractProxyProvider { +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.PointerByReference; - private static final String LIBRARY_NAME = "gnomeproxy-1.0.0"; //$NON-NLS-1$ +/** + * JNA version of org.eclipse.core.internal.net.UnixProxyProvider + * + * @author jjohnstn + * + */ +public class ProxyProvider extends AbstractProxyProvider { + + private static LibGio fLibGio; + + private static Pointer proxySettings = Pointer.NULL; + private static Pointer httpProxySettings = Pointer.NULL; + private static Pointer httpsProxySettings = Pointer.NULL; + private static Pointer socksProxySettings = Pointer.NULL; + private static Pointer ftpProxySettings = Pointer.NULL; private static final String ENABLE_GNOME = Activator.ID + ".enableGnome"; //$NON-NLS-1$ + private static final String LIBRARY_NAME = "gio-2.0"; //$NON-NLS-1$ + private static boolean isGnomeLibLoaded = false; static { // Load the GSettings JNI library if org.eclipse.core.net.enableGnome is specified String value = System.getProperty(ENABLE_GNOME); if ("".equals(value) || "true".equals(value)) { //$NON-NLS-1$ //$NON-NLS-2$ - loadGnomeLib(); + initializeSettings(); } } - public UnixProxyProvider() { - // Nothing to initialize + public ProxyProvider() { + // no initialization required } @Override @@ -69,7 +85,7 @@ public class UnixProxyProvider extends AbstractProxyProvider { proxies = getProxyData(); } if (Policy.DEBUG) { - Policy.debug("UnixProxyProvider#select result for [" + uri + "]"); //$NON-NLS-1$ //$NON-NLS-2$ + Policy.debug("LinuxProxyProvider#select result for [" + uri + "]"); //$NON-NLS-1$ //$NON-NLS-2$ for (IProxyData proxy : proxies) { System.out.println(" " + proxy); //$NON-NLS-1$ } @@ -212,8 +228,7 @@ public class UnixProxyProvider extends AbstractProxyProvider { private static String getEnv(String env) { try { - Method m = System.class.getMethod("getenv", String.class); //$NON-NLS-1$ - return (String) m.invoke(null, env); + return System.getenv(env); } catch (Throwable t) { // Fall-back to running 'env' directly. Warning this is very slow... // up to 200ms @@ -240,29 +255,122 @@ public class UnixProxyProvider extends AbstractProxyProvider { } } - private static void loadGnomeLib() { + private void debugPrint(String[] strs) { + for (int i = 0; i < strs.length; i++) + System.out.println(i + ": " + strs[i]); //$NON-NLS-1$ + } + + private interface LibGio extends Library { + Pointer g_settings_new(String schema); + boolean g_settings_get_boolean(Pointer settings, String key); + Pointer g_settings_get_string(Pointer settings, String key); + int g_settings_get_int(Pointer settings, String key); + PointerByReference g_settings_get_strv(Pointer Settings, String key); + void g_strfreev(PointerByReference p); + void g_free(Pointer p); + } + + private static void initializeSettings() { try { - System.loadLibrary(LIBRARY_NAME); - isGnomeLibLoaded = true; + fLibGio = Native.load(LIBRARY_NAME, LibGio.class); + proxySettings = fLibGio.g_settings_new ("org.gnome.system.proxy"); //$NON-NLS-1$ + httpProxySettings = fLibGio.g_settings_new ("org.gnome.system.proxy.http"); //$NON-NLS-1$ + httpsProxySettings = fLibGio.g_settings_new ("org.gnome.system.proxy.https"); //$NON-NLS-1$ + socksProxySettings = fLibGio.g_settings_new ("org.gnome.system.proxy.socks"); //$NON-NLS-1$ + ftpProxySettings = fLibGio.g_settings_new ("org.gnome.system.proxy.ftp"); //$NON-NLS-1$ + isGnomeLibLoaded= true; if (Policy.DEBUG_SYSTEM_PROVIDERS) Policy.debug("Loaded " + //$NON-NLS-1$ System.mapLibraryName(LIBRARY_NAME) + " library"); //$NON-NLS-1$ - } catch (final UnsatisfiedLinkError e) { - // Expected on systems that are missing Gnome library + } catch (UnsatisfiedLinkError e) { + isGnomeLibLoaded= false; if (Policy.DEBUG_SYSTEM_PROVIDERS) Policy.debug("Could not load library: " //$NON-NLS-1$ + System.mapLibraryName(LIBRARY_NAME)); } } - private void debugPrint(String[] strs) { - for (int i = 0; i < strs.length; i++) - System.out.println(i + ": " + strs[i]); //$NON-NLS-1$ + protected static ProxyData getGSettingsProxyInfo(String protocol) { + + if (protocol == null) { + return null; + } + + if (proxySettings == Pointer.NULL) { + initializeSettings(); + } + + ProxyData proxyData = new ProxyData(protocol); + boolean useSame = fLibGio.g_settings_get_boolean(proxySettings, "use-same-proxy"); //$NON-NLS-1$ + + if (protocol.equalsIgnoreCase("http") || useSame) { //$NON-NLS-1$ + boolean useProxy = fLibGio.g_settings_get_boolean(httpProxySettings, "enabled"); //$NON-NLS-1$ + if (!useProxy) { + return null; + } + Pointer host = fLibGio.g_settings_get_string(httpProxySettings, "host"); //$NON-NLS-1$ + proxyData.setHost(host.getString(0)); + fLibGio.g_free(host); + + int port = fLibGio.g_settings_get_int(httpProxySettings, "port"); //$NON-NLS-1$ + proxyData.setPort(port); + + boolean reqAuth = fLibGio.g_settings_get_boolean(httpProxySettings, "use-authentication"); //$NON-NLS-1$ + if (reqAuth) { + Pointer user = fLibGio.g_settings_get_string(httpProxySettings, "authentication-user"); //$NON-NLS-1$ + proxyData.setUserid(user.getString(0)); + fLibGio.g_free(user); + + Pointer password = fLibGio.g_settings_get_string(httpProxySettings, "authentication-password"); //$NON-NLS-1$ + proxyData.setPassword(password.getString(0)); + fLibGio.g_free(password); + } + return proxyData; + } + + // Everything else applies only if the system proxy mode is manual + Pointer mode = fLibGio.g_settings_get_string(proxySettings, "mode"); //$NON-NLS-1$ + if (!mode.getString(0).equalsIgnoreCase("manual")) { //$NON-NLS-1$ + fLibGio.g_free(mode); + return null; + } + fLibGio.g_free(mode); + + Pointer host; + int port; + + if (protocol.equalsIgnoreCase("https")) { //$NON-NLS-1$ + host = fLibGio.g_settings_get_string(httpsProxySettings, "host"); //$NON-NLS-1$ + port = fLibGio.g_settings_get_int(httpsProxySettings, "port"); //$NON-NLS-1$ + } else if (protocol.equalsIgnoreCase("socks")) { //$NON-NLS-1$ + host = fLibGio.g_settings_get_string(socksProxySettings, "host"); //$NON-NLS-1$ + port = fLibGio.g_settings_get_int(socksProxySettings, "port"); //$NON-NLS-1$ + } else if (protocol.equalsIgnoreCase("ftp")) { //$NON-NLS-1$ + host = fLibGio.g_settings_get_string(ftpProxySettings, "host"); //$NON-NLS-1$ + port = fLibGio.g_settings_get_int(ftpProxySettings, "port"); //$NON-NLS-1$ + } else { + return null; + } + + proxyData.setHost(host.getString(0)); + fLibGio.g_free(host); + proxyData.setPort(port); + + return proxyData; } - protected static native void gsettingsInit(); + protected static String[] getGSettingsNonProxyHosts() { + if (proxySettings == Pointer.NULL) { + initializeSettings(); + } + + PointerByReference npHostsArray = fLibGio.g_settings_get_strv(proxySettings, "ignore-hosts"); //$NON-NLS-1$ + String[] npHosts = npHostsArray.getPointer().getStringArray(0); - protected static native ProxyData getGSettingsProxyInfo(String protocol); + fLibGio.g_strfreev(npHostsArray); + + return npHosts; + } - protected static native String[] getGSettingsNonProxyHosts(); } + @@ -73,6 +73,7 @@ <module>features/org.eclipse.cvs-feature</module> <!-- fragments --> + <module>bundles/org.eclipse.core.net.linux</module> <module>bundles/org.eclipse.core.net.linux.x86_64</module> <module>bundles/org.eclipse.core.net.win32.x86_64</module> <module>tests</module> |