aboutsummaryrefslogtreecommitdiff
path: root/genclient-embed.sh
blob: 8c4c1440cd934dd6d651e24811ecfc972038eabd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh

. ./vars

help() {
cat <<EOF
Usage: $0

	Generates a client shell script based on the variables set in 'vars'
	and prints to stdout

EOF
exit 1;
}

while [ $# -gt 0 ] ; do case $1 in
	*) help ;;
esac; done

cat <<EOF
#!/bin/sh
socat="\$(mktemp)"

sed -ne'/^__BEGIN'_'SOCAT__/,\$p' "\$0" | sed 1d | base64 -d \\
	| gzip -dc > "\$socat"

chmod +x "\$socat"

_shell="\$(which zsh mksh bash ksh zsh ash sh 2>/dev/null | sed 1q)"
certificate='$(cat ${basename}.crt)'
crt_tmp="\$(mktemp)"
trap 'rm -f \$crt_tmp \$socat; exit 0' EXIT INT
echo "\$certificate" > "\$crt_tmp"
while [ $loop -ne 0 ] ; do
"\$socat" exec:"\$_shell",pty,stderr,setsid,sigint,sane \\
	"OPENSSL:$hostname:$port,verify=$verify,cafile=\$crt_tmp"
sleep $timeout
done

exit 0

__BEGIN_SOCAT__
EOF

if [ -e socat/socat ] ; then
	gzip -9c < socat/socat | base64
fi