<?php
// 获取文件路径
$file = $_GET['file'];
$fullPath = '/root/.openclaw/workspace' . $file;

// 检查文件是否存在
if (!file_exists($fullPath)) {
    header('HTTP/1.1 404 Not Found');
    echo '<h1>文件未找到</h1>';
    exit;
}

// 获取文件内容
$content = file_get_contents($fullPath);

// 确定文件类型
$filename = basename($fullPath);
$ext = strtolower(pathinfo($fullPath, PATHINFO_EXTENSION));

// 映射文件扩展名到highlight.js的语言名称
$languageMap = [
    'py' => 'python',
    'c' => 'c',
    'cpp' => 'cpp',
    'java' => 'java',
    'go' => 'go',
    'js' => 'javascript',
    'css' => 'css',
    'html' => 'html',
    'xml' => 'xml',
    'json' => 'json',
    'md' => 'markdown',
    'txt' => 'plaintext',
    'ts' => 'typescript',
    'jsx' => 'javascript',
    'tsx' => 'typescript',
    'sh' => 'bash',
    'sql' => 'sql',
    'php' => 'php',
    'cmake' => 'cmake',
    'csv' => 'csv',
    'makefile' => 'makefile',
    'mk' => 'makefile',
    'in' => 'ini',
    'am' => 'makefile',
    'ac' => 'makefile'
];

// 检查是否是Makefile
if ($filename === 'Makefile' || $filename === 'makefile') {
    $language = 'makefile';
} else {
    $language = isset($languageMap[$ext]) ? $languageMap[$ext] : 'plaintext';
}
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo basename($fullPath); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/python.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/c.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/cpp.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/java.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/go.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/javascript.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/css.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/html.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/xml.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/json.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/markdown.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/typescript.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/bash.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/sql.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/php.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/cmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/makefile.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/ini.min.js"></script>
    <style>
        body {
            font-family: Consolas, Monaco, 'Courier New', monospace;
            margin: 0;
            padding: 20px;
            background-color: #1e1e1e;
            color: #d4d4d4;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0;
            background-color: #1e1e1e;
            border-radius: 0;
            box-shadow: none;
        }
        h1 {
            text-align: center;
            color: #d4d4d4;
            margin-bottom: 20px;
        }
        pre {
            background-color: #1e1e1e;
            padding: 0;
            border-radius: 0;
            overflow-x: auto;
            border: none;
            white-space: pre-wrap;
            word-wrap: break-word;
            margin: 0;
        }
        code {
            font-family: Consolas, Monaco, 'Courier New', monospace;
            font-size: 14px;
            color: #d4d4d4;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1><?php echo basename($fullPath); ?></h1>
        <pre><code class="language-<?php echo $language; ?>"><?php echo htmlspecialchars($content); ?></code></pre>
    </div>
    <script>
        hljs.highlightAll();
    </script>
</body>
</html>