summaryrefslogtreecommitdiff
path: root/gophed
blob: e62950a6133a06d326a2373a04208cf75d4b2c65 (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
69
70
71
72
73
74
75
#!/bin/sh

PROMPT="=="
SHOW="show"

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 "  !./g %% LINE\n"
	printf "to visit the resource at LINE, or:\n"
	printf "  !./d %% LINE\n"
	printf "to download the resource at LINE\n\n"
	exit 0
}

trap cleanup INT QUIT HUP KILL ABRT TERM

if [ $# -lt 1 ]; then 
	usage
fi

if [ "$1" = "-h" ]; then usage; fi

if [ "$1" = "-i" ]; then 
	ln -s $0 g
	ln -s $0 d
	ln -s $0 v
	exit 0
fi

script_name=$(basename $0)

if [ "${script_name}" = "gophed" -o "${script_name}" = "v" ]; then
	sel=$(echo $1 | sed -r 's:/:+:g') 
	TMPFILE=$(mktemp /tmp/gophed_$2_${sel}_$3.XXXXXXXXXXXXXXXXXXX)
	go "$1" "$2" "$3" > $TMPFILE
	cat $SHOW - | ed -p ${PROMPT} $TMPFILE 
fi
if [ "${script_name}"  = "g" ]; 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 - | ed -p ${PROMPT} $TMPFILE
fi
if [ "${script_name}" =  "d" ]; 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