chiark / gitweb /
Add new `knock' protocol.
[tripe] / wireshark / capture-session
1 #! /bin/sh -e
2 ###
3 ### A simple script for capturing TrIPE sessions, for testing the Wireshark
4 ### dissector.
5
6 ty=${1?ty} param=${2-$ty}
7 tripe=${TRIPE-tripe}
8 rm -rf captmp
9 mkdir captmp
10 cd captmp
11
12 cp ../keyring .
13 for i in alice bob; do
14   key add -eforever -a$ty -t$i -pparam-$param tripe
15 done
16 cp keyring keyring.pub
17
18 for i in alice bob; do
19   mkfifo $i.in $i.out
20   TRIPE_SLIPIF=/usr/bin/tripe-uslip \
21     $tripe -d. -as.$i -F -nslip -t$i -p0 <$i.in >$i.out 2>$i.err&
22 done
23 exec 3>alice.in 4<alice.out; alice_in=3 alice_out=4
24 exec 5>bob.in 6<bob.out; bob_in=5 bob_out=6
25
26 docmd () {
27   who=$1; shift
28   eval in=\$${who}_in out=\$${who}_out
29   echo "$*" >&$in
30   while read tag tail; do
31     : "$tag $tail"
32     case $tag in
33       INFO) echo $tail ;;
34       FAIL) echo >&2 "command \`$*' failed: $tail"; exit 10 ;;
35       OK) break ;;
36     esac
37   done <&$out
38 }
39
40 await () {
41   who=$1
42   eval out=\$${who}_out
43   while read tag kind rest; do
44     : "$tag $kind $rest"
45     case $tag,$kind in
46       NOTE,KXDONE) break ;;
47     esac
48   done <&$out
49 }
50
51 docmd alice watch n-tw
52 docmd bob watch n-tw
53
54 p_alice=$(docmd alice port)
55 p_bob=$(docmd bob port)
56
57 tshark -ilo -f"udp port $p_alice or udp port $p_bob" \
58        -w../cap.$param& shark=$!
59 pause
60
61 docmd alice add -cork bob 127.0.0.1 $p_bob
62 c=$(docmd bob getchal)
63 docmd alice greet bob $c
64 docmd bob add alice 127.0.0.1 $p_alice
65 await alice& walice=$!
66 await bob& wbob=$!
67 wait $walice
68 wait $wbob
69
70 echo ping | tripe-uslip -p bob
71 x=$(tripe-uslip -g alice)
72
73 pause
74
75 exec 3>&- 4>&- 5>&- 6>&-
76 kill $shark
77 wait