<?php
// Run once to set or change the web admin panel password. Delete this file after use.
$root = __DIR__;
$msg = '';
$err = '';
$warn = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $p1 = trim((string)($_POST['password'] ?? ''));
    $p2 = trim((string)($_POST['password2'] ?? ''));
    if (strlen($p1) < 6) {
        $err = 'رمز پنل باید حداقل ۶ کاراکتر باشد.';
    } elseif ($p1 !== $p2) {
        $err = 'تکرار رمز با رمز اصلی یکی نیست.';
    } elseif (!is_file($root . '/config.php')) {
        $err = 'config.php پیدا نشد. اول install.php را اجرا کن.';
    } else {
        $hash = password_hash($p1, PASSWORD_DEFAULT);

        // منبع اصلی ورود پنل: فایل داخلی. این روش با کش config.php و define تکراری مشکل ندارد.
        $dataDir = $root . '/lib/kodam';
        if (!is_dir($dataDir)) { @mkdir($dataDir, 0775, true); }
        $data = [
            'password_hash' => $hash,
            'updated_at' => date('c'),
            'version' => 'v40',
        ];
        $okData = (@file_put_contents($dataDir . '/data-web-admin.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), LOCK_EX) !== false);

        // برای سازگاری با فایل‌های دیگر، داخل config.php هم ذخیره می‌کنیم؛ ولی login اول فایل داخلی را می‌خواند.
        $cfgPath = $root . '/config.php';
        $cfg = (string)@file_get_contents($cfgPath);
        if ($cfg === '') {
            $okConfig = false;
        } else {
            $cfg = preg_replace('/\?>\s*$/', '', $cfg);
            foreach (['WEB_ADMIN_PASSWORD_HASH', 'BACKUP_DOWNLOAD_PASSWORD_HASH'] as $const) {
                $cfg = preg_replace("/\s*define\s*\(\s*['\"]{$const}['\"]\s*,\s*.*?\)\s*;/s", "", $cfg);
            }
            $cfg .= "\n// Web panel and backup password hashes - generated by install_web_panel.php\n";
            $cfg .= "define('WEB_ADMIN_PASSWORD_HASH', " . var_export($hash, true) . ");\n";
            $cfg .= "define('BACKUP_DOWNLOAD_PASSWORD_HASH', " . var_export($hash, true) . ");\n";
            $cfg .= "?>\n";
            $okConfig = (@file_put_contents($cfgPath, $cfg, LOCK_EX) !== false);
        }

        // دیتابیس هم اگر آماده بود، همان هش را نگه می‌دارد؛ نبودنش مانع ورود نیست.
        try {
            if (is_file($root . '/config_db.php')) @require_once $root . '/config_db.php';
            if (is_file($root . '/lib/db_storage.php')) @require_once $root . '/lib/db_storage.php';
            if (function_exists('bot_sql_pdo') && ($pdo = bot_sql_pdo())) {
                $pdo->exec("CREATE TABLE IF NOT EXISTS bot_settings (setting_key VARCHAR(190) PRIMARY KEY, storage_value LONGTEXT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
                $st = $pdo->prepare("INSERT INTO bot_settings(setting_key, storage_value) VALUES('web_admin_password_hash', ?) ON DUPLICATE KEY UPDATE storage_value=VALUES(storage_value)");
                $st->execute([$hash]);
            }
        } catch (Throwable $e) {}

        if (!$okData && !$okConfig) {
            $err = 'رمز ذخیره نشد. دسترسی نوشتن پوشه lib/kodam و فایل config.php را بررسی کن.';
        } else {
            if (!$okConfig) $warn = 'رمز در فایل داخلی پنل ذخیره شد ولی config.php قابل نوشتن نبود. ورود پنل همچنان باید کار کند.';
            if (!$okData) $warn = 'رمز در config.php ذخیره شد ولی فایل داخلی پنل قابل نوشتن نبود. دسترسی پوشه lib/kodam را بررسی کن.';
            $msg = 'رمز پنل وب ذخیره شد. حالا این فایل را حذف کن و وارد /admin شو.';
        }
    }
}
function h($v){return htmlspecialchars((string)$v, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');}
?><!doctype html><html lang="fa" dir="rtl"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>نصب پنل وب</title><style>body{font-family:tahoma;background:#f6f7fb;margin:0;color:#1f2937}.box{max-width:430px;margin:80px auto;background:#fff;border:1px solid #e5e7eb;border-radius:18px;padding:22px}input{width:100%;padding:11px;border:1px solid #ddd;border-radius:12px;margin:7px 0 14px;box-sizing:border-box}button{background:#2563eb;color:white;border:0;border-radius:12px;padding:11px 16px;cursor:pointer}.ok{background:#dcfce7;padding:10px;border-radius:12px;margin:10px 0}.er{background:#fee2e2;padding:10px;border-radius:12px;margin:10px 0}.wr{background:#fef3c7;padding:10px;border-radius:12px;margin:10px 0}a{color:#2563eb}</style></head><body><div class="box"><h2>تنظیم رمز پنل وب</h2><?php if($msg):?><div class="ok"><?=h($msg)?></div><?php endif;?><?php if($warn):?><div class="wr"><?=h($warn)?></div><?php endif;?><?php if($err):?><div class="er"><?=h($err)?></div><?php endif;?><form method="post"><label>رمز پنل وب</label><input type="password" name="password" required autofocus autocomplete="new-password"><label>تکرار رمز</label><input type="password" name="password2" required autocomplete="new-password"><button>ذخیره رمز</button></form><p>بعد از ذخیره، فایل <b>install_web_panel.php</b> را از هاست حذف کن.</p><p><a href="admin/login.php">رفتن به صفحه ورود پنل</a></p></div></body></html>
