Browse Source

import package uanytun

Signed-off-by: Christian Pointner <equinox@spreadspace.org>
Christian Pointner 10 years ago
parent
commit
4e682f03ef

+ 207
- 0
net/uanytun/Makefile View File

@@ -0,0 +1,207 @@
1
+#
2
+# Copyright (C) 2008 Christian Pointner,
3
+#                    <equinox@anytun.org>
4
+#
5
+# This is free software, licensed under the GNU General Public License v2.
6
+# See /LICENSE for more information.
7
+#
8
+# This Makefile builds uAnytun Package for OpenWRT
9
+#
10
+# $Id: $
11
+
12
+include $(TOPDIR)/rules.mk
13
+
14
+PKG_NAME:=uanytun
15
+PKG_VERSION:=0.3.3
16
+PKG_RELEASE:=1
17
+
18
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
19
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
20
+PKG_SOURCE_URL:=http://www.anytun.org/download/
21
+PKG_MD5SUM:=ca39dab02e91b0737e2b3f0839e74f6a
22
+
23
+include $(INCLUDE_DIR)/package.mk
24
+
25
+
26
+define Package/uanytun/template
27
+  SECTION:=net
28
+  CATEGORY:=Network
29
+  TITLE:=micro anycast tunneling daemon
30
+  URL:=http://www.anytun.org/
31
+  MAINTAINER:=Christian Pointner <equinox@anytun.org>
32
+  SUBMENU:=VPN
33
+endef
34
+
35
+define Package/uanytun/desc-template
36
+uAnytun is a tiny implementation of SATP the secure anycast tunneling protocol.
37
+  SATP defines a protocol used for communication between any combination of
38
+  unicast and anycast tunnel endpoints.  It has less protocol overhead than
39
+  IPSec in Tunnel mode and allows tunneling of every ETHER TYPE protocol (e.g.
40
+  ethernet, ip, arp ...). SATP directly includes cryptography and message
41
+  authentication based on the methodes used by SRTP.  It is intended to deliver
42
+  a generic, scaleable and secure solution for tunneling and relaying of packets
43
+  of any protocol.
44
+  Unlike Anytun which is a full featured implementation uAnytun has no support
45
+  for multiple connections or synchronisation. It is a small single threaded
46
+  implementation intended to act as a client on small platforms.
47
+endef
48
+
49
+
50
+define Package/uanytun
51
+  $(call Package/uanytun/template)
52
+  DEPENDS:=+kmod-tun +libgcrypt
53
+endef
54
+
55
+define Package/uanytun/conffiles
56
+/etc/config/uanytun
57
+endef
58
+
59
+define Package/uanytun/description
60
+  $(call Package/uanytun/desc-template)
61
+endef
62
+
63
+
64
+define Package/uanytun-sslcrypt
65
+  $(call Package/uanytun/template)
66
+  DEPENDS:=+kmod-tun +libopenssl
67
+endef
68
+
69
+define Package/uanytun-sslcrypt/conffiles
70
+/etc/config/uanytun-sslcrypt
71
+endef
72
+
73
+define Package/uanytun-sslcrypt/description
74
+  $(call Package/uanytun/desc-template)
75
+endef
76
+
77
+
78
+define Package/uanytun-nocrypt
79
+  $(call Package/uanytun/template)
80
+  DEPENDS:=+kmod-tun
81
+endef
82
+
83
+define Package/uanytun-nocrypt/conffiles
84
+/etc/config/uanytun-nocrypt
85
+endef
86
+
87
+define Package/uanytun-nocrypt/description
88
+  $(call Package/uanytun/desc-template)
89
+endef
90
+
91
+define Package/uanytun/configure
92
+	(cd $(1)/$(2)/src; \
93
+    touch include.mk; \
94
+    ln -s linux/tun.c .; \
95
+    echo '#ifndef UANYTUN_version_h_INCLUDED' > version.h; \
96
+    echo '#define UANYTUN_version_h_INCLUDED' >> version.h; \
97
+    echo '' >> version.h; \
98
+    echo '#define VERSION_STRING_0 "uanytun version '`cat $(1)/version`'"' >> version.h; \
99
+    echo '#define VERSION_STRING_1 "built on '`hostname`', '`date +"%d.%m.%Y %H:%M:%S %Z"`'"' >> version.h; \
100
+    echo '' >> version.h; \
101
+    echo '#endif' >> version.h \
102
+  )
103
+endef
104
+
105
+ifneq ($(CONFIG_PACKAGE_uanytun-nocrypt),)
106
+ define Build/Configure/uanytun-nocrypt
107
+	rm -rf $(PKG_BUILD_DIR)/uanytun-nocrypt
108
+	mkdir -p $(PKG_BUILD_DIR)/uanytun-nocrypt
109
+	$(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun-nocrypt
110
+	$(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun-nocrypt)
111
+ endef
112
+
113
+ define Build/Compile/uanytun-nocrypt
114
+	$(MAKE) -C $(PKG_BUILD_DIR)/uanytun-nocrypt/src \
115
+    $(TARGET_CONFIGURE_OPTS) \
116
+    NO_CRYPT_OBJ=1 \
117
+    TARGET=Linux \
118
+    CFLAGS="$(TARGET_CFLAGS) -DNO_CRYPT" \
119
+    LDFLAGS="$(TARGET_LDFLAGS) -ldl"
120
+	$(STRIP) $(PKG_BUILD_DIR)/uanytun-nocrypt/src/uanytun
121
+ endef
122
+endif
123
+
124
+ifneq ($(CONFIG_PACKAGE_uanytun-sslcrypt),)
125
+ define Build/Configure/uanytun-sslcrypt
126
+	rm -rf $(PKG_BUILD_DIR)/uanytun-sslcrypt
127
+	mkdir -p $(PKG_BUILD_DIR)/uanytun-sslcrypt
128
+	$(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun-sslcrypt
129
+	$(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun-sslcrypt)
130
+ endef
131
+
132
+ define Build/Compile/uanytun-sslcrypt
133
+	$(MAKE) -C $(PKG_BUILD_DIR)/uanytun-sslcrypt/src \
134
+    $(TARGET_CONFIGURE_OPTS) \
135
+    TARGET=Linux \
136
+    CFLAGS="$(TARGET_CFLAGS) -DUSE_SSL_CRYPTO -I$(STAGING_DIR)/usr/include" \
137
+    LDFLAGS="$(TARGET_LDFLAGS) -ldl -lcrypto"
138
+	$(STRIP) $(PKG_BUILD_DIR)/uanytun-sslcrypt/src/uanytun
139
+ endef
140
+endif
141
+
142
+ifneq ($(CONFIG_PACKAGE_uanytun),)
143
+ define Build/Configure/uanytun-default
144
+	rm -rf $(PKG_BUILD_DIR)/uanytun
145
+	mkdir -p $(PKG_BUILD_DIR)/uanytun
146
+	$(CP) -r $(PKG_BUILD_DIR)/src $(PKG_BUILD_DIR)/uanytun
147
+	$(call Package/uanytun/configure,$(PKG_BUILD_DIR),uanytun)
148
+ endef
149
+
150
+ define Build/Compile/uanytun-default
151
+	$(MAKE) -C $(PKG_BUILD_DIR)/uanytun/src \
152
+    $(TARGET_CONFIGURE_OPTS) \
153
+    TARGET=Linux \
154
+    CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
155
+    LDFLAGS="$(TARGET_LDFLAGS) -ldl -lgcrypt -lgpg-error"
156
+	$(STRIP) $(PKG_BUILD_DIR)/uanytun/src/uanytun
157
+ endef
158
+endif
159
+
160
+
161
+define Build/Configure
162
+	$(call Build/Configure/uanytun-nocrypt)
163
+	$(call Build/Configure/uanytun-sslcrypt)
164
+	$(call Build/Configure/uanytun-default)
165
+endef
166
+
167
+define Build/Compile
168
+	$(call Build/Compile/uanytun-nocrypt)
169
+	$(call Build/Compile/uanytun-sslcrypt)
170
+	$(call Build/Compile/uanytun-default)
171
+endef
172
+
173
+define Build/Clean
174
+	rm -rf $(PKG_BUILD_DIR)/uanytun-nocrypt
175
+	rm -rf $(PKG_BUILD_DIR)/uanytun-sslcrypt
176
+	rm -rf $(PKG_BUILD_DIR)/uanytun
177
+endef
178
+
179
+
180
+
181
+define Package/uanytun/install-generic
182
+	$(INSTALL_DIR) $(1)/etc/config
183
+	$(INSTALL_DATA) ./files/$(3) $(1)/etc/config/$(2)
184
+	$(INSTALL_DIR) $(1)/usr/sbin
185
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(2)/src/uanytun $(1)/usr/sbin/$(2)
186
+	$(INSTALL_DIR) $(1)/etc/init.d
187
+	$(INSTALL_BIN) ./files/uanytun.init $(1)/etc/init.d/$(2)
188
+	@sed -e 's/BIN=uanytun/BIN=$(2)/' -i $(1)/etc/init.d/$(2)
189
+endef
190
+
191
+define Package/uanytun/install
192
+  $(call Package/uanytun/install-generic,$(1),uanytun,uanytun.config)
193
+endef
194
+
195
+define Package/uanytun-sslcrypt/install
196
+  $(call Package/uanytun/install-generic,$(1),uanytun-sslcrypt,uanytun.config)
197
+endef
198
+
199
+define Package/uanytun-nocrypt/install
200
+  $(call Package/uanytun/install-generic,$(1),uanytun-nocrypt,uanytun-nocrypt.config)
201
+endef
202
+
203
+
204
+
205
+$(eval $(call BuildPackage,uanytun))
206
+$(eval $(call BuildPackage,uanytun-sslcrypt))
207
+$(eval $(call BuildPackage,uanytun-nocrypt))

+ 88
- 0
net/uanytun/files/uanytun-nocrypt.config View File

@@ -0,0 +1,88 @@
1
+config "client1"
2
+  option disabled 0
3
+  option username 'nobody'
4
+  option groupname 'nogroup'
5
+#  option chroot "/var/run/uanytun"
6
+
7
+#  option interface '<ip-address>'
8
+#  option port '4444'
9
+#  option sender_id '1'
10
+
11
+#  option dev 'anytun0'
12
+  option type 'tun'
13
+  option ifconfig '192.168.123.1/24'
14
+#  option post-up-script '/etc/uanytun/client1-post-up.sh'
15
+
16
+  option remote_host 'example.com'
17
+  option remote_port '4444'
18
+
19
+  option window_size 0
20
+  option mux 1
21
+
22
+  option log 'syslog:3,anytun-client1,daemon'
23
+
24
+
25
+config "client2"
26
+  option disabled 1
27
+  option username 'nobody'
28
+  option groupname 'nogroup'
29
+
30
+  option type 'tun'
31
+  option ifconfig '192.168.123.2/24'
32
+
33
+  option remote_host 'example.com'
34
+  option remote_port '4444'
35
+
36
+  option window_size 0
37
+  option mux 2
38
+
39
+  option log 'syslog:3,anytun-client2,daemon'
40
+
41
+
42
+config "client3"
43
+  option disabled 1
44
+  option username 'nobody'
45
+  option groupname 'nogroup'
46
+
47
+  option type 'tun'
48
+  option ifconfig '192.168.123.3/24'
49
+
50
+  option remote_host 'example.com'
51
+  option remote_port '4444'
52
+
53
+  option window_size 0
54
+  option mux 3
55
+
56
+  option log 'syslog:3,anytun-client3,daemon'
57
+
58
+
59
+config "p2p-a"
60
+  option disabled 1
61
+  option username 'nobody'
62
+  option groupname 'nogroup'
63
+
64
+  option type 'tun'
65
+  option ifconfig '192.168.223.1/24'
66
+
67
+  option remote_host 'p2p-b.example.com'
68
+  option remote_port '4444'
69
+
70
+  option window_size 0
71
+
72
+  option log 'syslog:3,anytun-p2p-a,daemon'
73
+
74
+
75
+config "p2p-b"
76
+  option disabled 1
77
+  option username 'nobody'
78
+  option groupname 'nogroup'
79
+
80
+  option type 'tun'
81
+  option ifconfig '192.168.223.2/24'
82
+
83
+  option remote_host 'p2p-a.example.com'
84
+  option remote_port '4444'
85
+
86
+  option window_size 0
87
+
88
+  option log 'syslog:3,anytun-p2p-b,daemon'

+ 116
- 0
net/uanytun/files/uanytun.config View File

@@ -0,0 +1,116 @@
1
+config "client1"
2
+  option disabled 0
3
+#  option username 'nobody'
4
+#  option groupname 'nogroup'
5
+#  option chroot "/var/run/uanytun"
6
+
7
+#  option interface '<ip-address>'
8
+#  option port '4444'
9
+#  option sender_id '1'
10
+
11
+  option cipher 'aes-ctr'
12
+#  option cipher 'null'
13
+#  option cipher 'aes-ctr-128'
14
+#  option cipher 'aes-ctr-192'
15
+#  option cipher 'aes-ctr-256'
16
+  option auth_algo 'sha1'
17
+#  option auth_algo 'null'
18
+#  option auth_tag_length 10
19
+
20
+#  option dev 'anytun0'
21
+  option type 'tun'
22
+  option ifconfig '192.168.123.1/24'
23
+#  option post-up-script '/etc/uanytun/client1-post-up.sh'
24
+
25
+  option remote_host 'example.com'
26
+  option remote_port '4444'
27
+
28
+  option window_size 0
29
+  option mux 1
30
+
31
+  option role 'client'
32
+#  option kd_prf 'null'
33
+#  option kd_prf 'aes-ctr'
34
+#  option kd_prf 'aes-ctr-128'
35
+#  option kd_prf 'aes-ctr-192'
36
+#  option kd_prf 'aes-ctr-256'
37
+#  option ld_kdr '0'
38
+#  option key '0123456789ABCDEF0123456789ABCDEF'
39
+#  option salt '0123456789ABCD0123456789ABCD'
40
+  option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
41
+
42
+  option log 'syslog:3,anytun-client1,daemon'
43
+
44
+
45
+config "client2"
46
+  option disabled 1
47
+
48
+  option cipher 'aes-ctr'
49
+  option auth_algo 'sha1'
50
+  option type 'tun'
51
+  option ifconfig '192.168.123.2/24'
52
+
53
+  option remote_host 'example.com'
54
+  option remote_port '4444'
55
+
56
+  option window_size 0
57
+  option mux 2
58
+  option role 'client'
59
+  option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
60
+
61
+  option log 'syslog:3,anytun-client2,daemon'
62
+
63
+
64
+config "client3"
65
+  option disabled 1
66
+
67
+  option cipher 'aes-ctr'
68
+  option auth_algo 'sha1'
69
+  option type 'tun'
70
+  option ifconfig '192.168.123.3/24'
71
+
72
+  option remote_host 'example.com'
73
+  option remote_port '4444'
74
+
75
+  option window_size 0
76
+  option mux 3
77
+  option role 'client'
78
+  option passphrase 'Creating_VPN_Tunnels_With_Anytun_Is_Easy'
79
+
80
+  option log 'syslog:3,anytun-client3,daemon'
81
+
82
+
83
+config "p2p-a"
84
+  option disabled 1
85
+
86
+  option cipher 'aes-ctr'
87
+  option auth_algo 'sha1'
88
+  option type 'tun'
89
+  option ifconfig '192.168.223.1/24'
90
+
91
+  option remote_host 'p2p-b.example.com'
92
+  option remote_port '4444'
93
+
94
+  option window_size 0
95
+  option role 'alice'
96
+  option passphrase 'Creating_P2P_VPN_Tunnels_With_Anytun_Is_Easy'
97
+
98
+  option log 'syslog:3,anytun-p2p-a,daemon'
99
+
100
+
101
+config "p2p-b"
102
+  option disabled 1
103
+
104
+  option cipher 'aes-ctr'
105
+  option auth_algo 'sha1'
106
+  option type 'tun'
107
+  option ifconfig '192.168.223.2/24'
108
+
109
+  option remote_host 'p2p-a.example.com'
110
+  option remote_port '4444'
111
+
112
+  option window_size 0
113
+  option role 'bob'
114
+  option passphrase 'Creating_P2P_VPN_Tunnels_With_Anytun_Is_Easy'
115
+
116
+  option log 'syslog:3,anytun-p2p-b,daemon'

+ 104
- 0
net/uanytun/files/uanytun.init View File

@@ -0,0 +1,104 @@
1
+#!/bin/sh /etc/rc.common
2
+START=50
3
+
4
+BIN=uanytun
5
+DAEMON=/usr/sbin/$BIN
6
+DESC=$BIN
7
+RUN_D=/var/run
8
+
9
+
10
+option_cb() {
11
+  local varname="$1"
12
+  local value="$2"
13
+
14
+  if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then
15
+    CONFIG_OPTIONS="$CONFIG_OPTIONS $varname "
16
+  fi
17
+}
18
+
19
+foreach_config_forced() {
20
+  foreach_config $1 "forced"
21
+}
22
+
23
+foreach_config() {
24
+  local cfg="$1"
25
+  local name
26
+  local option
27
+  local value
28
+  local args=""
29
+  local forced=0
30
+
31
+  if [ -n "$2" ] && [ "x$2" == "xforced" ]; then
32
+    forced=1
33
+  fi
34
+
35
+  config_get name "$cfg" TYPE
36
+  for option in $CONFIG_OPTIONS
37
+  do
38
+    config_get value "$cfg" "$option"
39
+    if [ "x$option" == "xdisabled" ]; then
40
+      if [ $forced -eq 0 ] && [ $value -eq 1 ]; then
41
+        echo -n " $name(disabled)"
42
+        return
43
+      fi
44
+      continue
45
+    fi
46
+
47
+    option=`echo $option | tr '_' '-'`
48
+    if [ -n "$value" ]; then
49
+      args="$args --$option $value"
50
+    fi
51
+  done
52
+  echo -n " $name"
53
+  local status="OK"
54
+  $DAEMON --write-pid "$RUN_D/$BIN.$name.pid" $args || status="failed"
55
+  echo -n "($status)"
56
+}
57
+
58
+stop_vpn() {
59
+  local name=$1
60
+  local pidfile=$RUN_D/$BIN.$name.pid
61
+  echo -n " $name"
62
+  local status="OK"
63
+  if [ ! -f "$pidfile" ]; then
64
+    status="tunnel not active"    
65
+  else
66
+    kill `cat $pidfile` > /dev/null 2>&1 || status="failed"
67
+    rm -f $pidfile
68
+  fi
69
+  echo -n "($status)"
70
+}
71
+
72
+start() {
73
+  echo -n "Starting $DESC:"
74
+  config_load $BIN  
75
+  if [ $# -gt 0 ]; then
76
+    while [ $# -gt 0 ]; do
77
+      config_foreach foreach_config_forced "$1"
78
+      shift
79
+    done
80
+  else
81
+    config_foreach foreach_config ""
82
+  fi
83
+  echo "."
84
+}
85
+
86
+stop() {
87
+  echo -n "Stopping $DESC:"
88
+  local name
89
+  local pidfile
90
+
91
+  if [ $# -gt 0 ]; then
92
+    while [ $# -gt 0 ]; do
93
+      stop_vpn $1
94
+      shift
95
+    done
96
+  else
97
+    for pidfile in `ls $RUN_D/$BIN.*.pid 2> /dev/null`; do
98
+      name=${pidfile%%.pid}
99
+      name=${name##$RUN_D/$BIN.}
100
+      stop_vpn $name
101
+    done
102
+  fi
103
+  echo "."
104
+}