From: Paul Hänsch Date: Sun, 2 Nov 2025 00:28:25 +0000 (+0100) Subject: cookieproxy X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=e9ffbc6d1b5b2106712ce3f251ce71940723587f;p=cookieproxy cookieproxy --- diff --git a/proxy.sh b/proxy.sh new file mode 100755 index 0000000..e4f2ecd --- /dev/null +++ b/proxy.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +. ${0%/*}/cgilite/cgilite.sh +# . ${_EXEC}/cgilite/session.sh + +proxydest='' +checkid(){ { [ $# -gt 0 ] && printf %s "$*" || cat; } | grep -m 1 -xE '[0-9a-zA-Z:=]{16}'; } + +for arg in "$@"; do case $arg in + http://*/*) proxydest="$arg" + ;; +esac; done + +authkey="$(GET akey |checkid)" + +if [ "${authkey}" ]; then + SET_COOKIE session authkey="$authkey" + REDIRECT "$PATH_INFO" +fi + +authkey="$(COOKIE authkey |checkid)" + +if ! grep -qxF "$authkey" "$_DATA/authkeys"; then + debug 404 + cat <<-404page + Status: 404 Forbidden$CR + Content-Type: text/plain$CR + $CR + No authkey provided$CR + 404page + exit 0 +fi + +proxy_location='' proxy_port='' proxy_domain='' + +proxy_location="${proxydest#*://}" proxy_location="/${proxy_location#*/}" +proxy_port="${proxydest#*://}" proxy_port="${proxy_port%%/*}" proxy_port="${proxy_port##*:}" +[ "${proxy_port}" -gt 0 -a "${proxy_port}" -lt 65536 ] 2>/dev/null || proxy_port=80 +proxy_domain="${proxydest#*://}" proxy_domain="${proxy_domain%%/*}" proxy_domain="${proxy_domain%:*}" + +proxy_headers=$(printf '%s\n' "$cgilite_headers" |sed '/^Host:/d; s;^Connection: keep-alive;Connection: close;; s;$;\r;') + +{ head -c -1 | nc "${proxy_domain}" "${proxy_port}" | sed '1s;^HTTP/1.1 ;Status: ;'; }<<-endnc + ${REQUEST_METHOD} ${proxy_location%/}/${PATH_INFO#/} ${SERVER_PROTOCOL}$CR + Host: ${proxy_domain}:${proxy_port}$CR + ${proxy_headers} + $(if [ $REQUEST_METHOD = POST -a ${CONTENT_LENGTH:-0} -gt 0 -a "${CONTENT_TYPE}" = "application/x-www-form-urlencoded" ]; then + printf %s "${cgilite_post}" + elif [ ${CONTENT_LENGTH:-0} -gt 0 ]; then + debug Content-Non-POST + cat + fi) + endnc