#!/usr/bin/env bash
#
# onx-mysql-root-cnf — /root/.onox-mysql-root.cnf okuyup root credential döner
#
# Stdin:  JSON {} (input gereksiz)
# Stdout: JSON {"user":"root","password":"...","host":"localhost"}
# Exit:   0=ok  3=execution_fail
#
# Sudoers: apache ALL=(root) NOPASSWD: /usr/local/onoxsoft/bin/onx-mysql-root-cnf
#
# Güvenlik:
#   /root/.onox-mysql-root.cnf mode 0600 root:root — apache okuyamaz.
#   Bu script root olarak çalışır (sudo), dosyayı okur, JSON döner.
#   Output sadece panel'in PhpMyAdminSso servisine gider, oradan da localhost-only
#   /api/pma-sso/consume endpoint'inden phpMyAdmin signon script'ine.
#   Şifre asla loglanmaz veya disk'e yazılmaz (sadece response body).

set -euo pipefail

die_exec() { printf '{"error":"%s","code":3}\n' "$*" >&2; exit 3; }

CNF_FILE="/root/.onox-mysql-root.cnf"

# Dosya yoksa: install.sh henüz step 9'u tamamlamamış veya MariaDB unix_socket
# auth kullanıyor — bu durumda boş parola dönelim, phpMyAdmin signon root@localhost
# unix_socket auth deneyecek (passwordless).
if [[ ! -f "${CNF_FILE}" ]]; then
  printf '{"user":"root","password":"","host":"localhost","note":"cnf_not_found_using_socket"}\n'
  exit 0
fi

# Dosya readable mi (root için her zaman olmalı ama defansif)
if [[ ! -r "${CNF_FILE}" ]]; then
  die_exec "cnf dosyasi okunamadi: ${CNF_FILE}"
fi

# Parse — [client] veya [mysql] bölümünden user/password çek
# Tipik içerik:
#   [client]
#   user=root
#   password="s3cret"
USER=$(grep -E '^\s*user\s*=' "${CNF_FILE}" | head -1 \
  | sed -E 's/^\s*user\s*=\s*//; s/^["'"'"']//; s/["'"'"']$//')
PASS=$(grep -E '^\s*password\s*=' "${CNF_FILE}" | head -1 \
  | sed -E 's/^\s*password\s*=\s*//; s/^["'"'"']//; s/["'"'"']$//')
HOST=$(grep -E '^\s*host\s*=' "${CNF_FILE}" | head -1 \
  | sed -E 's/^\s*host\s*=\s*//; s/^["'"'"']//; s/["'"'"']$//' || true)

[[ -z "${USER}" ]] && USER="root"
[[ -z "${HOST}" ]] && HOST="localhost"

# JSON-escape password (backslash + double quote)
PASS_ESC=$(printf '%s' "${PASS}" | sed 's/\\/\\\\/g; s/"/\\"/g')

printf '{"user":"%s","password":"%s","host":"%s"}\n' \
  "${USER}" "${PASS_ESC}" "${HOST}"

exit 0
