script working with vpn red on application board
[ulvpn.git] / ulvpn-mm.sh
CommitLineData
157f29df
ML
1#!/bin/bash
2
3MTU=1439
4[ $# -gt 0 ] && MTU=$1
5
6TEST=$(basename $0 .sh)
7
e6576716
ML
8LRED=eth1://78:a1:35:10:10:10
9LBLK=eth2://78:a1:35:20:20:20
10RRED=eth1://78:a1:35:01:01:01
11RBLK=eth2://78:a1:35:02:02:02
157f29df
ML
12
13LOOP=lo://00:00:00:00:00:00
14
e6576716
ML
15#DUDP=eth2
16DUDP=lo
17PUDP=1253
157f29df
ML
18
19CRYPTOMOD=./cryptomod.exe
20SIMULATOR=./simulator.exe
21VPN=./ulvpn.exe
22
23ulimit -c unlimited
24
25launch() { echo -ne "\033[0;1m$@\033[0;0m: "; }
26title() { echo -e "\033[0;1m$@\033[0;0m"; }
27pass() { echo -e "\033[1;32m$@\033[0;0m"; }
28warn() { echo -e "\033[1;33m$@\033[0;0m"; }
29fail() { echo -e "\033[1;31m$@\033[0;0m"; }
30
31if [ ! -f init.done ]; then
32 launch create configuration files
33
34 #dd if=/dev/random of=crypto.key bs=1 count=32 2>/dev/null
35 echo -n "123456789abcdef0123456789abcdef0" > crypto.key
36 #dd if=/dev/random of=prng.key bs=1 count=16 2>/dev/null
37 echo -n "123456789abcdef0" >prng.key
38
39 cat > provisioning.eth <<EOF
40SLEEP 500
41T:PROVISIONING LOAD_KEY_REQ KEYID=0 KEY=@crypto.key
42R:PROVISIONING LOAD_KEY_RESP STATUS=0
43T:PROVISIONING LOAD_KEY_REQ KEYID=1 KEY=@prng.key
44R:PROVISIONING LOAD_KEY_RESP STATUS=0
45EOF
46
47 cat > plaintext.txt <<EOF
48Inter quos Paulus eminebat notarius ortus in Hispania, glabro quidam sub vultu latens, odorandi vias periculorum occultas perquam sagax. is in Brittanniam missus ut militares quosdam perduceret ausos conspirasse Magnentio, cum reniti non possent, iussa licentius supergressus fluminis modo fortunis conplurium sese repentinus infudit et ferebatur per strages multiplices ac ruinas, vinculis membra ingenuorum adfligens et quosdam obterens manicis, crimina scilicet multa consarcinando a veritate longe discreta. unde admissum est facinus impium, quod Constanti tempus nota inusserat sempiterna.
49
50Ideo urbs venerabilis post superbas efferatarum gentium cervices oppressas latasque leges fundamenta libertatis et retinacula sempiterna velut frugi parens et prudens et dives Caesaribus tamquam liberis suis regenda patrimonii iura permisit.
51
52Ut enim quisque sibi plurimum confidit et ut quisque maxime virtute et sapientia sic munitus est, ut nullo egeat suaque omnia in se ipso posita iudicet, ita in amicitiis expetendis colendisque maxime excellit. Quid enim? Africanus indigens mei? Minime hercule! ac ne ego quidem illius; sed ego admiratione quadam virtutis eius, ille vicissim opinione fortasse non nulla, quam de meis moribus habebat, me dilexit; auxit benevolentiam consuetudo. Sed quamquam utilitates multae et magnae consecutae sunt, non sunt tamen ab earum spe causae diligendi profectae.
53
54Et Epigonus quidem amictu tenus philosophus, ut apparuit, prece frustra temptata, sulcatis lateribus mortisque metu admoto turpi confessione cogitatorum socium, quae nulla erant, fuisse firmavit cum nec vidisset quicquam nec audisset penitus expers forensium rerum; Eusebius vero obiecta fidentius negans, suspensus in eodem gradu constantiae stetit latrocinium illud esse, non iudicium clamans."
55EOF
56
57 success OK
58
59 touch init.done
60fi
61
62pids=
63if [ -f /data/MDLU ]; then
e6576716 64 title Remote -MDLU-
157f29df
ML
65
66 title starting software crypto module
67 $CRYPTOMOD -v 1 -V 1 -l cryptomod.log \
68 -s BYPASS_B2R -t $LOOP/080D -r $LOOP/083D \
69 -s BYPASS_R2B -t $LOOP/082D -r $LOOP/081D \
70 -s CONTROL -t $LOOP/080E -r $LOOP/081E \
71 -s CROSS_CRYPTO_B2R -t $LOOP/0809 -r $LOOP/0839 \
72 -s CROSS_CRYPTO_R2B -t $LOOP/0829 -r $LOOP/0819 \
73 -s PROVISIONING -t $LOOP/080B -r $LOOP/081B &
74 pids="$pids $!"
75 sleep 1
76
77 launch provisioning software cryptomod
78 $SIMULATOR -v1 -V1 -s PROVISIONING -r $LOOP/080B -t $LOOP/081B provisioning.eth && pass OK || { fail KO; exit 1; }
79
80 title starting vpn
e6576716 81 #ip addr add 125.128.0.16/8 dev eth0 home
157f29df
ML
82 $VPN -v 0 -V 0 -l ulvpn.log \
83 -d tun://tun0:$MTU \
84 -l tun://10.2.1.1 -r tun://10.2.0.0 \
e6576716
ML
85 -tx udp://125.128.0.1:1253 -ux udp://125.128.0.1:8208 \
86 -tt udp://125.128.0.1:1024 -ut udp://125.128.0.1:1189 \
157f29df
ML
87 -x $LOOP/0829 $LOOP/0839 \
88 -y $LOOP/0809 $LOOP/0819 | \
89 awk '{print "vpn:", $0}'
90
91else
e6576716 92 title Local -PDLU-
157f29df
ML
93
94 launch configurate interfaces
95 i=1
96 for DEV in $LRED $LBLK; do
97 ip link set dev ${DEV/:*} down
98 ip link set dev ${DEV/:\/\// addr }
99 ip link set dev ${DEV/:*} up
e6576716
ML
100 ip addr add 192.169.$i.1/24 dev ${DEV/:*}
101 sleep 1
102 echo -n foobar | nc -uq1 192.169.$i.254 1234
103 echo -n foobar | nc -uq1 192.169.$i.2 1234
104 #tcpdump -v -i ${DEV/:*} &
105 sleep 1
157f29df
ML
106 let i++
107 done
108 sleep 2
109
110 launch provisioning hardware cryptomod
111 $SIMULATOR -v1 -V1 -s PROVISIONING -r $RRED/080B -t $RRED/080B provisioning.eth && pass OK || { fail KO; exit 1; }
112
113 title starting vpn
e6576716
ML
114 #ip addr add 192.168.0.1/24 dev eth0 home
115 $VPN -v0 -V0 \
157f29df
ML
116 -d tun://tun0:$MTU \
117 -l tun://10.2.0.1 -r tun://10.2.1.0 \
e6576716
ML
118 -tr udp://192.168.0.5:1185 -ur udp://192.168.0.5:8192 \
119 -tt udp://192.168.0.5:1024 -ut udp://192.168.0.5:1253 \
157f29df
ML
120 -x $RBLK/0809 $RBLK/0809 \
121 -y $RRED/0809 $RRED/0809 | \
122 awk '{print "vpn:", $0}'
123
124fi
125
126for p in $pids; do
127 echo killing $p
128 kill -TERM $p
129done
130
131title end