Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 96835 Details for
Bug 226462
[Proxy] Use system values for proxy settings on Linux
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Fix
226462_20080421.txt (text/plain), 22.34 KB, created by
Szymon Brandys
on 2008-04-21 08:56:11 EDT
(
hide
)
Description:
Fix
Filename:
MIME Type:
Creator:
Szymon Brandys
Created:
2008-04-21 08:56:11 EDT
Size:
22.34 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.core.net >Index: natives/unix/Debug/sources.mk >=================================================================== >RCS file: natives/unix/Debug/sources.mk >diff -N natives/unix/Debug/sources.mk >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/Debug/sources.mk 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,17 @@ >+################################################################################ >+# Automatically-generated file. Do not edit! >+################################################################################ >+ >+O_SRCS := >+C_SRCS := >+S_SRCS := >+OBJ_SRCS := >+ASM_SRCS := >+OBJS := >+C_DEPS := >+LIBRARIES := >+ >+# Every subdirectory with source files must be described here >+SUBDIRS := \ >+. \ >+ >Index: natives/unix/Debug/getsystemproxy.d >=================================================================== >RCS file: natives/unix/Debug/getsystemproxy.d >diff -N natives/unix/Debug/getsystemproxy.d >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/Debug/getsystemproxy.d 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,226 @@ >+getsystemproxy.d getsystemproxy.o: ../getsystemproxy.c \ >+ /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ >+ /usr/include/glib-2.0/glib/gtypes.h \ >+ /usr/lib/glib-2.0/include/glibconfig.h \ >+ /usr/include/glib-2.0/glib/gmacros.h \ >+ /usr/include/glib-2.0/glib/garray.h \ >+ /usr/include/glib-2.0/glib/gasyncqueue.h \ >+ /usr/include/glib-2.0/glib/gthread.h \ >+ /usr/include/glib-2.0/glib/gerror.h /usr/include/glib-2.0/glib/gquark.h \ >+ /usr/include/glib-2.0/glib/gutils.h \ >+ /usr/include/glib-2.0/glib/gatomic.h \ >+ /usr/include/glib-2.0/glib/gbacktrace.h \ >+ /usr/include/glib-2.0/glib/gbase64.h \ >+ /usr/include/glib-2.0/glib/gbookmarkfile.h \ >+ /usr/include/glib-2.0/glib/gcache.h /usr/include/glib-2.0/glib/glist.h \ >+ /usr/include/glib-2.0/glib/gmem.h /usr/include/glib-2.0/glib/gslice.h \ >+ /usr/include/glib-2.0/glib/gcompletion.h \ >+ /usr/include/glib-2.0/glib/gconvert.h \ >+ /usr/include/glib-2.0/glib/gdataset.h \ >+ /usr/include/glib-2.0/glib/gdate.h /usr/include/glib-2.0/glib/gdir.h \ >+ /usr/include/glib-2.0/glib/gfileutils.h \ >+ /usr/include/glib-2.0/glib/ghash.h /usr/include/glib-2.0/glib/ghook.h \ >+ /usr/include/glib-2.0/glib/giochannel.h \ >+ /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gslist.h \ >+ /usr/include/glib-2.0/glib/gstring.h \ >+ /usr/include/glib-2.0/glib/gunicode.h \ >+ /usr/include/glib-2.0/glib/gkeyfile.h \ >+ /usr/include/glib-2.0/glib/gmappedfile.h \ >+ /usr/include/glib-2.0/glib/gmarkup.h \ >+ /usr/include/glib-2.0/glib/gmessages.h \ >+ /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/goption.h \ >+ /usr/include/glib-2.0/glib/gpattern.h \ >+ /usr/include/glib-2.0/glib/gprimes.h \ >+ /usr/include/glib-2.0/glib/gqsort.h /usr/include/glib-2.0/glib/gqueue.h \ >+ /usr/include/glib-2.0/glib/grand.h /usr/include/glib-2.0/glib/grel.h \ >+ /usr/include/glib-2.0/glib/gregex.h \ >+ /usr/include/glib-2.0/glib/gscanner.h \ >+ /usr/include/glib-2.0/glib/gsequence.h \ >+ /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gspawn.h \ >+ /usr/include/glib-2.0/glib/gstrfuncs.h \ >+ /usr/include/glib-2.0/glib/gthreadpool.h \ >+ /usr/include/glib-2.0/glib/gtimer.h /usr/include/glib-2.0/glib/gtree.h \ >+ /usr/include/gconf/2/gconf/gconf-value.h \ >+ /usr/include/gconf/2/gconf/gconf-error.h \ >+ /usr/include/gconf/2/gconf/gconf-client.h \ >+ /usr/include/glib-2.0/glib-object.h \ >+ /usr/include/glib-2.0/gobject/gboxed.h \ >+ /usr/include/glib-2.0/gobject/gtype.h \ >+ /usr/include/glib-2.0/gobject/genums.h \ >+ /usr/include/glib-2.0/gobject/gobject.h \ >+ /usr/include/glib-2.0/gobject/gvalue.h \ >+ /usr/include/glib-2.0/gobject/gparam.h \ >+ /usr/include/glib-2.0/gobject/gclosure.h \ >+ /usr/include/glib-2.0/gobject/gsignal.h \ >+ /usr/include/glib-2.0/gobject/gmarshal.h \ >+ /usr/include/glib-2.0/gobject/gparamspecs.h \ >+ /usr/include/glib-2.0/gobject/gsourceclosure.h \ >+ /usr/include/glib-2.0/gobject/gtypemodule.h \ >+ /usr/include/glib-2.0/gobject/gtypeplugin.h \ >+ /usr/include/glib-2.0/gobject/gvaluearray.h \ >+ /usr/include/glib-2.0/gobject/gvaluetypes.h \ >+ /usr/include/gconf/2/gconf/gconf.h \ >+ /usr/include/gconf/2/gconf/gconf-schema.h \ >+ /usr/include/gconf/2/gconf/gconf-engine.h \ >+ /usr/include/gconf/2/gconf/gconf-error.h \ >+ /usr/include/gconf/2/gconf/gconf-enum-types.h \ >+ /usr/include/gconf/2/gconf/gconf-listeners.h \ >+ /usr/include/gconf/2/gconf/gconf-changeset.h >+ >+/usr/include/glib-2.0/glib.h: >+ >+/usr/include/glib-2.0/glib/galloca.h: >+ >+/usr/include/glib-2.0/glib/gtypes.h: >+ >+/usr/lib/glib-2.0/include/glibconfig.h: >+ >+/usr/include/glib-2.0/glib/gmacros.h: >+ >+/usr/include/glib-2.0/glib/garray.h: >+ >+/usr/include/glib-2.0/glib/gasyncqueue.h: >+ >+/usr/include/glib-2.0/glib/gthread.h: >+ >+/usr/include/glib-2.0/glib/gerror.h: >+ >+/usr/include/glib-2.0/glib/gquark.h: >+ >+/usr/include/glib-2.0/glib/gutils.h: >+ >+/usr/include/glib-2.0/glib/gatomic.h: >+ >+/usr/include/glib-2.0/glib/gbacktrace.h: >+ >+/usr/include/glib-2.0/glib/gbase64.h: >+ >+/usr/include/glib-2.0/glib/gbookmarkfile.h: >+ >+/usr/include/glib-2.0/glib/gcache.h: >+ >+/usr/include/glib-2.0/glib/glist.h: >+ >+/usr/include/glib-2.0/glib/gmem.h: >+ >+/usr/include/glib-2.0/glib/gslice.h: >+ >+/usr/include/glib-2.0/glib/gcompletion.h: >+ >+/usr/include/glib-2.0/glib/gconvert.h: >+ >+/usr/include/glib-2.0/glib/gdataset.h: >+ >+/usr/include/glib-2.0/glib/gdate.h: >+ >+/usr/include/glib-2.0/glib/gdir.h: >+ >+/usr/include/glib-2.0/glib/gfileutils.h: >+ >+/usr/include/glib-2.0/glib/ghash.h: >+ >+/usr/include/glib-2.0/glib/ghook.h: >+ >+/usr/include/glib-2.0/glib/giochannel.h: >+ >+/usr/include/glib-2.0/glib/gmain.h: >+ >+/usr/include/glib-2.0/glib/gslist.h: >+ >+/usr/include/glib-2.0/glib/gstring.h: >+ >+/usr/include/glib-2.0/glib/gunicode.h: >+ >+/usr/include/glib-2.0/glib/gkeyfile.h: >+ >+/usr/include/glib-2.0/glib/gmappedfile.h: >+ >+/usr/include/glib-2.0/glib/gmarkup.h: >+ >+/usr/include/glib-2.0/glib/gmessages.h: >+ >+/usr/include/glib-2.0/glib/gnode.h: >+ >+/usr/include/glib-2.0/glib/goption.h: >+ >+/usr/include/glib-2.0/glib/gpattern.h: >+ >+/usr/include/glib-2.0/glib/gprimes.h: >+ >+/usr/include/glib-2.0/glib/gqsort.h: >+ >+/usr/include/glib-2.0/glib/gqueue.h: >+ >+/usr/include/glib-2.0/glib/grand.h: >+ >+/usr/include/glib-2.0/glib/grel.h: >+ >+/usr/include/glib-2.0/glib/gregex.h: >+ >+/usr/include/glib-2.0/glib/gscanner.h: >+ >+/usr/include/glib-2.0/glib/gsequence.h: >+ >+/usr/include/glib-2.0/glib/gshell.h: >+ >+/usr/include/glib-2.0/glib/gspawn.h: >+ >+/usr/include/glib-2.0/glib/gstrfuncs.h: >+ >+/usr/include/glib-2.0/glib/gthreadpool.h: >+ >+/usr/include/glib-2.0/glib/gtimer.h: >+ >+/usr/include/glib-2.0/glib/gtree.h: >+ >+/usr/include/gconf/2/gconf/gconf-value.h: >+ >+/usr/include/gconf/2/gconf/gconf-error.h: >+ >+/usr/include/gconf/2/gconf/gconf-client.h: >+ >+/usr/include/glib-2.0/glib-object.h: >+ >+/usr/include/glib-2.0/gobject/gboxed.h: >+ >+/usr/include/glib-2.0/gobject/gtype.h: >+ >+/usr/include/glib-2.0/gobject/genums.h: >+ >+/usr/include/glib-2.0/gobject/gobject.h: >+ >+/usr/include/glib-2.0/gobject/gvalue.h: >+ >+/usr/include/glib-2.0/gobject/gparam.h: >+ >+/usr/include/glib-2.0/gobject/gclosure.h: >+ >+/usr/include/glib-2.0/gobject/gsignal.h: >+ >+/usr/include/glib-2.0/gobject/gmarshal.h: >+ >+/usr/include/glib-2.0/gobject/gparamspecs.h: >+ >+/usr/include/glib-2.0/gobject/gsourceclosure.h: >+ >+/usr/include/glib-2.0/gobject/gtypemodule.h: >+ >+/usr/include/glib-2.0/gobject/gtypeplugin.h: >+ >+/usr/include/glib-2.0/gobject/gvaluearray.h: >+ >+/usr/include/glib-2.0/gobject/gvaluetypes.h: >+ >+/usr/include/gconf/2/gconf/gconf.h: >+ >+/usr/include/gconf/2/gconf/gconf-schema.h: >+ >+/usr/include/gconf/2/gconf/gconf-engine.h: >+ >+/usr/include/gconf/2/gconf/gconf-error.h: >+ >+/usr/include/gconf/2/gconf/gconf-enum-types.h: >+ >+/usr/include/gconf/2/gconf/gconf-listeners.h: >+ >+/usr/include/gconf/2/gconf/gconf-changeset.h: >Index: natives/unix/Debug/objects.mk >=================================================================== >RCS file: natives/unix/Debug/objects.mk >diff -N natives/unix/Debug/objects.mk >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/Debug/objects.mk 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+################################################################################ >+# Automatically-generated file. Do not edit! >+################################################################################ >+ >+USER_OBJS := >+ >+LIBS := -lgconf-2 -lORBit-2 -lgthread-2.0 -lrt -lgobject-2.0 -lglib-2.0 >Index: natives/unix/getsystemproxy.c >=================================================================== >RCS file: natives/unix/getsystemproxy.c >diff -N natives/unix/getsystemproxy.c >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/getsystemproxy.c 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,237 @@ >+/* >+ * Copyright 2008 Oakland Software Incorporated and others >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oakland Software Incorporated - initial API and implementation >+ */ >+ >+#include <jni.h> >+ >+#include <glib.h> >+#include <glib/gslist.h> >+#include <gconf/gconf-value.h> >+#include <gconf/gconf-client.h> >+ >+#ifdef __linux__ >+#include <string.h> >+#else >+#include <strings.h> >+#endif >+ >+static GConfClient *client= NULL; >+ >+static jclass proxyInfoClass; >+static jclass stringClass; >+static jmethodID proxyInfoConstructor; >+static jmethodID toString; >+ >+static jmethodID hostMethod; >+static jmethodID portMethod; >+static jmethodID requiresAuthenticationMethod; >+static jmethodID userMethod; >+static jmethodID passwordMethod; >+ >+#define CHECK_NULL(X) { if ((X) == NULL) fprintf (stderr,"JNI error at line %d\n", __LINE__); } >+ >+static void gconfInit(JNIEnv *env) { >+ client = gconf_client_get_default(); >+ jclass cls= NULL; >+ CHECK_NULL(cls = (*env)->FindClass(env, "org/eclipse/core/internal/net/ProxyData")); >+ proxyInfoClass = (*env)->NewGlobalRef(env, cls); >+ >+ CHECK_NULL(cls = (*env)->FindClass(env, "java/lang/String")); >+ stringClass = (*env)->NewGlobalRef(env, cls); >+ >+ CHECK_NULL(proxyInfoConstructor = (*env)->GetMethodID(env, proxyInfoClass, "<init>", "(Ljava/lang/String;)V")); >+ >+ CHECK_NULL(toString = (*env)->GetMethodID(env, proxyInfoClass, "toString", "()Ljava/lang/String;")); >+ >+ CHECK_NULL(hostMethod = (*env)->GetMethodID(env, proxyInfoClass, "setHost", >+ "(Ljava/lang/String;)V")); >+ CHECK_NULL(portMethod = (*env)->GetMethodID(env, proxyInfoClass, "setPort", >+ "(I)V")); >+ CHECK_NULL(requiresAuthenticationMethod= (*env)->GetMethodID(env, proxyInfoClass, "setRequiresAuthentication", >+ "(Z)V")); >+ CHECK_NULL(userMethod = (*env)->GetMethodID(env, proxyInfoClass, "setUserid", >+ "(Ljava/lang/String;)V")); >+ CHECK_NULL(passwordMethod = (*env)->GetMethodID(env, proxyInfoClass, "setPassword", >+ "(Ljava/lang/String;)V")); >+} >+ >+/* >+ * Class: org_eclipse_core_internal_net_UnixProxyProvider >+ * Method: getGConfProxyInfo >+ * Signature: ([Ljava/lang/String); >+ */ >+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_UnixProxyProvider_getGConfProxyInfo( >+ JNIEnv *env, jclass clazz, jstring protocol) { >+ >+ jboolean isCopy; >+ const char *cprotocol; >+ >+ jobject proxyInfo= NULL; >+ >+ if (client == NULL) { >+ gconfInit(env); >+ } >+ >+ CHECK_NULL(proxyInfo = (*env)->NewObject(env, proxyInfoClass, proxyInfoConstructor, protocol)); >+ >+ cprotocol = (*env)->GetStringUTFChars(env, protocol, &isCopy); >+ if (cprotocol == NULL) >+ return NULL; >+ >+ //printf("cprotocol: %s\n", cprotocol); >+ >+ if (strcasecmp(cprotocol, "http") == 0) { >+ gboolean useProxy = gconf_client_get_bool(client, >+ "/system/http_proxy/use_http_proxy", NULL); >+ if (!useProxy) { >+ proxyInfo = NULL; >+ goto exit; >+ } >+ >+ gchar *host = gconf_client_get_string(client, >+ "/system/http_proxy/host", NULL); >+ jobject jhost = (*env)->NewStringUTF(env, host); >+ (*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost); >+ >+ gint port = gconf_client_get_int(client, "/system/http_proxy/port", >+ NULL); >+ (*env)->CallVoidMethod(env, proxyInfo, portMethod, port); >+ >+ gboolean reqAuth = gconf_client_get_bool(client, >+ "/system/http_proxy/use_authentication", NULL); >+ (*env)->CallVoidMethod(env, proxyInfo, >+ requiresAuthenticationMethod, reqAuth); >+ if (reqAuth) { >+ >+ gchar *user = gconf_client_get_string(client, >+ "/system/http_proxy/authentication_user", NULL); >+ jobject juser = (*env)->NewStringUTF(env, user); >+ (*env)->CallVoidMethod(env, proxyInfo, userMethod, juser); >+ >+ gchar *password = gconf_client_get_string(client, >+ "/system/http_proxy/authentication_password", NULL); >+ jobject jpassword = (*env)->NewStringUTF(env, password); >+ (*env)->CallVoidMethod(env, proxyInfo, passwordMethod, >+ jpassword); >+ } >+ goto exit; >+ } >+ >+ // Everything else applies only if the system proxy mode is manual >+ gchar *mode = gconf_client_get_string(client, "/system/proxy/mode", NULL); >+ if (strcasecmp(mode, "manual") != 0) { >+ proxyInfo = NULL; >+ goto exit; >+ } >+ >+ char selector[100]; >+ >+ if (strcasecmp(cprotocol, "https") == 0) { >+ strcpy(selector, "/system/proxy/secure_"); >+ } else if (strcasecmp(cprotocol, "socks") == 0) { >+ strcpy(selector, "/system/proxy/socks_"); >+ } else if (strcasecmp(cprotocol, "ftp") == 0) { >+ strcpy(selector, "/system/proxy/ftp_"); >+ } else { >+ proxyInfo = NULL; >+ goto exit; >+ } >+ >+ char useSelector[100]; >+ strcpy(useSelector, selector); >+ >+ gchar *host = gconf_client_get_string(client, strcat(useSelector, "host"), >+ NULL); >+ jobject jhost = (*env)->NewStringUTF(env, host); >+ (*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost); >+ >+ strcpy(useSelector, selector); >+ gint port = gconf_client_get_int(client, strcat(useSelector, "port"), NULL); >+ (*env)->CallVoidMethod(env, proxyInfo, portMethod, port); >+ >+ exit: if (isCopy == JNI_TRUE) >+ (*env)->ReleaseStringUTFChars(env, protocol, cprotocol); >+ return proxyInfo; >+} >+ >+typedef struct { >+ jobjectArray npHostArray; >+ JNIEnv *env; >+ int index; >+} ListProcContext; >+ >+// user_data is the ListProcContext >+void listProc(gpointer data, gpointer user_data) { >+ ListProcContext *lpc = user_data; >+ jobject jnpHost = (*lpc->env)->NewStringUTF(lpc->env, (char *)data); >+ (*lpc->env)->SetObjectArrayElement(lpc->env, lpc->npHostArray, >+ lpc->index++, jnpHost); >+} >+ >+/* >+ * Class: org_eclipse_core_internal_net_UnixProxyProvider >+ * Method: getGConfNonProxyHosts >+ * Signature: ()[Ljava/lang/String; >+ */ >+JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_UnixProxyProvider_getGConfNonProxyHosts( >+ JNIEnv *env, jclass clazz) { >+ >+ if (client == NULL) { >+ gconfInit(env); >+ } >+ >+ GSList *npHosts; >+ int size; >+ >+ npHosts = gconf_client_get_list(client, "/system/http_proxy/ignore_hosts", >+ GCONF_VALUE_STRING, NULL); >+ size = g_slist_length(npHosts); >+ >+ // TODO - I'm not sure this is really valid, it's from the JVM implementation >+ // of ProxySelector >+ if (size == 0) { >+ npHosts = gconf_client_get_list(client, "/system/proxy/no_proxy_for", >+ GCONF_VALUE_STRING, NULL); >+ } >+ size = g_slist_length(npHosts); >+ >+ jobjectArray ret = (*env)->NewObjectArray(env, size, stringClass, NULL); >+ >+ ListProcContext lpc; >+ lpc.env = env; >+ lpc.npHostArray = ret; >+ lpc.index = 0; >+ >+ g_slist_foreach(npHosts, listProc, &lpc); >+ return ret; >+} >+ >+/* >+ * Class: org_eclipse_core_internal_net_UnixProxyProvider >+ * Method: getKdeProxyInfo >+ * Signature: ([Ljava/lang/String); >+ */ >+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_UnixProxyProvider_getKdeProxyInfo( >+ JNIEnv *env, jclass clazz, jstring protocol) { >+ //printf("getKdeProxyInfo - not implemented\n"); >+ return NULL; >+} >+ >+/* >+ * Class: org_eclipse_core_internal_net_UnixProxyProvider >+ * Method: getKdeNonProxyHosts >+ * Signature: ()Ljava/lang/String; >+ */ >+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_UnixProxyProvider_getKdeNonProxyHosts( >+ JNIEnv *env, jclass clazz) { >+ //printf("getKdeNonProxyHosts - not implemented\n"); >+ return NULL; >+} >+ >Index: src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java >=================================================================== >RCS file: src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java >diff -N src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,108 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 Oakland Software Incorporated and others >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Oakland Software Incorporated - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.core.internal.net.proxy.unix; >+ >+import java.net.URI; >+import java.net.URISyntaxException; >+ >+import org.eclipse.core.internal.net.AbstractProxyProvider; >+import org.eclipse.core.internal.net.Activator; >+import org.eclipse.core.internal.net.ProxyData; >+import org.eclipse.core.net.proxy.IProxyData; >+ >+public class UnixProxyProvider extends AbstractProxyProvider { >+ >+ static { >+ try { >+ System.loadLibrary("libproxysupport"); //$NON-NLS-1$ >+ } catch (UnsatisfiedLinkError ex) { >+ // This will happen on systems that are missing Gnome libraries >+ Activator.logInfo("Error loading native proxysupport code", ex); //$NON-NLS-1$ >+ } >+ } >+ >+ public UnixProxyProvider() { >+ // Nothing to initialize >+ } >+ >+ public IProxyData[] getProxyData(URI uri) { >+ String protocol = uri.getScheme(); >+ >+ ProxyData pd = getSystemProxyInfo(protocol); >+ >+ if (pd != null) { >+ IProxyData[] pds = new IProxyData[1]; >+ pds[0] = pd; >+ return pds; >+ } >+ >+ return new IProxyData[0]; >+ } >+ >+ protected String[] getNonProxiedHosts() { >+ try { >+ String[] npHosts = getGConfNonProxyHosts(); >+ if (npHosts != null && npHosts.length > 0) >+ return npHosts; >+ return getKdeNonProxyHosts(); >+ } catch (UnsatisfiedLinkError ex) { >+ // This has already been reported (the native code did not load) >+ } >+ return new String[] {}; >+ } >+ >+ // Returns null if something wrong or there is no proxy for the protocol >+ protected ProxyData getSystemProxyInfo(String protocol) { >+ ProxyData pd = null; >+ >+ // First try the environment variable which is a URL >+ String sysHttp = System.getenv(protocol.toLowerCase() + "_proxy"); //$NON-NLS-1$ >+ if (sysHttp != null) { >+ URI uri = null; >+ try { >+ uri = new URI(sysHttp); >+ } catch (URISyntaxException e) { >+ return null; >+ } >+ >+ pd = new ProxyData(protocol); >+ pd.setHost(uri.getHost()); >+ pd.setPort(uri.getPort()); >+ return pd; >+ } >+ >+ try { >+ // Then ask Gnome >+ pd = getGConfProxyInfo(protocol); >+ >+ if (pd != null) >+ return pd; >+ >+ // Then ask KDE >+ pd = getKdeProxyInfo(protocol); >+ if (pd != null) >+ return pd; >+ } catch (UnsatisfiedLinkError ex) { >+ // This has already been reported when the native code did not load >+ } >+ >+ return null; >+ } >+ >+ protected static native ProxyData getGConfProxyInfo(String protocol); >+ >+ protected static native String[] getGConfNonProxyHosts(); >+ >+ protected static native ProxyData getKdeProxyInfo(String protocol); >+ >+ protected static native String[] getKdeNonProxyHosts(); >+ >+} >Index: natives/unix/Debug/subdir.mk >=================================================================== >RCS file: natives/unix/Debug/subdir.mk >diff -N natives/unix/Debug/subdir.mk >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/Debug/subdir.mk 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,24 @@ >+################################################################################ >+# Automatically-generated file. Do not edit! >+################################################################################ >+ >+# Add inputs and outputs from these tool invocations to the build variables >+C_SRCS += \ >+../getsystemproxy.c >+ >+OBJS += \ >+./getsystemproxy.o >+ >+C_DEPS += \ >+./getsystemproxy.d >+ >+ >+# Each subdirectory must supply rules for building sources it contributes >+%.o: ../%.c >+ @echo 'Building file: $<' >+ @echo 'Invoking: GCC C Compiler' >+ gcc -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include/ -O0 -fPIC -g3 -Wall -c -fmessage-length=0 -m32 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o"$@" "$<" >+ @echo 'Finished building: $<' >+ @echo ' ' >+ >+ >Index: natives/unix/Debug/makefile >=================================================================== >RCS file: natives/unix/Debug/makefile >diff -N natives/unix/Debug/makefile >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ natives/unix/Debug/makefile 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,43 @@ >+################################################################################ >+# Automatically-generated file. Do not edit! >+################################################################################ >+ >+-include ../makefile.init >+ >+RM := rm -rf >+ >+# All of the sources participating in the build are defined here >+-include sources.mk >+-include subdir.mk >+-include objects.mk >+ >+ifneq ($(MAKECMDGOALS),clean) >+ifneq ($(strip $(C_DEPS)),) >+-include $(C_DEPS) >+endif >+endif >+ >+-include ../makefile.defs >+ >+# Add inputs and outputs from these tool invocations to the build variables >+ >+# All Target >+all: libproxysupport.so >+ >+# Tool invocations >+libproxysupport.so: $(OBJS) $(USER_OBJS) >+ @echo 'Building target: $@' >+ @echo 'Invoking: GCC C Linker' >+ gcc -m32 -shared -o"libproxysupport.so" $(OBJS) $(USER_OBJS) $(LIBS) >+ @echo 'Finished building target: $@' >+ @echo ' ' >+ >+# Other Targets >+clean: >+ -$(RM) $(OBJS)$(C_DEPS)$(LIBRARIES) libproxysupport.so >+ -@echo ' ' >+ >+.PHONY: all clean dependents >+.SECONDARY: >+ >+-include ../makefile.targets
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 226462
:
96832
|
96833
|
96835
|
96991
|
97178
|
97179
|
97399
|
97400
|
97566
|
97567
|
97582