summaryrefslogtreecommitdiff
path: root/httpconnectd.sh
blob: 24edb680b84cfe7dbdf4e0eb76a498125c534e98 (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
#!/usr/bin/env bash
# Copyright 2016 Luke Shumaker
# License: WTFPLv2

# Dependencies:
# - bash
# - socat
# - date -R

server='httpconnectd'

MethodNotAllowed() {
	printf '%s\r\n' \
	       'HTTP/1.1 405 Method Not Allowed' \
	       "Server: $server" \
	       "Date: $(date -R)" \
	       'Allow: CONNECT' \
	       ''
	exit 0
}

worker() {
	read -r method dest version
	if [[ "$method" != CONNECT ]]; then
		MethodNotAllowed
	fi
	while read -r line; do
		if [[ "$line" == $'\r' ]]; then
			break;
		fi
	done
	exec socat STDIO TCP-CONNECT:"$dest"
}

worker "$@"