redsocks: add package
authorFlorian Fainelli <florian@openwrt.org>
Tue, 16 Oct 2012 15:55:51 +0000 (15:55 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Tue, 16 Oct 2012 15:55:51 +0000 (15:55 +0000)
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 <basti@linkt.de>
SVN-Revision: 33799

net/redsocks/Makefile [new file with mode: 0644]
net/redsocks/files/redsocks.init [new file with mode: 0644]
net/redsocks/patches/010-fix-undeclared.diff [new file with mode: 0644]

diff --git a/net/redsocks/Makefile b/net/redsocks/Makefile
new file mode 100644 (file)
index 0000000..64c5e81
--- /dev/null
@@ -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 (file)
index 0000000..244d3a2
--- /dev/null
@@ -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 (file)
index 0000000..0f41e5c
--- /dev/null
@@ -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);