#!/usr/bin/env bash
#
# onx-webserver-status — bir web server service durumu (running, enabled, uptime).
#
# Input: {"driver":"...","service":"httpd|nginx|..."}
# Output: {"ok":true,"running":bool,"enabled":bool,"uptime_seconds":N,"version":"X.Y.Z"}

set -uo pipefail
input="$(cat 2>/dev/null || echo '{}')"
driver="$(echo "$input" | jq -r '.driver // empty')"
service="$(echo "$input" | jq -r '.service // empty')"

[[ -z "$service" ]] && { jq -nc '{ok:false,error:"service required"}' >&2; exit 1; }

running="false"
enabled="false"
systemctl is-active --quiet "$service" 2>/dev/null && running="true"
systemctl is-enabled --quiet "$service" 2>/dev/null && enabled="true"

uptime_seconds=0
if [[ "$running" == "true" ]]; then
    start_ts=$(systemctl show "$service" -p ActiveEnterTimestamp --value 2>/dev/null | head -1)
    if [[ -n "$start_ts" && "$start_ts" != "n/a" ]]; then
        start_epoch=$(date -d "$start_ts" +%s 2>/dev/null || echo 0)
        now_epoch=$(date +%s)
        uptime_seconds=$((now_epoch - start_epoch))
    fi
fi

# Version detect (driver bazlı)
version="unknown"
case "$driver" in
    apache)         version="$(httpd -v 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)" ;;
    nginx)          version="$(nginx -v 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)" ;;
    openlitespeed)  version="$(/usr/local/lsws/bin/lshttpd -v 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)" ;;
    caddy)          version="$(caddy version 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)" ;;
esac
[[ -z "$version" ]] && version="unknown"

jq -nc \
    --arg driver "$driver" --arg service "$service" --arg version "$version" \
    --argjson running "$running" --argjson enabled "$enabled" --argjson uptime "$uptime_seconds" \
    '{ok:true, driver:$driver, service:$service, version:$version,
      running:$running, enabled:$enabled, uptime_seconds:$uptime}'
