#!/bin/sh
# ovh-dynhost-update.sh - POSIX sh verzió

# ---------- Konfiguráció ----------
DH_USER="meszely.eu-matrix"
DH_PASS="virgI6774#Panda"
HOSTNAME="home.meszely.eu"
LOGFILE="/var/log/ovh-dynhost-update.log"
# ---------- VÉGE konfiguráció ----------

log() {
  echo "$(date -Iseconds) - $*" >> "${LOGFILE}" 2>/dev/null || echo "$*"
}

get_public_ip() {
  curl -fsS https://api.ipify.org || echo ""
}

get_dns_ip() {
  dig +short A "${HOSTNAME}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -n1 || echo ""
}

update_ovh() {
  ip="$1"
  curl -fsS --max-time 30 --user "${DH_USER}:${DH_PASS}" \
    "https://www.ovh.com/nic/update?system=dyndns&hostname=${HOSTNAME}&myip=${ip}" || echo ""
}

main() {
  log "Script indítva — host: ${HOSTNAME}"

  public_ip="$(get_public_ip)"
  if [ -z "$public_ip" ]; then
    log "Hiba: nem sikerült lekérni a publikus IP-t."
    exit 1
  fi
  log "Publikus IP: $public_ip"

  dns_ip="$(get_dns_ip)"
  if [ -z "$dns_ip" ]; then
    log "Nincs A rekord jelenleg vagy nem elérhető (dns_ip üres)."
  else
    log "DNS-en található A rekord: $dns_ip"
  fi

  if [ "$public_ip" = "$dns_ip" ]; then
    log "IP nem változott (nochg). Nem frissítünk."
    exit 0
  fi

  log "IP eltér — frissítés OVH felé..."
  response="$(update_ovh "$public_ip")"
  log "OVH válasz: $response"

  case "$response" in
    good*|nochg*)
      log "Sikeres frissítés: $response"
      exit 0
      ;;
    *)
      log "Frissítés sikertelen: $response"
      exit 2
      ;;
  esac
}

main "$@"
