import uanytun, upgrade to latest versionlilik-openwrt-22.03
@ -0,0 +1,154 @@ | |||
# | |||
# Copyright (C) 2008-2014 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.5 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||
PKG_SOURCE_URL:=http://www.anytun.org/download/ | |||
PKG_MD5SUM:=ce47ad45003ff1d84eaf5276941b9ddf | |||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/uanytun/template | |||
SECTION:=net | |||
CATEGORY:=Network | |||
SUBMENU:=VPN | |||
DEPENDS:=+kmod-tun | |||
TITLE:=micro anycast tunneling daemon | |||
URL:=http://www.anytun.org/ | |||
MAINTAINER:=Christian Pointner <equinox@spreadspace.org> | |||
endef | |||
define Package/uanytun | |||
$(call Package/uanytun/template) | |||
TITLE+= (nettle) | |||
VARIANT:=nettle | |||
DEPENDS+=+libnettle | |||
endef | |||
define Package/uanytun/conffiles | |||
/etc/config/uanytun | |||
endef | |||
define Package/uanytun/description | |||
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 methods 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-sslcrypt | |||
$(call Package/uanytun/template) | |||
TITLE+= (openssl) | |||
VARIANT:=sslcrypt | |||
DEPENDS+=+libopenssl | |||
endef | |||
Package/uanytun-sslcrypt/conffiles=$(Package/uanytun/conffiles) | |||
Package/uanytun-sslcrypt/description=$(Package/uanytun/description) | |||
define Package/uanytun-nocrypt | |||
$(call Package/uanytun/template) | |||
TITLE+= (no crypt) | |||
VARIANT:=nocrypt | |||
endef | |||
Package/uanytun-nocrypt/conffiles=$(Package/uanytun/conffiles) | |||
Package/uanytun-nocrypt/description=$(Package/uanytun/description) | |||
define Build/Configure | |||
(cd $(PKG_BUILD_DIR)/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 $(PKG_BUILD_DIR)/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 | |||
VARIANT_CFLAGS:= | |||
VARIANT_LDFLAGS:=-ldl | |||
VARIANT_MAKE_OPTS:= | |||
ifeq ($(BUILD_VARIANT),nettle) | |||
VARIANT_CFLAGS+=-DUSE_NETTLE | |||
VARIANT_LDFLAGS+=-lnettle | |||
endif | |||
ifeq ($(BUILD_VARIANT),sslcrypt) | |||
VARIANT_CFLAGS+=-DUSE_SSL_CRYPTO | |||
VARIANT_LDFLAGS+=-lcrypto | |||
endif | |||
ifeq ($(BUILD_VARIANT),nocrypt) | |||
VARIANT_CFLAGS+=-DNO_CRYPT | |||
VARIANT_MAKE_OPTS+=NO_CRYPT_OBJ=1 | |||
endif | |||
define Build/Compile | |||
$(MAKE) -C $(PKG_BUILD_DIR)/src \ | |||
$(TARGET_CONFIGURE_OPTS) \ | |||
$(VARIANT_MAKE_OPTS) \ | |||
TARGET=Linux \ | |||
CFLAGS="$(TARGET_CFLAGS) $(VARIANT_CFLAGS)" \ | |||
LDFLAGS="$(TARGET_LDFLAGS) $(VARIANT_LDFLAGS)" | |||
$(STRIP) $(PKG_BUILD_DIR)/src/uanytun | |||
endef | |||
define Package/uanytun/install-generic | |||
$(INSTALL_DIR) $(1)/etc/config | |||
$(INSTALL_DATA) ./files/$(2) $(1)/etc/config/$(PKG_NAME) | |||
$(INSTALL_DIR) $(1)/usr/sbin | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/uanytun $(1)/usr/sbin/$(PKG_NAME) | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_BIN) ./files/uanytun.init $(1)/etc/init.d/$(PKG_NAME) | |||
endef | |||
define Package/uanytun/install | |||
$(call Package/uanytun/install-generic,$(1),uanytun.config) | |||
endef | |||
define Package/uanytun-sslcrypt/install | |||
$(call Package/uanytun/install-generic,$(1),uanytun.config) | |||
endef | |||
define Package/uanytun-nocrypt/install | |||
$(call Package/uanytun/install-generic,$(1),uanytun-nocrypt.config) | |||
endef | |||
$(eval $(call BuildPackage,uanytun)) | |||
$(eval $(call BuildPackage,uanytun-sslcrypt)) | |||
$(eval $(call BuildPackage,uanytun-nocrypt)) |
@ -0,0 +1,88 @@ | |||
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' |
@ -0,0 +1,116 @@ | |||
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' |
@ -0,0 +1,104 @@ | |||
#!/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 "." | |||
} |