#!/bin/bash
# Writes /srv/furtka/www/status.json with current system stats. Fired by
# furtka-status.timer every 30s; also runs once 10s after boot.
set -e

out=/srv/furtka/www/status.json
tmp=$(mktemp)

hostname=$(cat /etc/hostname)
uptime=$(uptime -p 2>/dev/null | sed 's/^up //' || echo unknown)
if command -v docker >/dev/null 2>&1; then
    docker_version=$(docker --version 2>/dev/null         | awk '{print $3}' | tr -d ',' || echo unavailable)
else
    docker_version=unavailable
fi
disk_free=$(df -h / 2>/dev/null | awk 'NR==2 {print $4 " free of " $2}' || echo unknown)
ip_primary=$(ip -4 -o addr show scope global 2>/dev/null     | awk '{print $4}' | cut -d/ -f1 | head -1 || true)
kernel=$(uname -r 2>/dev/null || echo unknown)
ram_total=$(free -h --si 2>/dev/null | awk '/^Mem:/ {print $2}' || echo unknown)
furtka_version=$(cat /opt/furtka/VERSION 2>/dev/null || echo dev)
updated_at=$(date -Iseconds)

cat > "$tmp" <<EOF
{
  "hostname": "$hostname",
  "uptime": "$uptime",
  "docker_version": "$docker_version",
  "disk_free": "$disk_free",
  "ip_primary": "$ip_primary",
  "kernel": "$kernel",
  "ram_total": "$ram_total",
  "furtka_version": "$furtka_version",
  "updated_at": "$updated_at"
}
EOF

mv "$tmp" "$out"
chmod 644 "$out"
