#!/bin/bash

respond () {
  DATE="$(LC_ALL=C date -u '+%a, %d %b %Y %H:%M:%S GMT')"
  printf "%s $1\r\nDate: $DATE\r\nContent-Length: 0\r\nConnection: close\r\nContent-Type: application/octet-stream\r\n\r\n" "${start_line[2]}"
}

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
                respond "200 OK"
#                printf "%s 200 OK\r\n" "${start_line[2]}"
            else
                respond "503 Service Unavailable"
#                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
                respond "200 OK"
#                printf "%s 200 OK\r\n" "${start_line[2]}"
            else
                respond "503 Service Unavailable"
#                printf "%s 503 Service Unavailable\r\n" "${start_line[2]}"
            fi
            ;;
        *)
            respond "404 Not Found"
#            printf "%s 404 Not Found\r\n" "${start_line[2]}"
            ;;
        esac
        ;;
    *)
        respond "405 Method Not Allowed"
#        printf "%s 405 Method Not Allowed\r\n" "${start_line[2]}"
        ;;
    esac
    ;;
*)
    echo "Unsupported protocol ${start_line[2]}"
    ;;
esac