#!/usr/bin/env bash
# audit_dominanostra_web.sh  — eseguito da HERMES (radiosrv) via SSH read-only
# Conta gli IP che attaccano wp-login/xmlrpc su dominanostra.it e i ban fail2ban.
# NESSUNA modifica sul server remoto. Richiede che lo script
# fix_dominanostra_sudoers_apache.sh sia stato lanciato (lettura log Apache).
set -u
HOST="217.182.171.171"; PORT="22672"; USER="monnis"; KEY="$HOME/.ssh/id_ed25519_dominanostra"
DATE=$(date +%Y-%m-%d)
SHARE="/var/www/dam.stefanomonni.it/share"
OUT="$SHARE/audit_dominanostra_web_$DATE.html"
run() { ssh -n -i "$KEY" -p "$PORT" -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes "$USER@$HOST" "$1" 2>&1; }

# 1) Accessi wp-login / xmlrpc (se log leggibili)
WPCOUNT=$(run 'sudo -n grep -c -E "wp-login.php|xmlrpc.php" /var/log/apache2/access.log 2>/dev/null || echo NEGATO')
TOP_IP=$(run 'sudo -n grep -E "wp-login.php|xmlrpc.php" /var/log/apache2/access.log 2>/dev/null | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort | uniq -c | sort -rn | head -10')

# 2) Stato jail fail2ban rilevanti
J_WP=$(run 'sudo -n /usr/bin/fail2ban-client status wordpress 2>/dev/null | grep -iE "Currently banned|Total banned" | tr "\n" " "')
J_DOV=$(run 'sudo -n /usr/bin/fail2ban-client status dovecot 2>/dev/null | grep -iE "Currently banned|Total banned" | tr "\n" " "')
J_SSH=$(run 'sudo -n /usr/bin/fail2ban-client status sshd 2>/dev/null | grep -iE "Currently banned|Total banned" | tr "\n" " "')

cat > /tmp/audit_dominanostra_web_$DATE.html <<EOF
<!DOCTYPE html><html lang="it"><head><meta charset="utf-8">
<title>Audit Web DOMINANOSTRA — $DATE</title>
<style>body{font-family:Helvetica,Arial,sans-serif;max-width:820px;margin:0 auto;padding:40px 24px;color:#1a1a1a}
h1{font-size:22px;border-bottom:3px solid #0b3d91;padding-bottom:12px}
.meta{color:#666;font-size:13px}
table{border-collapse:collapse;width:100%;margin:14px 0}td,th{border:1px solid #e3e3e3;padding:6px 10px;text-align:left;font-size:14px}
th{background:#f4f6fb}.ok{color:#145a32}.warn{color:#7a5c00}
pre{background:#f6f6f6;padding:12px;border-radius:4px;font-size:12px;overflow:auto}
footer{margin-top:24px;border-top:1px solid #e3e3e3;padding-top:8px;color:#999;font-size:11px}</style></head>
<body><h1>Audit Web — DOMINANOSTRA</h1>
<div class="meta">$DATE · read-only · server $HOST</div>
<h2>Accessi WordPress (wp-login / xmlrpc)</h2>
<table>
<tr><th>Totale richieste wp-login/xmlrpc (log corrente)</th><td>$WPCOUNT</td></tr>
</table>
<h2>Top IP attaccanti</h2>
<pre>${TOP_IP:-nessun dato (log non leggibile o nessun attacco)}</pre>
<h2>Stato fail2ban</h2>
<table>
<tr><th>Jail</th><th>Banned (correnti / totali)</th></tr>
<tr><td>wordpress</td><td>${J_WP:-n/d}</td></tr>
<tr><td>dovecot</td><td>${J_DOV:-n/d}</td></tr>
<tr><td>sshd</td><td>${J_SSH:-n/d}</td></tr>
</table>
<footer>Audit READ-ONLY generato da Hermes Agent — nessuna modifica sul server.</footer></body></html>
EOF

sudo -n cp /tmp/audit_dominanostra_web_$DATE.html "$OUT" && sudo -n chown www-data:www-data "$OUT" && sudo -n chmod 644 "$OUT"
rm -f /tmp/audit_dominanostra_web_$DATE.html
echo "Report: https://dam.stefanomonni.it/share/audit_dominanostra_web_$DATE.html"
