#!/bin/bash
# ---------------------------------------------------------
# SSH-WS BANDWIDTH ACCOUNTANT (SINKRONISASI TOTAL)
# ---------------------------------------------------------

USAGE_DIR="/etc/ssh/usage_db"
mkdir -p "$USAGE_DIR"

# Cari semua user dari database sistem
cat /etc/ssh/.ssh.db | while read -r line; do
    user=$(echo "$line" | awk '{print $2}')
    [[ -z "$user" ]] && continue

    # Cari port aktif user dari log
    r_port=$(grep "auth succeeded for '$user'" /var/log/auth.log | tail -n 1 | grep -oP "127.0.0.1:[0-9]+" | cut -d: -f2)

    if [ ! -z "$r_port" ]; then
        # Ambil bytes_sent saat ini
        stats=$(ss -ti "dport = :$r_port or sport = :$r_port" | grep "bytes_sent" | head -n 1)
        tx_raw=$(echo "$stats" | grep -oP "bytes_sent:[0-9]+" | cut -d: -f2)

        if [ ! -z "$tx_raw" ]; then
            # Ambil nilai terakhir yang tercatat di sesi ini
            last_recorded=$(cat "$USAGE_DIR/$user.last" 2>/dev/null || echo 0)

            if [ "$tx_raw" -lt "$last_recorded" ]; then
                # Jika tx_raw mendadak lebih kecil, berarti user RECONNECT
                # Tambahkan nilai terakhir ke total utama
                total_old=$(cat "$USAGE_DIR/$user.total" 2>/dev/null || echo 0)
                echo "$((total_old + last_recorded))" > "$USAGE_DIR/$user.total"
                echo "$tx_raw" > "$USAGE_DIR/$user.last"
            else
                # Jika masih sesi yang sama, simpan saja nilai terbarunya
                echo "$tx_raw" > "$USAGE_DIR/$user.last"
            fi
        fi
    fi
done