no message

This commit is contained in:
2025-10-18 14:46:52 +08:00
commit 7a84025b05
387 changed files with 75711 additions and 0 deletions

125
user/autostr_jk_ok_stop.php Normal file
View File

@@ -0,0 +1,125 @@
<?php
include './email.php';
include_once './cgp.php';
// 日志记录函数,带有分割和日期归档功能
function log_message($message, $level = 'INFO') {
$timestamp = date('Y-m-d H:i:s');
$formatted_message = "[$timestamp] [$level] $message" . PHP_EOL;
// 日志文件按日期分割,每次运行新建日志文件
$log_dir = './log/auto_stop/';
if (!is_dir($log_dir)) mkdir($log_dir, 0777, true);
$log_file = $log_dir . 'auto_stop_' . date('Y-m-d_H-i-s') . '.log';
$max_log_size = 10 * 1024 * 1024; // 10MB
if (file_exists($log_file) && filesize($log_file) > $max_log_size) {
$archive_dir = $log_dir . date('Y-m-d') . '/';
if (!is_dir($archive_dir)) mkdir($archive_dir, 0777, true);
rename($log_file, $archive_dir . basename($log_file));
}
file_put_contents($log_file, $formatted_message, FILE_APPEND);
echo $formatted_message;
}
// 遍历目录函数
function traverse_directory($dir, $dir_username, $dir_password) {
log_message("开始遍历目录: $dir");
$files = array_diff(scandir($dir), ['.', '..']);
foreach ($files as $file) {
$path = "$dir/$file";
if (is_dir($path)) {
log_message("进入子目录: $path");
traverse_directory($path, $dir_username, $dir_password);
} elseif (pathinfo($file, PATHINFO_EXTENSION) === 'json') {
log_message("找到JSON文件: $path");
process_json_file($path, $dir_username);
}
}
log_message("结束遍历目录: $dir");
}
// 处理每个JSON文件的函数
function process_json_file($file_path, $dir_username) {
log_message("开始处理JSON文件: $file_path");
$json_content = file_get_contents($file_path);
$data = json_decode($json_content, true);
$dqtime = $data['dqtime'] ?? null;
$mod = $data['mod'] ?? null;
$auto = $data['auto'] ?? null;
$name = $data['name'] ?? null;
$json_username = $data['username'] ?? null;
$status = $data['status'] ?? null;
log_message("提取的数据: dqtime=$dqtime, mod=$mod, auto=$auto, name=$name, json_username=$json_username, status=$status");
if ($status === '已到期') {
log_message("产品状态为'已到期',跳过进一步操作。");
$_SESSION['user'] = $dir_username;
log_wt($name, "主机名 [{$json_username}] 已在 [{$dqtime}] 到期!", "products");
unlink($file_path);
return;
}
if ($auto == 1 && $dqtime <= date('Y-m-d')) {
log_message("产品已到期或今天到期: $dqtime准备执行模块操作...");
$_SESSION['user'] = $dir_username;
log_wt($name, "主机名 [{$json_username}] 已在 [{$dqtime}] 到期!", "products");
$Main_route = "./mods/$mod/Main.php";
if (file_exists($Main_route)) {
log_message("加载模块文件: $Main_route");
include_once $Main_route;
$re = @stop_product($data);
log_message("结果: $re");
unlink($file_path);
log_message("产品操作完成: $file_path");
sendMail("{$dir_username}@qq.com", '#Fuxsto Host 到期提醒', "您所购买的 [{$name}], 主机名 [{$json_username}]<br>已在 [{$dqtime}] 到期!");
log_message("邮件已发送给: {$dir_username}@qq.com");
} else {
log_message("模块文件不存在: $Main_route", 'ERROR');
}
} else {
log_message("auto字段不为1或产品未到期跳过操作。");
}
log_message("结束处理JSON文件: $file_path");
}
// 主函数,遍历 ./me/ 目录
function main() {
log_message("程序启动,开始遍历目录 ./me/");
$base_dir = './me/';
$users = array_diff(scandir($base_dir), ['.', '..']);
foreach ($users as $user) {
$passwords_dir = "$base_dir$user";
log_message("发现用户目录: $user");
$passwords = array_diff(scandir($passwords_dir), ['.', '..']);
foreach ($passwords as $password) {
$products_dir = "$passwords_dir/$password/products";
if (is_dir($products_dir)) {
log_message("发现产品目录: $products_dir");
traverse_directory($products_dir, $user, $password);
} else {
log_message("未找到产品目录: $products_dir", 'WARNING');
}
}
}
log_message("程序运行结束。");
}
// 启动主程序
main();
?>