<?php

// 扫描当前目录及子目录的所有文件，排除指定目录和文件格式
function scanFiles($dir, $excludeExtensions = [], $excludeDirs = []) {
    $files = array();

    // 获取当前目录下的所有文件
    $items = scandir($dir);
    foreach ($items as $item) {
        if ($item === '.' || $item === '..') continue; // 排除当前和上级目录

        $path = $dir . '/' . $item;

        // 如果是目录，检查是否在排除目录中
        if (is_dir($path)) {
            // 如果目录在排除列表中，跳过这个目录
            if (in_array($item, $excludeDirs)) {
                continue;
            }
            // 否则递归扫描该目录
            $files = array_merge($files, scanFiles($path, $excludeExtensions, $excludeDirs));
        } else {
            // 如果是文件且不在排除的扩展名中，加入文件列表
            $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
            if (!in_array($extension, $excludeExtensions)) {
                $files[] = $path;
            }
        }
    }

    return $files;
}

// 获取当前脚本所在的URL路径
$baseUrl = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/' );

// 设置需要排除的文件格式（可以根据需求自行修改）
$excludeExtensions = ['sh1', 'ini']; // 例：排除 .php 和 .md 文件
// 设置需要排除的目录（可以根据需求自行修改）
$excludeDirs = ['rhel7', '_dir', 'centos', 'su', 'docker', 'hqlee', '_dir', '_dir', '_dir']; // 例：排除 'exclude_dir' 和 'another_dir'

// 获取当前脚本所在目录
$currentDir = __DIR__;  // 当前脚本所在的目录
$files = scanFiles($currentDir, $excludeExtensions, $excludeDirs);

// 输出链接表格
echo '<style>
    table {
        border-collapse: collapse;
        width: 100%;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
        text-align: left;
    }
    th {
        background-color: #f2f2f2;
    }
</style>';

echo '<h2>文件列表</h2>';
echo '<table>';

foreach ($files as $file) {
    // 获取文件的相对路径
    $relativePath = str_replace($currentDir . '/', '', $file); // 去掉当前目录部分
    $fullUrl = $baseUrl . '/' . $relativePath;  // 拼接完整的URL

    echo '<tr>';
    echo '<td><a href="' . $fullUrl . '">' . $fullUrl . '</a></td>';
    echo '</tr>';
}

echo '</table>';

// 添加复制所有链接的按钮
echo '<button onclick="copyAllLinks()">复制全部链接</button>';

// 添加打包链接按钮
echo '<button onclick="downloadLinksAsTxt()">打包链接并下载</button>';
?>

<script>
    // 复制所有链接到剪贴板
    function copyAllLinks() {
        var links = document.getElementsByTagName('a');
        var text = '';
        for (var i = 0; i < links.length; i++) {
            text += decodeURIComponent(links[i].href) + '\n';
        }
        copyToClipboard(text);
    }

    // 将文本复制到剪贴板
    function copyToClipboard(text) {
        var dummy = document.createElement("textarea");
        document.body.appendChild(dummy);
        dummy.value = text;
        dummy.select();
        document.execCommand("copy");
        document.body.removeChild(dummy);
        alert("链接已复制到剪贴板！");
    }

    // 打包链接并下载为TXT文件
    function downloadLinksAsTxt() {
        var links = document.getElementsByTagName('a');
        var text = '';
        for (var i = 0; i < links.length; i++) {
            text += decodeURIComponent(links[i].href) + '\n';
        }

        // 创建一个blob对象
        var blob = new Blob([text], { type: 'text/plain' });
        var url = URL.createObjectURL(blob);
        
        // 创建一个虚拟链接并点击以下载文件
        var a = document.createElement('a');
        a.href = url;
        a.download = 'links.txt'; // 文件名
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);

        // 释放URL对象
        URL.revokeObjectURL(url);
    }
</script>
