37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
![]() |
#!/bin/bash
|
||
|
read -r -a start_line
|
||
|
start_line[2]="${start_line[2]%$'\r'}"
|
||
|
case "${start_line[2]}" in
|
||
|
"HTTP/1.0" | "HTTP/1.1")
|
||
|
case "${start_line[0]}" in
|
||
|
"GET")
|
||
|
case "${start_line[1]}" in
|
||
|
"/healthz/startupProbe")
|
||
|
if pidof -q openconnect && pidof -q tcpproxy; then
|
||
|
printf "%s 200 OK\r\n" "${start_line[2]}"
|
||
|
else
|
||
|
printf "%s 503 Service Unavailable\r\n" "${start_line[2]}"
|
||
|
fi
|
||
|
;;
|
||
|
"/healthz/livenessProbe" | "/healthz/readinessProbe")
|
||
|
if pidof -q openconnect && pidof -q tcpproxy && cmp <(ncat localhost 1234 -c "/usr/bin/printf '\x30\x0c\x02\x01\x01\x60\x07\x02\x01\x03\x04\x00\x80\x00'; timeout --preserve-status 1 cat >&2" 2>&1) <(printf "\x30\x0c\x02\x01\x01\x61\x07\x0a\x01\x00\x04\x00\x04\x00"); then
|
||
|
printf "%s 200 OK\r\n" "${start_line[2]}"
|
||
|
else
|
||
|
printf "%s 503 Service Unavailable\r\n" "${start_line[2]}"
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
printf "%s 404 Not Found\r\n" "${start_line[2]}"
|
||
|
;;
|
||
|
esac
|
||
|
;;
|
||
|
*)
|
||
|
printf "%s 405 Method Not Allowed\r\n" "${start_line[2]}"
|
||
|
;;
|
||
|
esac
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unsupported protocol ${start_line[2]}"
|
||
|
;;
|
||
|
esac
|