+++ /dev/null
-#
-# Copyright (C) 2008 Christian Pointner,
-# <equinox@anytun.org>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-# This Makefile builds uAnytun Package for OpenWRT
-#
-# $Id: $
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=uanytun
-PKG_VERSION:=0.3.3
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.anytun.org/download/
-PKG_MD5SUM:=ca39dab02e91b0737e2b3f0839e74f6a
-
-include $(INCLUDE_DIR)/package.mk
-
-
-define Package/uanytun/template
- SECTION:=net
- CATEGORY:=Network
- TITLE:=micro anycast tunneling daemon
- URL:=http://www.anytun.org/
- MAINTAINER:=Christian Pointner <equinox@anytun.org>
- SUBMENU:=VPN
-endef
-
-define Package/uanytun/desc-template
-uAnytun is a tiny implementation of SATP the secure anycast tunneling protocol.
- SATP defines a protocol used for communication between any combination of
- unicast and anycast tunnel endpoints. It has less protocol overhead than
- IPSec in Tunnel mode and allows tunneling of every ETHER TYPE protocol (e.g.
- ethernet, ip, arp ...). SATP directly includes cryptography and message
- authentication based on the methodes used by SRTP. It is intended to deliver
- a generic, scaleable and secure solution for tunneling and relaying of packets
- of any protocol.
- Unlike Anytun which is a full featured implementation uAnytun has no support
- for multiple connections or synchronisation. It is a small single threaded
- implementation intended to act as a client on small platforms.
-endef
-
-
-define Package/uanytun
- $(call Package/uanytun/template)
- DEPENDS:=+kmod-tun +libgcrypt
-endef
-
-define Package/uanytun/conffiles
-/etc/config/uanytun
-endef
-
-define Package/uanytun/description
- $(call Package/uanytun/desc-template)
-endef
-
-
-define Package/uanytun-sslcrypt
- $(call Package/uanytun/template)
- DEPENDS:=+kmod-tun +libopenssl
-endef
-
-define Package/uanytun-sslcrypt/conffiles
-/etc/config/uanytun-sslcrypt
-endef
-
-define Package/uanytun-sslcrypt/description
- $(call Package/uanytun/desc-template)
-endef
-
-
-define Package/uanytun-nocrypt
- $(call Package/uanytun/template)
- DEPENDS:=+kmod-tun
-endef
-
-define Package/uanytun-nocrypt/conffiles
-/etc/config/uanytun-nocrypt
-endef
-
-define Package/uanytun-nocrypt/description
- $(call Package/uanytun/desc-template)
-endef
-
-define Package/uanytun/configure
- (cd $(1)/$(2)/src; \
- touch include.mk; \
- ln -s linux/tun.c .; \
- echo '#ifndef UANYTUN_version_h_INCLUDED' > version.h; \
- echo '#define UANYTUN_version_h_INCLUDED' >> version.h; \
- echo '' >> version.h; \
- echo '#define VERSION_STRING_0 "uanytun version '`cat $(1)/version`'"' >> version.h; \
- echo '#define VERSION_STRING_1 "built on '`hostname`', '`date +"%d.%m.%Y %H:%M:%S %Z"`'"' >> version.h; \
- echo '' >> version.h; \
- echo '#endif' >> version.h \
- )
-endef
-
-ifneq ($(CONFIG_PACKAGE_uanytun-nocrypt),)
- define Build/Configure/uanytun-nocrypt
- rm -rf $(PKG_BUILD_DIR)/uanytun-nocrypt
- mkdir -p $(PKG_BUILD_DIR)/uanytun-nocrypt
- $(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun-nocrypt
- $(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun-nocrypt)
- endef
-
- define Build/Compile/uanytun-nocrypt
- $(MAKE) -C $(PKG_BUILD_DIR)/uanytun-nocrypt/src \
- $(TARGET_CONFIGURE_OPTS) \
- NO_CRYPT_OBJ=1 \
- TARGET=Linux \
- CFLAGS="$(TARGET_CFLAGS) -DNO_CRYPT" \
- LDFLAGS="$(TARGET_LDFLAGS) -ldl"
- $(STRIP) $(PKG_BUILD_DIR)/uanytun-nocrypt/src/uanytun
- endef
-endif
-
-ifneq ($(CONFIG_PACKAGE_uanytun-sslcrypt),)
- define Build/Configure/uanytun-sslcrypt
- rm -rf $(PKG_BUILD_DIR)/uanytun-sslcrypt
- mkdir -p $(PKG_BUILD_DIR)/uanytun-sslcrypt
- $(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun-sslcrypt
- $(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun-sslcrypt)
- endef
-
- define Build/Compile/uanytun-sslcrypt
- $(MAKE) -C $(PKG_BUILD_DIR)/uanytun-sslcrypt/src \
- $(TARGET_CONFIGURE_OPTS) \
- TARGET=Linux \
- CFLAGS="$(TARGET_CFLAGS) -DUSE_SSL_CRYPTO -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="$(TARGET_LDFLAGS) -ldl -lcrypto"
- $(STRIP) $(PKG_BUILD_DIR)/uanytun-sslcrypt/src/uanytun
- endef
-endif
-
-ifneq ($(CONFIG_PACKAGE_uanytun),)
- define Build/Configure/uanytun-default
- rm -rf $(PKG_BUILD_DIR)/uanytun
- mkdir -p $(PKG_BUILD_DIR)/uanytun
- $(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun
- $(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun)
- endef
-
- define Build/Compile/uanytun-default
- $(MAKE) -C $(PKG_BUILD_DIR)/uanytun/src \
- $(TARGET_CONFIGURE_OPTS) \
- TARGET=Linux \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
- LDFLAGS="$(TARGET_LDFLAGS) -ldl -lgcrypt -lgpg-error"
- $(STRIP) $(PKG_BUILD_DIR)/uanytun/src/uanytun
- endef
-endif
-
-
-define Build/Configure
- $(call Build/Configure/uanytun-nocrypt)
- $(call Build/Configure/uanytun-sslcrypt)
- $(call Build/Configure/uanytun-default)
-endef
-
-define Build/Compile
- $(call Build/Compile/uanytun-nocrypt)
- $(call Build/Compile/uanytun-sslcrypt)
- $(call Build/Compile/uanytun-default)
-endef
-
-define Build/Clean
- rm -rf $(PKG_BUILD_DIR)/uanytun-nocrypt
- rm -rf $(PKG_BUILD_DIR)/uanytun-sslcrypt
- rm -rf $(PKG_BUILD_DIR)/uanytun
-endef
-
-
-
-define Package/uanytun/install-generic
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_DATA) ./files/$(3) $(1)/etc/config/$(2)
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(2)/src/uanytun $(1)/usr/sbin/$(2)
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/uanytun.init $(1)/etc/init.d/$(2)
- @sed -e 's/BIN=uanytun/BIN=$(2)/' -i $(1)/etc/init.d/$(2)
-endef
-
-define Package/uanytun/install
- $(call Package/uanytun/install-generic,$(1),uanytun,uanytun.config)
-endef
-
-define Package/uanytun-sslcrypt/install
- $(call Package/uanytun/install-generic,$(1),uanytun-sslcrypt,uanytun.config)
-endef
-
-define Package/uanytun-nocrypt/install
- $(call Package/uanytun/install-generic,$(1),uanytun-nocrypt,uanytun-nocrypt.config)
-endef
-
-
-
-$(eval $(call BuildPackage,uanytun))
-$(eval $(call BuildPackage,uanytun-sslcrypt))
-$(eval $(call BuildPackage,uanytun-nocrypt))
+++ /dev/null
-config "client1"
- option disabled 0
- option username 'nobody'
- option groupname 'nogroup'
-# option chroot "/var/run/uanytun"
-
-# option interface '<ip-address>'
-# option port '4444'
-# option sender_id '1'
-
-# option dev 'anytun0'
- option type 'tun'
- option ifconfig '192.168.123.1/24'
-# option post-up-script '/etc/uanytun/client1-post-up.sh'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 1
-
- option log 'syslog:3,anytun-client1,daemon'
-
-
-config "client2"
- option disabled 1
- option username 'nobody'
- option groupname 'nogroup'
-
- option type 'tun'
- option ifconfig '192.168.123.2/24'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 2
-
- option log 'syslog:3,anytun-client2,daemon'
-
-
-config "client3"
- option disabled 1
- option username 'nobody'
- option groupname 'nogroup'
-
- option type 'tun'
- option ifconfig '192.168.123.3/24'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 3
-
- option log 'syslog:3,anytun-client3,daemon'
-
-
-config "p2p-a"
- option disabled 1
- option username 'nobody'
- option groupname 'nogroup'
-
- option type 'tun'
- option ifconfig '192.168.223.1/24'
-
- option remote_host 'p2p-b.example.com'
- option remote_port '4444'
-
- option window_size 0
-
- option log 'syslog:3,anytun-p2p-a,daemon'
-
-
-config "p2p-b"
- option disabled 1
- option username 'nobody'
- option groupname 'nogroup'
-
- option type 'tun'
- option ifconfig '192.168.223.2/24'
-
- option remote_host 'p2p-a.example.com'
- option remote_port '4444'
-
- option window_size 0
-
- option log 'syslog:3,anytun-p2p-b,daemon'
+++ /dev/null
-config "client1"
- option disabled 0
-# option username 'nobody'
-# option groupname 'nogroup'
-# option chroot "/var/run/uanytun"
-
-# option interface '<ip-address>'
-# option port '4444'
-# option sender_id '1'
-
- option cipher 'aes-ctr'
-# option cipher 'null'
-# option cipher 'aes-ctr-128'
-# option cipher 'aes-ctr-192'
-# option cipher 'aes-ctr-256'
- option auth_algo 'sha1'
-# option auth_algo 'null'
-# option auth_tag_length 10
-
-# option dev 'anytun0'
- option type 'tun'
- option ifconfig '192.168.123.1/24'
-# option post-up-script '/etc/uanytun/client1-post-up.sh'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 1
-
- option role 'client'
-# option kd_prf 'null'
-# option kd_prf 'aes-ctr'
-# option kd_prf 'aes-ctr-128'
-# option kd_prf 'aes-ctr-192'
-# option kd_prf 'aes-ctr-256'
-# option ld_kdr '0'
-# option key '0123456789ABCDEF0123456789ABCDEF'
-# option salt '0123456789ABCD0123456789ABCD'
- option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
-
- option log 'syslog:3,anytun-client1,daemon'
-
-
-config "client2"
- option disabled 1
-
- option cipher 'aes-ctr'
- option auth_algo 'sha1'
- option type 'tun'
- option ifconfig '192.168.123.2/24'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 2
- option role 'client'
- option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
-
- option log 'syslog:3,anytun-client2,daemon'
-
-
-config "client3"
- option disabled 1
-
- option cipher 'aes-ctr'
- option auth_algo 'sha1'
- option type 'tun'
- option ifconfig '192.168.123.3/24'
-
- option remote_host 'example.com'
- option remote_port '4444'
-
- option window_size 0
- option mux 3
- option role 'client'
- option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
-
- option log 'syslog:3,anytun-client3,daemon'
-
-
-config "p2p-a"
- option disabled 1
-
- option cipher 'aes-ctr'
- option auth_algo 'sha1'
- option type 'tun'
- option ifconfig '192.168.223.1/24'
-
- option remote_host 'p2p-b.example.com'
- option remote_port '4444'
-
- option window_size 0
- option role 'alice'
- option passphrase 'Creating_P2P_VPN_Tunnels_With_Anytun_Is_Easy'
-
- option log 'syslog:3,anytun-p2p-a,daemon'
-
-
-config "p2p-b"
- option disabled 1
-
- option cipher 'aes-ctr'
- option auth_algo 'sha1'
- option type 'tun'
- option ifconfig '192.168.223.2/24'
-
- option remote_host 'p2p-a.example.com'
- option remote_port '4444'
-
- option window_size 0
- option role 'bob'
- option passphrase 'Creating_P2P_VPN_Tunnels_With_Anytun_Is_Easy'
-
- option log 'syslog:3,anytun-p2p-b,daemon'
+++ /dev/null
-#!/bin/sh /etc/rc.common
-START=50
-
-BIN=uanytun
-DAEMON=/usr/sbin/$BIN
-DESC=$BIN
-RUN_D=/var/run
-
-
-option_cb() {
- local varname="$1"
- local value="$2"
-
- if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then
- CONFIG_OPTIONS="$CONFIG_OPTIONS $varname "
- fi
-}
-
-foreach_config_forced() {
- foreach_config $1 "forced"
-}
-
-foreach_config() {
- local cfg="$1"
- local name
- local option
- local value
- local args=""
- local forced=0
-
- if [ -n "$2" ] && [ "x$2" == "xforced" ]; then
- forced=1
- fi
-
- config_get name "$cfg" TYPE
- for option in $CONFIG_OPTIONS
- do
- config_get value "$cfg" "$option"
- if [ "x$option" == "xdisabled" ]; then
- if [ $forced -eq 0 ] && [ $value -eq 1 ]; then
- echo -n " $name(disabled)"
- return
- fi
- continue
- fi
-
- option=`echo $option | tr '_' '-'`
- if [ -n "$value" ]; then
- args="$args --$option $value"
- fi
- done
- echo -n " $name"
- local status="OK"
- $DAEMON --write-pid "$RUN_D/$BIN.$name.pid" $args || status="failed"
- echo -n "($status)"
-}
-
-stop_vpn() {
- local name=$1
- local pidfile=$RUN_D/$BIN.$name.pid
- echo -n " $name"
- local status="OK"
- if [ ! -f "$pidfile" ]; then
- status="tunnel not active"
- else
- kill `cat $pidfile` > /dev/null 2>&1 || status="failed"
- rm -f $pidfile
- fi
- echo -n "($status)"
-}
-
-start() {
- echo -n "Starting $DESC:"
- config_load $BIN
- if [ $# -gt 0 ]; then
- while [ $# -gt 0 ]; do
- config_foreach foreach_config_forced "$1"
- shift
- done
- else
- config_foreach foreach_config ""
- fi
- echo "."
-}
-
-stop() {
- echo -n "Stopping $DESC:"
- local name
- local pidfile
-
- if [ $# -gt 0 ]; then
- while [ $# -gt 0 ]; do
- stop_vpn $1
- shift
- done
- else
- for pidfile in `ls $RUN_D/$BIN.*.pid 2> /dev/null`; do
- name=${pidfile%%.pid}
- name=${name##$RUN_D/$BIN.}
- stop_vpn $name
- done
- fi
- echo "."
-}