diff options
author | Tomasz Zarna | 2008-04-25 14:13:39 +0000 |
---|---|---|
committer | Tomasz Zarna | 2008-04-25 14:13:39 +0000 |
commit | 8df1375fdf52ce309b52960caa841ac2ba04d01f (patch) | |
tree | e3afe88aa80bde699635305be56f9547452dc36f /bundles/org.eclipse.core.net/natives/unix | |
parent | bcc7457688a8f5dcf025adf7cd471bc527b5df5f (diff) | |
download | eclipse.platform.team-8df1375fdf52ce309b52960caa841ac2ba04d01f.tar.gz eclipse.platform.team-8df1375fdf52ce309b52960caa841ac2ba04d01f.tar.xz eclipse.platform.team-8df1375fdf52ce309b52960caa841ac2ba04d01f.zip |
bug 228738: support automatic proxy lookup mechanism for gnome
Diffstat (limited to 'bundles/org.eclipse.core.net/natives/unix')
3 files changed, 220 insertions, 261 deletions
diff --git a/bundles/org.eclipse.core.net/natives/unix/Debug/subdir.mk b/bundles/org.eclipse.core.net/natives/unix/Debug/subdir.mk deleted file mode 100644 index 404df796e..000000000 --- a/bundles/org.eclipse.core.net/natives/unix/Debug/subdir.mk +++ /dev/null @@ -1,24 +0,0 @@ -################################################################################ -# 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 ' ' - - diff --git a/bundles/org.eclipse.core.net/natives/unix/GetProxyGnome/getproxygnome.d b/bundles/org.eclipse.core.net/natives/unix/GetProxyGnome/getproxygnome.d new file mode 100644 index 000000000..b8c3630c8 --- /dev/null +++ b/bundles/org.eclipse.core.net/natives/unix/GetProxyGnome/getproxygnome.d @@ -0,0 +1,220 @@ +getproxygnome.d getproxygnome.o: ../getproxygnome.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/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/gutils.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/gscanner.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/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/gutils.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/gscanner.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: diff --git a/bundles/org.eclipse.core.net/natives/unix/getsystemproxy.c b/bundles/org.eclipse.core.net/natives/unix/getsystemproxy.c deleted file mode 100644 index 069c3e19f..000000000 --- a/bundles/org.eclipse.core.net/natives/unix/getsystemproxy.c +++ /dev/null @@ -1,237 +0,0 @@ -/* - * 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; -} - |