tAdded code to get username (for SOCKS4 CONNECT requests) under Win32 - vaccine… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit a281eabbbacadf5343bd655f36a5e5c300e5696b | |
parent 013c93d79269fed4dfce4b2aa3f6ab1af1d8ba07 | |
Author: Ben Webb <[email protected]> | |
Date: Fri, 12 Oct 2001 16:24:13 +0000 | |
Added code to get username (for SOCKS4 CONNECT requests) under Win32 | |
Diffstat: | |
M configure | 2 +- | |
M configure.in | 2 +- | |
M src/network.c | 28 ++++++++++++++++++++++------ | |
3 files changed, 24 insertions(+), 8 deletions(-) | |
--- | |
diff --git a/configure b/configure | |
t@@ -3231,7 +3231,7 @@ EOF | |
CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin" | |
- LIBS="$LIBS -lwsock32 -lcomctl32" | |
+ LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr" | |
LDFLAGS="$LDFLAGS -lglib-1.3" | |
diff --git a/configure.in b/configure.in | |
t@@ -50,7 +50,7 @@ if test "$CYGWIN" = "yes" ; then | |
dnl that can happen is that "make" fails later on. | |
CFLAGS="$CFLAGS -mwindows -fnative-struct -mno-cygwin" | |
- LIBS="$LIBS -lwsock32 -lcomctl32" | |
+ LIBS="$LIBS -lwsock32 -lcomctl32 -lmpr" | |
dnl Glib stuff | |
LDFLAGS="$LDFLAGS -lglib-1.3" | |
diff --git a/src/network.c b/src/network.c | |
t@@ -776,7 +776,10 @@ gboolean StartSocksNegotiation(NetworkBuffer *NetBuf,gcha… | |
guint addlen,i; | |
struct in_addr *h_addr; | |
unsigned short int netport; | |
-#ifndef CYGWIN | |
+#ifdef CYGWIN | |
+ gchar *username=NULL; | |
+ DWORD bufsize; | |
+#else | |
struct passwd *pwd; | |
#endif | |
t@@ -814,16 +817,28 @@ gboolean StartSocksNegotiation(NetworkBuffer *NetBuf,gch… | |
he = LookupHostname(RemoteHost,&NetBuf->error); | |
if (!he) return FALSE; | |
-#ifndef CYGWIN | |
+#ifdef CYGWIN | |
+ bufsize=0; | |
+ WNetGetUser(NULL,username,&bufsize); | |
+ if (GetLastError()!=ERROR_MORE_DATA) { | |
+ SetError(&NetBuf->error,ET_WIN32,GetLastError()); | |
+ return FALSE; | |
+ } else { | |
+ username=g_malloc(bufsize); | |
+ if (WNetGetUser(NULL,username,&bufsize)!=NO_ERROR) { | |
+ SetError(&NetBuf->error,ET_WIN32,GetLastError()); | |
+ return FALSE; | |
+ } | |
+ } | |
+g_print("username %s\n",username); | |
+ addlen=9+strlen(username); | |
+#else | |
pwd = getpwuid(getuid()); | |
if (!pwd || !pwd->pw_name) return FALSE; | |
g_print("username %s\n",pwd->pw_name); | |
addlen=9+strlen(pwd->pw_name); | |
-#else | |
- addlen=13; | |
#endif | |
- | |
h_addr = (struct in_addr *)he->h_addr; | |
g_assert(sizeof(struct in_addr)==4); | |
t@@ -840,7 +855,8 @@ g_print("username %s\n",pwd->pw_name); | |
memcpy(&addpt[2],&netport,sizeof(netport)); | |
memcpy(&addpt[4],h_addr,sizeof(struct in_addr)); | |
#ifdef CYGWIN | |
- strcpy(&addpt[8],"user"); | |
+ strcpy(&addpt[8],username); | |
+ g_free(username); | |
#else | |
strcpy(&addpt[8],pwd->pw_name); | |
#endif |