blob: 1febbe7a48b35463efd947ca8686a14a17336dac (
plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#!/bin/sh
cleanup () {
rm -f $TMPFILE;
}
go () {
printf "${1}\r\n" | nc $2 $3
}
usage() {
printf "usage: \n"
printf " visit a resource:\n"
printf " $0 <path> <server> <port>\n"
printf " init links:\n"
printf " $0 -i \n"
printf " show this help:\n"
printf " $0 -h\n"
printf "\n"
printf "In a gopher page, just type:\n"
printf " !./visit %% LINE\n"
printf "to visit the resource at LINE, or:\n"
printf " !./dl %% LINE\n"
printf "to download the resource at LINE\n\n"
exit 0
}
trap cleanup INT QUIT HUP KILL ABRT TERM
if [ "$1" = "-h" ]; then usage; fi
if [ "$1" = "-i" ]; then
ln -s $0 visit
ln -s $0 dl
exit 0
fi
script_name=$(basename $0)
if [ "${script_name}" = "gophed" ]; then
sel=$(echo $1 | sed -r 's:/:+:g')
TMPFILE=$(mktemp /tmp/gophed_$2_${sel}_$3.XXXXXXXXXXXXXXXXXXX)
go "$1" "$2" "$3" > $TMPFILE
cat show - show | ed $TMPFILE
fi
if [ "${script_name}" = "visit" ]; then
LINE=$(awk "{if (NR == $2) print \$0;}" $1)
RESOURCE=$(echo "$LINE" | cut -d ' ' -f 2)
HOST=$(echo "$LINE" | cut -d ' ' -f 3)
PORT=$(echo "$LINE" | awk -F ' ' '{ match($4,/[[:digit:]]+/); print substr($4,RSTART,RLENGTH) }')
SEL=$(echo $RESOURCE | sed -r 's:/:+:g')
TMPFILE=$(mktemp /tmp/gophed_${HOST}_${SEL}_${PORT}.XXXXXXXXXXXXXXXXXXX)
go "$RESOURCE" "$HOST" "$PORT" > $TMPFILE
cat show - show | ed $TMPFILE
fi
if [ "${script_name}" = "dl" ]; then
LINE=$(awk "{if (NR == $2) print \$0;}" $1)
RESOURCE=$(echo "$LINE" | cut -d ' ' -f 2)
HOST=$(echo "$LINE" | cut -d ' ' -f 3)
PORT=$(echo "$LINE" | awk -F ' ' '{ match($4,/[[:digit:]]+/); print substr($4,RSTART,RLENGTH) }')
DIR_RESOURCE=$(dirname $RESOURCE)
echo "Download $RESOURCE in ${HOST}${RESOURCE}"
mkdir -p "$HOST/$DIR_RESOURCE"
go "$RESOURCE" "$HOST" "$PORT" > "${HOST}${RESOURCE}"
fi
cleanup
|