✏️ 编辑:maintain.php
路径:
/home/boguraj1/.trash/public/maintain.php
大小:10.5 KB · 修改:2026-07-23 16:13:46 · 权限:0644 · 可写
← 返回目录
👁 查看
⬇ 下载
<?php /** * TMITStore Maintenance Script * Run once, then DELETE this file! * URL: https://yourdomain.com/maintain.php?token=tmit_maintain_2024 */ if (($_GET['token'] ?? '') !== 'tmit_maintain_2024') { http_response_code(403); die('<h2>403 Forbidden</h2>'); } header('Content-Type: text/html; charset=UTF-8'); // ── Auto-detect Laravel root ────────────────────────────────────────────── if (file_exists(__DIR__ . '/../vendor/autoload.php')) { $appRoot = realpath(__DIR__ . '/..'); // standard or local } elseif (file_exists(__DIR__ . '/../ecommerce/vendor/autoload.php')) { $appRoot = realpath(__DIR__ . '/../ecommerce'); // split deploy } else { die('<p style="color:red">❌ Laravel root not found!</p>'); } $webRoot = dirname($_SERVER['DOCUMENT_ROOT'] . $_SERVER['SCRIPT_NAME']); // public_html path $publicHtml = $_SERVER['DOCUMENT_ROOT']; ?><!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>TMITStore Maintenance</title> <style> body{font-family:monospace;background:#1a1a2e;color:#eee;padding:30px} .box{background:#16213e;border-radius:12px;padding:30px;max-width:750px;margin:0 auto} h2{color:#e63946}.ok{color:#4ade80}.fail{color:#f87171}.warn{color:#fbbf24}.info{color:#60a5fa} p{margin:6px 0;font-size:14px}hr{border-color:#333;margin:16px 0} .done{background:#0f3460;border-radius:8px;padding:16px;margin-top:20px} pre{background:#0a0a1a;padding:12px;border-radius:6px;overflow-x:auto;font-size:12px} </style> </head> <body><div class="box"> <h2>🔧 TMITStore Maintenance</h2> <p class="info">App Root: <strong><?= $appRoot ?></strong></p> <p class="info">Public: <strong><?= __DIR__ ?></strong></p> <?php // ───────────────────────────────────────────────────────────────────────────── // 1. Create license folder + validator.php // ───────────────────────────────────────────────────────────────────────────── echo '<hr><p><strong>1. License Server File</strong></p>'; $licenseDir = $publicHtml . '/license'; $validatorFile = $licenseDir . '/validator.php'; if (!is_dir($licenseDir)) { if (@mkdir($licenseDir, 0755, true)) { echo "<p class='ok'>✅ /license folder created.</p>"; } else { echo "<p class='fail'>❌ Could not create /license folder.</p>"; } } else { echo "<p class='ok'>✅ /license folder already exists.</p>"; } $validatorContent = <<<'PHP' <?php define('LICENSE_SECRET', 'TMIT_LIC_SECRET_2024_K9mPxZvR'); $licenses = [ 'tmitstore.top' => 'TMIT-OWNER-0001', 'localhost' => 'TMIT-DEV-LOCAL', '127.0.0.1' => 'TMIT-DEV-LOCAL', // নতুন customer যোগ করতে নিচে লাইন যোগ করো: // 'customer.com' => 'TMIT-XXXX-YYYY', ]; header('Content-Type: application/json; charset=UTF-8'); header('X-Robots-Tag: noindex, nofollow'); header('Cache-Control: no-store'); $secret = trim($_REQUEST['secret'] ?? ''); if ($secret !== LICENSE_SECRET) { http_response_code(403); echo json_encode(['valid' => false, 'message' => 'Forbidden']); exit; } $domain = strtolower(trim($_REQUEST['domain'] ?? '')); $domain = preg_replace('/^www\./i', '', $domain); $domain = explode(':', $domain)[0]; if (empty($domain)) { echo json_encode(['valid' => false, 'message' => 'No domain']); exit; } if (!array_key_exists($domain, $licenses)) { echo json_encode(['valid' => false, 'message' => 'Domain not licensed', 'domain' => $domain]); exit; } $code = trim($_REQUEST['code'] ?? ''); if (!empty($code) && $licenses[$domain] !== $code) { echo json_encode(['valid' => false, 'message' => 'Invalid purchase code']); exit; } echo json_encode(['valid' => true, 'message' => 'Licensed', 'domain' => $domain]); PHP; if (@file_put_contents($validatorFile, $validatorContent) !== false) { echo "<p class='ok'>✅ validator.php created at: <code>$validatorFile</code></p>"; } else { echo "<p class='fail'>❌ Could not write validator.php (permission issue?)</p>"; } // ───────────────────────────────────────────────────────────────────────────── // 2. Update .env — LICENSE settings // ───────────────────────────────────────────────────────────────────────────── echo '<hr><p><strong>2. Update .env — License Settings</strong></p>'; $envFile = $appRoot . '/.env'; if (file_exists($envFile)) { $env = file_get_contents($envFile); $host = $_SERVER['HTTP_HOST'] ?? 'tmitstore.top'; $host = preg_replace('/^www\./i', '', $host); $scheme = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http'; $licUrl = $scheme . '://' . $host . '/license/validator.php'; $updates = [ 'LICENSE_SERVER_URL' => $licUrl, 'LICENSE_PURCHASE_CODE'=> 'TMIT-OWNER-0001', 'LICENSE_SECRET_KEY' => 'TMIT_LIC_SECRET_2024_K9mPxZvR', ]; foreach ($updates as $key => $value) { if (preg_match('/^' . $key . '=/m', $env)) { $env = preg_replace('/^' . $key . '=.*/m', $key . '=' . $value, $env); echo "<p class='ok'>✅ Updated: <code>$key=$value</code></p>"; } else { $env .= "\n$key=$value"; echo "<p class='ok'>✅ Added: <code>$key=$value</code></p>"; } } if (@file_put_contents($envFile, $env) !== false) { echo "<p class='ok'>✅ .env saved.</p>"; } else { echo "<p class='fail'>❌ Could not write .env file.</p>"; } } else { echo "<p class='fail'>❌ .env file not found at: $envFile</p>"; } // ───────────────────────────────────────────────────────────────────────────── // 3. Clear all caches // ───────────────────────────────────────────────────────────────────────────── echo '<hr><p><strong>3. Clear Cache</strong></p>'; $cacheDirs = [ $appRoot . '/storage/framework/cache/data', $appRoot . '/storage/framework/views', $appRoot . '/bootstrap/cache', ]; $totalCleared = 0; foreach ($cacheDirs as $dir) { if (!is_dir($dir)) continue; $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS) ); $count = 0; foreach ($files as $file) { if ($file->isFile() && $file->getExtension() !== 'gitignore') { if (@unlink($file->getPathname())) $count++; } } $totalCleared += $count; $label = str_replace($appRoot, '', $dir); echo "<p class='ok'>✅ Cleared $count files from <code>$label</code></p>"; } echo "<p class='info'>Total cleared: $totalCleared files</p>"; // ───────────────────────────────────────────────────────────────────────────── // 4. Storage Symlink // ───────────────────────────────────────────────────────────────────────────── echo '<hr><p><strong>4. Storage Symlink</strong></p>'; $symlinkTarget = $appRoot . '/storage/app/public'; $symlinkPath = __DIR__ . '/storage'; if (is_link($symlinkPath)) { echo "<p class='ok'>✅ Storage symlink already exists.</p>"; } elseif (is_dir($symlinkPath)) { $files = array_diff(scandir($symlinkPath), ['.', '..']); if (empty($files)) { rmdir($symlinkPath); if (@symlink($symlinkTarget, $symlinkPath)) { echo "<p class='ok'>✅ Old empty folder removed, symlink created.</p>"; } else { echo "<p class='fail'>❌ Symlink failed. Run via SSH: <code>ln -s $symlinkTarget $symlinkPath</code></p>"; } } else { echo "<p class='warn'>⚠️ Storage folder has files. Delete manually then re-run.</p>"; } } else { if (@symlink($symlinkTarget, $symlinkPath)) { echo "<p class='ok'>✅ Storage symlink created.</p>"; } else { echo "<p class='fail'>❌ Symlink failed. Run via SSH: <code>ln -s $symlinkTarget $symlinkPath</code></p>"; } } // ───────────────────────────────────────────────────────────────────────────── // 5. Test license validator // ───────────────────────────────────────────────────────────────────────────── echo '<hr><p><strong>5. License Self-Test</strong></p>'; $host = preg_replace('/^www\./i', '', $_SERVER['HTTP_HOST'] ?? 'tmitstore.top'); $testUrl = 'https://' . $host . '/license/validator.php?secret=TMIT_LIC_SECRET_2024_K9mPxZvR&domain=' . $host; $ctx = stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false]]); $result = @file_get_contents($testUrl, false, $ctx); if ($result !== false) { $data = json_decode($result, true); if (!empty($data['valid'])) { echo "<p class='ok'>✅ License check passed! Domain <code>$host</code> is licensed.</p>"; } else { echo "<p class='fail'>❌ License check failed: " . ($data['message'] ?? 'unknown') . "</p>"; } echo "<pre>" . htmlspecialchars($result) . "</pre>"; } else { echo "<p class='warn'>⚠️ Could not self-test (URL may not be accessible yet).</p>"; echo "<p class='info'>Manually check: <code>$testUrl</code></p>"; } ?> <hr> <div class="done"> <p class="ok" style="font-size:18px;font-weight:bold">✅ Maintenance Complete!</p> <p class="warn">⚠️ <strong>এই ফাইলটা এখনই DELETE করো:</strong> <code>maintain.php</code></p> </div> </div></body></html>
💾 保存
取消
保存为 UTF-8,换行统一为 LF