diff --git a/net/tsocks/Makefile b/net/tsocks/Makefile index 2f67b428b335..b7930504b128 100644 --- a/net/tsocks/Makefile +++ b/net/tsocks/Makefile @@ -1,56 +1,54 @@ PORTNAME= tsocks DISTVERSION= 1.8.b5 -PORTREVISION= 8 +PORTREVISION= 9 CATEGORIES= net security MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/1.8%20beta%205 \ http://ftp1.sourceforge.net/tsocks/ \ http://www.yazzy.org/ports/tsocks/ DISTNAME= ${PORTNAME}-${PORTVERSION:C/.b/beta/} MAINTAINER= ehaupt@FreeBSD.org COMMENT= Allow non SOCKS aware applications to use SOCKS without modification WWW= http://tsocks.sourceforge.net LICENSE= GPLv2 USES= gmake USE_LDCONFIG= yes GNU_CONFIGURE= yes +CONFIGURE_ARGS= --libdir=${PREFIX}/lib \ + --with-conf=${PREFIX}/etc/tsocks.conf -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:C/.b.*//} +SUB_FILES= pkg-message -CONFIGURE_ARGS= --with-conf=${PREFIX}/etc/tsocks.conf \ - --libdir=${PREFIX}/lib +WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:C/.b.*//} -OPTIONS_DEFINE= DOCS EXAMPLES HOSTNAMES MUTE OLDMETHOD SOCKSDNS -OPTIONS_DEFAULT=HOSTNAMES +OPTIONS_DEFINE= DOCS EXAMPLES HOSTNAMES MUTE OLDMETHOD SOCKSDNS +OPTIONS_DEFAULT= HOSTNAMES HOSTNAMES_DESC= Enable DNS lookups -OLDMETHOD_DESC= Do not use RTLD_NEXT parameter to dlsym MUTE_DESC= Disable all error messages +OLDMETHOD_DESC= Do not use RTLD_NEXT parameter to dlsym SOCKSDNS_DESC= Intercept DNS requests and attempt to force them to use TCP HOSTNAMES_CONFIGURE_OFF= --disable-hostnames -MUTE_CONFIGURE_ON= --disable-debug -OLDMETHOD_CONFIGURE_ON= --enable-oldmethod -SOCKSDNS_CONFIGURE_ON= --enable-socksdns - -SUB_FILES= pkg-message +MUTE_CONFIGURE_ON= --disable-debug +OLDMETHOD_CONFIGURE_ON= --enable-oldmethod +SOCKSDNS_CONFIGURE_ON= --enable-socksdns post-patch: - @${REINPLACE_CMD} -e 's|ufds|fds|g' ${WRKSRC}/tsocks.c @${REINPLACE_CMD} -e 's|/usr|${PREFIX}|' ${WRKSRC}/tsocks post-install: ${INSTALL_PROGRAM} ${WRKSRC}/inspectsocks ${STAGEDIR}${PREFIX}/bin ${INSTALL_PROGRAM} ${WRKSRC}/validateconf ${STAGEDIR}${PREFIX}/bin ${INSTALL_DATA} ${WRKSRC}/tsocks.conf.simple.example \ ${STAGEDIR}${PREFIX}/etc/tsocks.conf.sample @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${INSTALL_DATA} ${WRKSRC}/*.example ${STAGEDIR}${EXAMPLESDIR} @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/INSTALL ${STAGEDIR}${DOCSDIR}/README ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/lib${PORTNAME}.so .include diff --git a/net/tsocks/files/patch-tsocks b/net/tsocks/files/patch-tsocks new file mode 100644 index 000000000000..ee7b7441bf33 --- /dev/null +++ b/net/tsocks/files/patch-tsocks @@ -0,0 +1,11 @@ +--- tsocks.orig 2002-03-16 10:27:18 UTC ++++ tsocks +@@ -53,7 +53,7 @@ case "$1" in + fi + ;; + off) +- export LD_PRELOAD=`echo -n $LD_PRELOAD | sed 's/\/usr\/lib\/libtsocks.so \?//'` ++ export LD_PRELOAD=`echo -n $LD_PRELOAD | sed 's|/usr/lib/libtsocks.so[[:blank:]]*||'` + if [ -z "$LD_PRELOAD" ] + then + unset LD_PRELOAD diff --git a/net/tsocks/files/patch-tsocks.c b/net/tsocks/files/patch-tsocks.c index eed81cc56f58..4694fc25cf92 100644 --- a/net/tsocks/files/patch-tsocks.c +++ b/net/tsocks/files/patch-tsocks.c @@ -1,19 +1,133 @@ --- tsocks.c.orig 2002-07-15 22:50:52 UTC +++ tsocks.c -@@ -852,7 +852,7 @@ static int connect_server(struct connreq +@@ -531,12 +531,12 @@ int poll(POLL_SIGNATURE) { + /* If we're not currently managing any requests we can just + * leave here */ + if (!requests) +- return(realpoll(ufds, nfds, timeout)); ++ return(realpoll(fds, nfds, timeout)); + + get_environment(); + + show_msg(MSGDEBUG, "Intercepted call to poll with %d fds, " +- "0x%08x timeout %d\n", nfds, ufds, timeout); ++ "0x%08x timeout %d\n", nfds, fds, timeout); + + for (conn = requests; conn != NULL; conn = conn->next) + conn->selectevents = 0; +@@ -544,16 +544,16 @@ int poll(POLL_SIGNATURE) { + /* Record what events on our sockets the caller was interested + * in */ + for (i = 0; i < nfds; i++) { +- if (!(conn = find_socks_request(ufds[i].fd, 0))) ++ if (!(conn = find_socks_request(fds[i].fd, 0))) + continue; + show_msg(MSGDEBUG, "Have event checks for socks enabled socket %d\n", + conn->sockid); +- conn->selectevents = ufds[i].events; ++ conn->selectevents = fds[i].events; + monitoring = 1; + } + + if (!monitoring) +- return(realpoll(ufds, nfds, timeout)); ++ return(realpoll(fds, nfds, timeout)); + + /* This is our poll loop. In it we repeatedly call poll(). We + * pass select the same event list as provided by the caller except we +@@ -566,25 +566,25 @@ int poll(POLL_SIGNATURE) { + do { + /* Enable our sockets for the events WE want to hear about */ + for (i = 0; i < nfds; i++) { +- if (!(conn = find_socks_request(ufds[i].fd, 0))) ++ if (!(conn = find_socks_request(fds[i].fd, 0))) + continue; + + /* We always want to know about socket exceptions but they're + * always returned (i.e they don't need to be in the list of + * wanted events to be returned by the kernel */ +- ufds[i].events = 0; ++ fds[i].events = 0; + + /* If we're waiting for a connect or to be able to send + * on a socket we want to get write events */ + if ((conn->state == SENDING) || (conn->state == CONNECTING)) +- ufds[i].events |= POLLOUT; ++ fds[i].events |= POLLOUT; + /* If we're waiting to receive data we want to get + * read events */ + if (conn->state == RECEIVING) +- ufds[i].events |= POLLIN; ++ fds[i].events |= POLLIN; + } + +- nevents = realpoll(ufds, nfds, timeout); ++ nevents = realpoll(fds, nfds, timeout); + /* If there were no events we must have timed out or had an error */ + if (nevents <= 0) + break; +@@ -597,29 +597,29 @@ int poll(POLL_SIGNATURE) { + continue; + + /* Find the socket in the poll list */ +- for (i = 0; ((i < nfds) && (ufds[i].fd != conn->sockid)); i++) ++ for (i = 0; ((i < nfds) && (fds[i].fd != conn->sockid)); i++) + /* Empty Loop */; + if (i == nfds) + continue; + + show_msg(MSGDEBUG, "Checking socket %d for events\n", conn->sockid); + +- if (!ufds[i].revents) { ++ if (!fds[i].revents) { + show_msg(MSGDEBUG, "No events on socket\n"); + continue; + } + + /* Clear any read or write events on the socket, we'll reset + * any that are necessary later. */ +- setevents = ufds[i].revents; ++ setevents = fds[i].revents; + if (setevents & POLLIN) { + show_msg(MSGDEBUG, "Socket had read event\n"); +- ufds[i].revents &= ~POLLIN; ++ fds[i].revents &= ~POLLIN; + nevents--; + } + if (setevents & POLLOUT) { + show_msg(MSGDEBUG, "Socket had write event\n"); +- ufds[i].revents &= ~POLLOUT; ++ fds[i].revents &= ~POLLOUT; + nevents--; + } + if (setevents & (POLLERR | POLLNVAL | POLLHUP)) +@@ -669,10 +669,10 @@ int poll(POLL_SIGNATURE) { + + /* Now restore the events polled in each of the blocks */ + for (i = 0; i < nfds; i++) { +- if (!(conn = find_socks_request(ufds[i].fd, 1))) ++ if (!(conn = find_socks_request(fds[i].fd, 1))) + continue; + +- ufds[i].events = conn->selectevents; ++ fds[i].events = conn->selectevents; + } + + return(nevents); +@@ -852,7 +852,7 @@ static int connect_server(struct connreq *conn) { sizeof(conn->serveraddr)); show_msg(MSGDEBUG, "Connect returned %d, errno is %d\n", rc, errno); - if (rc) { + if (rc && errno != EISCONN) { if (errno != EINPROGRESS) { show_msg(MSGERR, "Error %d attempting to connect to SOCKS " "server (%s)\n", errno, strerror(errno)); -@@ -862,6 +862,7 @@ static int connect_server(struct connreq +@@ -862,6 +862,7 @@ static int connect_server(struct connreq *conn) { conn->state = CONNECTING; } } else { + rc = 0; show_msg(MSGDEBUG, "Socket %d connected to SOCKS server\n", conn->sockid); conn->state = CONNECTED; }