commit 1a0a7d316e5b1152e027521da8ba6874299205b9
parent e4aa213a98e0d44ea827f0832cfa80dacb1394e6
Author: Ted Hess <thess@kitschensync.net>
Date: Sun, 14 Sep 2014 16:13:50 -0400
Merge pull request #311 from hauke/tor
Tor
Diffstat:
5 files changed, 267 insertions(+), 0 deletions(-)
diff --git a/libs/libnatpmp/Makefile b/libs/libnatpmp/Makefile
@@ -0,0 +1,87 @@
+#
+# Copyright (C) 2011-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:=libnatpmp
+PKG_VERSION:=20140401
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://miniupnp.free.fr/files
+PKG_MD5SUM:=7c9a7c76e200ead4e6447fe4b105f676
+PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
+PKG_LICENSE:=BSD-3c
+PKG_LICENSE_FILE:=LICENSE
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libnatpmp/Default
+ TITLE:=NAT Port Mapping Protocol (NAT-PMP)
+ URL:=http://miniupnp.free.fr/libnatpmp.html
+endef
+
+define Package/libnatpmp/Default/description
+ libnatpmp is an attempt to make a portable and fully compliant implementation
+ of the protocol for the client side. It is based on non blocking sockets and
+ all calls of the API are asynchronous. It is therefore very easy to integrate
+ the NAT-PMP code to any event driven code.
+endef
+
+define Package/libnatpmp
+ $(call Package/libnatpmp/Default)
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE+= library
+endef
+
+define Package/libnatpmp/description
+ $(call Package/libnatpmp/Default/description)
+ This package contains the shared library.
+endef
+
+define Package/natpmpc
+ $(call Package/libnatpmp/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Firewall
+ TITLE+= client
+ DEPENDS:=+libnatpmp
+endef
+
+define Package/natpmpc/description
+ $(call Package/libnatpmp/Default/description)
+ This package contains the natpmp client.
+endef
+
+MAKE_FLAGS += \
+ COPTS="$(TARGET_CFLAGS)" \
+ PREFIX="$(PKG_INSTALL_DIR)" \
+ OS="Linux"
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/declspec.h $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/natpmp.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp*.{so*,a} $(1)/usr/lib/
+endef
+
+define Package/libnatpmp/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp.so.* $(1)/usr/lib/
+endef
+
+define Package/natpmpc/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/natpmpc $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,libnatpmp))
+$(eval $(call BuildPackage,natpmpc))
diff --git a/libs/libnatpmp/patches/001-install_declspec.patch b/libs/libnatpmp/patches/001-install_declspec.patch
@@ -0,0 +1,11 @@
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ else
+ endif
+ endif
+
+-HEADERS = natpmp.h
++HEADERS = natpmp.h declspec.h
+
+ EXECUTABLES = testgetgateway natpmpc-shared natpmpc-static
+
diff --git a/net/tor/Makefile b/net/tor/Makefile
@@ -0,0 +1,120 @@
+#
+# Copyright (C) 2008-2014 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:=tor
+PKG_VERSION:=0.2.4.23
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://www.torproject.org/dist \
+ https://archive.torproject.org/tor-package-archive
+PKG_MD5SUM:=9e39928e310612c3bffee727f554c63f
+PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
+PKG_LICENSE_FILE:=LICENSE
+
+PKG_BUILD_DEPENDS:=libminiupnpc libnatpmp
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tor/Default
+ SECTION:=net
+ CATEGORY:=Network
+ URL:=https://www.torproject.org/
+endef
+
+define Package/tor/Default/description
+ Tor is a toolset for a wide range of organizations and people that want to
+ improve their safety and security on the Internet. Using Tor can help you
+ anonymize web browsing and publishing, instant messaging, IRC, SSH, and
+ more. Tor also provides a platform on which software developers can build
+ new applications with built-in anonymity, safety, and privacy features.
+endef
+
+define Package/tor
+$(call Package/tor/Default)
+ TITLE:=An anonymous Internet communication system
+ DEPENDS:=+libevent2 +libopenssl +libpthread +librt +SSP_SUPPORT:libssp
+endef
+
+define Package/tor/description
+$(call Package/tor/Default/description)
+ This package contains the tor daemon.
+endef
+
+define Package/tor-fw-helper
+$(call Package/tor/Default)
+ TITLE:=Firewall helper for tor
+ DEPENDS:=+tor +libminiupnpc +libnatpmp
+endef
+
+define Package/tor-fw-helper/description
+$(call Package/tor/Default/description)
+ This package contains a helper for automatically configuring port forwarding.
+endef
+
+define Package/tor-geoip
+$(call Package/tor/Default)
+ TITLE:=GeoIP db for tor
+ DEPENDS:=+tor
+endef
+
+define Package/tor-geoip/description
+$(call Package/tor/Default/description)
+ This package contains a GeoIP database mapping IP addresses to countries.
+endef
+
+define Package/tor/conffiles
+/etc/tor/torrc
+endef
+
+CONFIGURE_ARGS += \
+ --with-libevent-dir="$(STAGING_DIR)/usr" \
+ --with-ssl-dir="$(STAGING_DIR)/usr" \
+ --enable-upnp \
+ --with-libminiupnpc-dir="$(STAGING_DIR)/usr" \
+ --enable-nat-pmp \
+ --with-libnatpmp-dir="$(STAGING_DIR)/usr" \
+ --disable-asciidoc
+
+ifneq ($(CONFIG_SSP_SUPPORT),y)
+ CONFIGURE_ARGS += \
+ --disable-gcc-hardening
+ MAKE_FLAGS += \
+ CFLAGS="$(TARGET_CFLAGS)"
+else
+ MAKE_FLAGS += \
+ CFLAGS="$(TARGET_CFLAGS) -fPIC"
+endif
+
+CONFIGURE_VARS += \
+ CROSS_COMPILE="yes"
+
+define Package/tor/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tor $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/tor.init $(1)/etc/init.d/tor
+ $(INSTALL_DIR) $(1)/etc/tor
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/tor/torrc.sample $(1)/etc/tor/torrc
+endef
+
+define Package/tor-fw-helper/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tor-fw-helper $(1)/usr/bin/
+endef
+
+define Package/tor-geoip/install
+ $(INSTALL_DIR) $(1)/usr/share/tor
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/tor/geoip $(1)/usr/share/tor/
+endef
+
+$(eval $(call BuildPackage,tor))
+$(eval $(call BuildPackage,tor-fw-helper))
+$(eval $(call BuildPackage,tor-geoip))
diff --git a/net/tor/files/tor.init b/net/tor/files/tor.init
@@ -0,0 +1,28 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006-2011 OpenWrt.org
+
+START=50
+STOP=50
+
+USE_PROCD=1
+
+start_service() {
+ user_exists tor 52 || user_add tor 52 52 /var/lib/tor
+ group_exists tor 52 || group_add tor 52
+ [ -f /var/run/tor.pid ] || {
+ touch /var/run/tor.pid
+ chown tor:tor /var/run/tor.pid
+ }
+ [ -d /var/lib/tor ] || {
+ mkdir -m 0755 -p /var/lib/tor
+ chmod 0700 /var/lib/tor
+ chown tor:tor /var/lib/tor
+ }
+ [ -d /var/log/tor ] || {
+ mkdir -m 0755 -p /var/log/tor
+ chown tor:tor /var/log/tor
+ }
+ procd_open_instance
+ procd_set_param command /usr/sbin/tor --runasdaemon 0
+ procd_close_instance
+}
diff --git a/net/tor/patches/001-torrc.patch b/net/tor/patches/001-torrc.patch
@@ -0,0 +1,21 @@
+--- a/src/config/torrc.sample.in
++++ b/src/config/torrc.sample.in
+@@ -45,11 +45,11 @@
+ ## Uncomment this to start the process in the background... or use
+ ## --runasdaemon 1 on the command line. This is ignored on Windows;
+ ## see the FAQ entry if you want Tor to run as an NT service.
+-#RunAsDaemon 1
++RunAsDaemon 1
+
+ ## The directory for keeping all the keys/etc. By default, we store
+ ## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
+-#DataDirectory @LOCALSTATEDIR@/lib/tor
++DataDirectory @LOCALSTATEDIR@/lib/tor
+
+ ## The port on which Tor will listen for local connections from Tor
+ ## controller applications, as documented in control-spec.txt.
+@@ -187,3 +187,4 @@
+ ## address manually to your friends, uncomment this line:
+ #PublishServerDescriptor 0
+
++User tor