mirror of
https://github.com/haad/proxychains.git
synced 2026-09-14 11:05:48 +05:00
Port Proxychains to NetBSD.
This commit is contained in:
parent
361889a2d2
commit
1c020ced1e
2
Makefile
2
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
|
||||
|
||||
19
configure
vendored
19
configure
vendored
@ -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
|
||||
|
||||
|
||||
21
src/core.c
21
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;
|
||||
}
|
||||
|
||||
24
src/core.h
24
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)
|
||||
|
||||
@ -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];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user