chiark / gitweb /
2f8835e7742c9119adebf63fdc80c30dabb44f2f
[secnet.git] / test / invoke
1 #! /usr/bin/tclsh
2
3 package require Tclx
4
5 set netlink(inside) {
6     local-address "172.18.232.9";
7     secnet-address "172.18.232.10";
8     remote-networks "172.18.232.0/28";
9 }
10 set netlink(outside) {
11     local-address "172.18.232.1";
12     secnet-address "172.18.232.2";
13     remote-networks "172.18.232.0/28";
14 }
15
16 set ports(inside) {16913 16910}
17 set ports(outside) 16900
18
19 set extra(inside) {
20     local-mobile True;
21     mtu-target 1260;
22 }
23 set extra(outside) {}
24
25 proc mkconf {which} {
26     global netlink
27     global ports
28     global extra
29     global netlinkfh
30     set pipefp test/$which.netlink
31     foreach tr {t r} {
32         file delete $pipefp.$tr
33         exec mkfifo -m600 $pipefp.$tr
34         set netlinkfh($which.$tr) [set fh [open $pipefp.$tr r+]]
35         fconfigure $fh -blocking 0 -buffering none -translation binary
36     }
37     fileevent $netlinkfh($which.r) readable [list netlink-readable $which]
38     set fakeuf test/$which.fake-userv
39     set fakeuh [open $fakeuf w 0755]
40     puts $fakeuh "#!/bin/sh
41 set -e
42 cat >$pipefp.r &
43 exec 3<>$pipefp.t
44 exec <$pipefp.t
45 exec 3<&-
46 exec cat
47 "
48     set cfg "
49         netlink userv-ipif {
50             name \"netlink\";
51             userv-path \"$fakeuf\";
52         $netlink($which)
53             mtu 1400;
54             buffer sysbuffer(2048);
55             interface \"secnet-test-[string range $which 0 0]\";
56         };
57         comm
58 "
59     set delim {}
60     foreach port $ports($which) {
61         append cfg "$delim
62             udp {
63                 port $port;
64                 buffer sysbuffer(4096);
65             }
66         "
67         set delim ,
68     }
69     append cfg ";
70         local-name \"test-example/$which/$which\";
71         local-key rsa-private(\"test-example/$which.key\");
72 "
73     append cfg $extra($which)
74     append cfg {
75         log logfile {
76             filename "/dev/tty";
77             class "info","notice","warning","error","security","fatal";
78         };
79         system {
80         };
81         resolver adns {
82         };
83         log-events "all";
84         random randomfile("/dev/urandom",no);
85         transform eax-serpent { }, serpent256-cbc { };
86         include test-example/sites.conf
87         sites map(site,vpn/test-example/all-sites);
88     }
89     return $cfg
90 }
91
92 proc spawn-secnet {which} {
93     upvar #0 pids($which) pid
94     set cf test/$which.conf
95     set ch [open $cf w]
96     puts $ch [mkconf $which]
97     close $ch
98     set argl [list -dvnc $cf]
99     set pid [fork]
100     if {!$pid} {
101         execl ./secnet $argl
102     }
103 }
104
105 spawn-secnet inside
106 spawn-secnet outside