From: Florian Fainelli Date: Tue, 16 Oct 2012 15:55:51 +0000 (+0000) Subject: redsocks: add package X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=33a365d30ef71a5b821ad6afce6a883e457e5bcd;p=openwrt%2Fsvn-archive%2Fpackages.git redsocks: add package Redsocks is a daemon running on the local system, that will transparently tunnel any TCP connection via a remote SOCKS4, SOCKS5 or HTTP proxy server. It uses the system firewall's redirection facility to intercept TCP connections, thus the redirection is system-wide, with fine-grained control, and does not depend on LD_PRELOAD libraries. Signed-off-by: Sebastian Muszynski SVN-Revision: 33799 --- diff --git a/net/redsocks/Makefile b/net/redsocks/Makefile new file mode 100644 index 000000000..64c5e81a5 --- /dev/null +++ b/net/redsocks/Makefile @@ -0,0 +1,52 @@ +# +# Copyright (C) 2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk + +PKG_NAME:=redsocks +PKG_VERSION:=0.4 +PKG_RELEASE=$(PKG_SOURCE_VERSION) + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/darkk/redsocks.git +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=a9cfd090119385a1ef973baf94342a2db20595b9 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz + +include $(INCLUDE_DIR)/package.mk + +define Package/redsocks + SECTION:=net + CATEGORY:=Network + SUBMENU:=Web Servers/Proxies + DEPENDS:=+libevent2 + TITLE:=Redirect any TCP connection to a SOCKS or HTTPS proxy server +endef + +define Package/redsocks/description + Redsocks is a daemon running on the local system, that will transparently + tunnel any TCP connection via a remote SOCKS4, SOCKS5 or HTTP proxy server. It + uses the system firewall's redirection facility to intercept TCP connections, + thus the redirection is system-wide, with fine-grained control, and does + not depend on LD_PRELOAD libraries. + + Redsocks supports tunneling TCP connections and UDP packets. It has + authentication support for both, SOCKS and HTTP proxies. + + Also included is a small DNS server returning answers with the "truncated" flag + set for any UDP query, forcing the resolver to use TCP. +endef + +define Package/redsocks/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/redsocks $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/redsocks.init $(1)/etc/init.d/redsocks + $(INSTALL_DIR) $(1)/etc + $(INSTALL_CONF) $(PKG_BUILD_DIR)/redsocks.conf.example $(1)/etc/redsocks.conf +endef + +$(eval $(call BuildPackage,redsocks)) diff --git a/net/redsocks/files/redsocks.init b/net/redsocks/files/redsocks.init new file mode 100644 index 000000000..244d3a299 --- /dev/null +++ b/net/redsocks/files/redsocks.init @@ -0,0 +1,14 @@ +#!/bin/sh /etc/rc.common + +START=80 +APP=redsocks +PID_FILE=/var/run/$APP.pid + +start() { + start-stop-daemon -S -x $APP -p $PID_FILE -m -b -- -c /etc/redsocks.conf +} + +stop() { + start-stop-daemon -K -n $APP -p $PID_FILE -s TERM + rm -rf $PID_FILE +} diff --git a/net/redsocks/patches/010-fix-undeclared.diff b/net/redsocks/patches/010-fix-undeclared.diff new file mode 100644 index 000000000..0f41e5c82 --- /dev/null +++ b/net/redsocks/patches/010-fix-undeclared.diff @@ -0,0 +1,28 @@ +diff -ur redsocks-0.4.orig/redudp.c redsocks-0.4/redudp.c +--- redsocks-0.4.orig/redudp.c 2012-07-27 20:30:40.283988208 +0200 ++++ redsocks-0.4/redudp.c 2012-07-27 20:31:35.759985938 +0200 +@@ -33,6 +33,10 @@ + #include "redsocks.h" + #include "redudp.h" + ++#define IP_ORIGDSTADDR 20 ++#define IP_TRANSPARENT 19 ++#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR ++ + #define redudp_log_error(client, prio, msg...) \ + redsocks_log_write_plain(__FILE__, __LINE__, __func__, 0, &(client)->clientaddr, get_destaddr(client), prio, ## msg) + #define redudp_log_errno(client, prio, msg...) \ +diff -ur redsocks-0.4.orig/utils.c redsocks-0.4/utils.c +--- redsocks-0.4.orig/utils.c 2012-07-27 20:30:40.283988208 +0200 ++++ redsocks-0.4/utils.c 2012-07-27 20:31:20.075986580 +0200 +@@ -26,6 +26,10 @@ + #include "utils.h" + #include "redsocks.h" // for redsocks_close + ++#define IP_ORIGDSTADDR 20 ++#define IP_TRANSPARENT 19 ++#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR ++ + int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inaddr, struct sockaddr_in *toaddr) + { + socklen_t addrlen = sizeof(*inaddr);