diff --git a/libs/libnatpmp/Makefile b/libs/libnatpmp/Makefile new file mode 100644 index 000000000..b9e49e206 --- /dev/null +++ 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 +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 new file mode 100644 index 000000000..d79dd3f6d --- /dev/null +++ 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 new file mode 100644 index 000000000..36b920692 --- /dev/null +++ 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 +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 new file mode 100644 index 000000000..7c548b40b --- /dev/null +++ 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 new file mode 100644 index 000000000..988cb8e5a --- /dev/null +++ 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