#!/usr/bin/env bash
#
# onx-service-start — systemctl start $UNIT
#
# Stdin:  JSON {"unit":"pure-ftpd"}
# Stdout: JSON {"unit":..., "action":"start", "success":true, "message":...}
# Exit:   0=ok  1=invalid_input  3=execution_fail

set -euo pipefail

die_input() { printf '{"error":"%s","code":1}\n' "$*" >&2; exit 1; }
die_exec()  { printf '{"error":"%s","code":3}\n' "$*" >&2; exit 3; }
json_str()  { printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }

INPUT=$(cat)
UNIT=$(echo "$INPUT" | grep -oP '"unit"\s*:\s*"\K[^"]+' 2>/dev/null || true)

[[ -z "$UNIT" ]]             && die_input "unit alani gerekli"
[[ "$UNIT" =~ ^[a-zA-Z0-9._@:-]{1,64}$ ]] || die_input "Gecersiz unit adi"
[[ "$UNIT" == *"/"* ]]        && die_input "Gecersiz unit adi (slash iceremiyor)"

if systemctl start "${UNIT}" 2>/tmp/onx-svc-start-err; then
  printf '{"unit":"%s","action":"start","success":true,"message":"%s baslatildi"}\n' \
    "$(json_str "$UNIT")" "$(json_str "$UNIT")"
  exit 0
else
  ERR=$(cat /tmp/onx-svc-start-err 2>/dev/null | head -3 || echo "bilinmeyen hata")
  rm -f /tmp/onx-svc-start-err
  die_exec "$(json_str "systemctl start ${UNIT} basarisiz: ${ERR}")"
fi
