<?php
// فایل جاروبرقی پنل X-UI (نسخه نهایی: اصلاح دقیق آدرس‌دهی حذف)
header('Content-Type: text/html; charset=utf-8');
include 'config.php';

echo "<h2>🚀 شروع پاکسازی قطعی کانفیگ‌های منقضی شده از پنل...</h2>";

$servers = $connection->query("SELECT * FROM server_config WHERE type IN ('sanaei', 'alireza')");
if (!$servers || $servers->num_rows == 0) die("هیچ سرور سنایی یا علیرضا یافت نشد.");

$now_ms = time() * 1000;

while($server = $servers->fetch_assoc()) {
    $server_id = $server['id'];
    $panel_url = rtrim($server['panel_url'], '/');
    $server_type = $server['type']; 
    $base_path = ($server_type == 'sanaei') ? '/panel' : '/xui';
    
    $title_query = $connection->query("SELECT title FROM server_info WHERE id = $server_id");
    $server_title = ($title_query && $title_query->num_rows > 0) ? $title_query->fetch_assoc()['title'] : "سرور $server_id";
    
    echo "<h3>🖥 بررسی سرور: $server_title</h3>";
    
    // 1. لاگین و دریافت نشست (کوکی)
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $panel_url . '/login',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query(["username" => $server['username'], "password" => $server['password']]),
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => true, 
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_TIMEOUT => 10
    ]);
    
    $response = curl_exec($ch);
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $header_size);
    $body = substr($response, $header_size);
    curl_close($ch);
    
    preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $header, $matches);
    $cookie_str = "";
    foreach ($matches[1] as $item) {
        $cookie_str .= $item . "; ";
    }
    
    $login_res = json_decode($body);
    
    if(!$login_res || !isset($login_res->success) || !$login_res->success) {
        echo "<p>❌ خطا در لاگین به پنل.</p><hr>";
        continue;
    }

    // 2. دریافت لیست کلاینت‌ها
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $panel_url . $base_path . '/api/inbounds/list',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => array('Cookie: ' . $cookie_str, 'Accept: application/json'),
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_TIMEOUT => 15
    ]);
    $list_res = json_decode(curl_exec($ch));
    curl_close($ch);
    
    if($list_res && isset($list_res->success) && $list_res->success) {
        $inbounds = $list_res->obj;
        $deleted_count = 0;
        
        foreach($inbounds as $inbound) {
            $inbound_id = $inbound->id;
            $clientStats = isset($inbound->clientStats) ? $inbound->clientStats : null;
            $settings = json_decode($inbound->settings); 
            
            if(!$clientStats || !isset($settings->clients)) continue;
            
            foreach($clientStats as $stat) {
                $email = $stat->email;
                $up = $stat->up;
                $down = $stat->down;
                $total = $stat->total;
                $expiry = $stat->expiryTime;
                
                $isExpiredByTime = ($expiry > 0 && $expiry < $now_ms);
                $isExpiredByVolume = ($total > 0 && ($up + $down) >= $total);
                
                if($isExpiredByTime || $isExpiredByVolume) {
                    $uuid_to_delete = "";
                    foreach($settings->clients as $client) {
                        if($client->email == $email) {
                            $uuid_to_delete = isset($client->id) ? $client->id : ($client->password ?? "");
                            break;
                        }
                    }
                    
                    if($uuid_to_delete != "") {
                        // 🔴 مشکل این خط بود که به طور کامل اصلاح شد
                        $del_url = $panel_url . $base_path . "/inbound/" . $inbound_id . "/delClient/" . rawurlencode($uuid_to_delete);
                        
                        $ch_del = curl_init();
                        curl_setopt_array($ch_del, [
                            CURLOPT_URL => $del_url,
                            CURLOPT_POST => true,
                            CURLOPT_POSTFIELDS => '', 
                            CURLOPT_RETURNTRANSFER => true,
                            CURLOPT_SSL_VERIFYHOST => false,
                            CURLOPT_SSL_VERIFYPEER => false,
                            CURLOPT_TIMEOUT => 10,
                            CURLOPT_HTTPHEADER => array(
                                'Cookie: ' . $cookie_str,
                                'Accept: application/json',
                                'X-Requested-With: XMLHttpRequest'
                            )
                        ]);
                        $raw_res = curl_exec($ch_del);
                        $http_code = curl_getinfo($ch_del, CURLINFO_HTTP_CODE);
                        $del_response = json_decode($raw_res);
                        curl_close($ch_del);
                        
                        if($del_response && isset($del_response->success) && $del_response->success) {
                            $reason = $isExpiredByTime ? "اتمام زمان" : "اتمام حجم";
                            echo "<span style='color:green;'>✅ حذف قطعی شد: <b>$email</b> (دلیل: $reason)</span><br>";
                            $deleted_count++;
                        } else {
                            $errMsg = isset($del_response->msg) ? $del_response->msg : "کد HTTP: $http_code | پاسخ: " . strip_tags(substr($raw_res, 0, 100));
                            echo "<span style='color:red;'>⚠️ خطا در حذف: $email - دلیل: $errMsg</span><br>";
                        }
                        
                        usleep(300000); // 0.3 ثانیه وقفه برای جلوگیری از بن شدن توسط پنل
                    }
                }
            }
        }
        echo "<p>✅ بررسی این سرور تمام شد. تعداد حذف شده: <b>$deleted_count</b></p><hr>";
    } else {
        echo "<p>❌ خطا در دریافت لیست از پنل. کوکی نامعتبر است یا آدرس پنل اشتباه است.</p><hr>";
    }
}
echo "<h2>🏁 عملیات جاروکشی با موفقیت به پایان رسید.</h2>";
?>