Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/haad/proxychains.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Hamsik <haad@netbsd.org>2012-08-10 02:36:29 +0400
committerAdam Hamsik <haad@netbsd.org>2012-08-10 02:36:29 +0400
commit1c020ced1e97c697d6c927da0c0076835cb932b6 (patch)
tree9d2485f59cdd1f9cbc24d1ad3976208e4df594ff
parent361889a2d29414a0277bc2f606e29d9a2067066a (diff)
Port Proxychains to NetBSD.proxychains-4.2.0devel
-rw-r--r--Makefile2
-rwxr-xr-xconfigure19
-rw-r--r--src/core.c21
-rw-r--r--src/core.h24
-rw-r--r--src/libproxychains.c4
5 files changed, 46 insertions, 24 deletions
diff --git a/Makefile b/Makefile
index 422c0f7..763112d 100644
--- a/Makefile
+++ b/Makefile
@@ -18,7 +18,7 @@ OBJS = $(SRCS:.c=.o)
LOBJS = src/core.o src/common.o src/libproxychains.o
CCFLAGS = -Wall -O2 -g -std=c99 -D_GNU_SOURCE -pipe -DTHREAD_SAFE -Werror
-LDFLAGS = -shared -fPIC -ldl -lpthread
+LDFLAGS = -shared -fPIC -lpthread
INC =
PIC = -fPIC
AR = $(CROSS_COMPILE)ar
diff --git a/configure b/configure
index f99e008..f49f48b 100755
--- a/configure
+++ b/configure
@@ -40,6 +40,14 @@ ismac() {
uname -s | grep Darwin
}
+isbsd() {
+ uname -s | grep BSD
+}
+
+islinux() {
+ uname -s | grep Linux
+}
+
while true ; do
case $1 in
-*) parsearg "$1"; shift;;
@@ -88,9 +96,18 @@ if ismac ; then
echo LDSO_SUFFIX=dylib>>config.mak
echo MAC_CFLAGS+=-DIS_MAC=1 -arch x86_64 -arch i386 >>config.mak
echo MAC_LDFLAGS+=-arch x86_64 -arch i386 >>config.mak
- echo LD_SET_SONAME=-Wl,-install_name,>>config.mak
+ echo LD_SET_SONAME=-ldl -Wl,-install_name,>>config.mak
echo INSTALL_FLAGS=-m>>config.mak
fi
+if islinux ; then
+ echo LD_SET_SONAME=-ldl
+fi
+
+if isbsd ; then
+ echo INSTALL_FLAGS=-m>>config.mak
+ echo LD_SET_SONAME=-Wl,-rpath,$libdir -install_name,>>config.mak
+fi
+
echo done, now run make \&\& make install
diff --git a/src/core.c b/src/core.c
index c248f4e..e41c715 100644
--- a/src/core.c
+++ b/src/core.c
@@ -864,15 +864,18 @@ int proxy_getaddrinfo(const char *node, const char *service, const struct addrin
// printf("proxy_getaddrinfo node %s service %s\n",node,service);
space = calloc(1, sizeof(struct addrinfo_data));
- if(!space) goto err1;
+ if(!space)
+ return 1;
if(node && !inet_aton(node, &((struct sockaddr_in *) &space->sockaddr_space)->sin_addr)) {
hp = proxy_gethostbyname(node, &ghdata);
- if(hp)
+ if(hp) {
memcpy(&((struct sockaddr_in *) &space->sockaddr_space)->sin_addr,
*(hp->h_addr_list), sizeof(in_addr_t));
- else
- goto err2;
+ } else {
+ free(space);
+ return 1;
+ }
}
if(service)
proxy_getservbyname(service, &se_buf, buf, sizeof(buf), &se);
@@ -896,14 +899,12 @@ int proxy_getaddrinfo(const char *node, const char *service, const struct addrin
p->ai_flags = hints->ai_flags;
p->ai_protocol = hints->ai_protocol;
} else {
+#ifdef BSD
p->ai_flags = (AI_V4MAPPED | AI_ADDRCONFIG);
+#else
+ p->ai_flags = (AI_ADDRCONFIG);
+#endif
}
- goto out;
- err2:
- free(space);
- err1:
- return 1;
- out:
return 0;
}
diff --git a/src/core.h b/src/core.h
index 60e14b0..c0be4f6 100644
--- a/src/core.h
+++ b/src/core.h
@@ -102,20 +102,23 @@ typedef struct {
char pass[256];
} proxy_data;
-int connect_proxy_chain (int sock, ip_type target_ip, unsigned short target_port,
- proxy_data * pd, unsigned int proxy_count, chain_type ct,
- unsigned int max_chain );
+int connect_proxy_chain (int, ip_type, unsigned short, proxy_data *, unsigned int,
+ chain_type, unsigned int);
-void proxychains_write_log(char *str, ...);
+void proxychains_write_log(char *, ...);
typedef int (*connect_t)(int, const struct sockaddr *, socklen_t);
typedef struct hostent* (*gethostbyname_t)(const char *);
typedef int (*freeaddrinfo_t)(struct addrinfo *);
+
+#if (defined __linux__) || (defined __APPLE__)
typedef struct hostent *(*gethostbyaddr_t) (const void *, socklen_t, int);
+#else
+typedef struct hostent *(*gethostbyaddr_t) (const char *, socklen_t, int);
+#endif
typedef int (*getaddrinfo_t)(const char *, const char *, const struct addrinfo *,
struct addrinfo **);
-
typedef int (*getnameinfo_t) (const struct sockaddr *, socklen_t, char *,
socklen_t, char *, socklen_t, int);
@@ -134,13 +137,10 @@ struct gethostbyname_data {
char addr_name[1024 * 8];
};
-struct hostent* proxy_gethostbyname(const char *name, struct gethostbyname_data *data);
-void proxy_getservbyname(const char * service, struct servent *se_buf,
- char * buf, size_t buf_len, struct servent **se_result);
-
-int proxy_getaddrinfo(const char *node, const char *service,
- const struct addrinfo *hints, struct addrinfo **res);
-void proxy_freeaddrinfo(struct addrinfo *res);
+struct hostent* proxy_gethostbyname(const char *, struct gethostbyname_data *);
+void proxy_getservbyname(const char *, struct servent *, char *, size_t, struct servent **);
+int proxy_getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
+void proxy_freeaddrinfo(struct addrinfo *);
#ifdef DEBUG
# define PDEBUG(fmt, args...) do { fprintf(stderr,"DEBUG:"fmt, ## args); fflush(stderr); } while(0)
diff --git a/src/libproxychains.c b/src/libproxychains.c
index 21032f4..a64f619 100644
--- a/src/libproxychains.c
+++ b/src/libproxychains.c
@@ -425,7 +425,11 @@ int getnameinfo(const struct sockaddr *sa,
return ret;
}
+#if (defined __linux__) || (defined __APPLE__)
struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) {
+#else
+struct hostent *gethostbyaddr(const char *addr, socklen_t len, int type) {
+#endif
static char buf[16];
static char ipv4[4];
static char *list[2];