DeMoon-Backend/up.js
2024-06-08 14:16:28 +08:00

78 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const express = require('express');
const fs = require('fs');
const path = require('path');
const lib = require("./lib.js")
const app = express();
const port = 3000;
lib.fmkdir("mod")
lib.fmkdir("log")
// 处理GET请求路径为/modid
app.get('/modid', (req, res) => {
// 从请求中获取modid和client参数
const { modid, client } = req.query;
// 检查modid和client参数是否存在
if (!modid || !client) {
return res.status(400).send('缺少必要的查询参数');
}
// 检查client参数是否为有效值
const validClients = ['true', 'false', 'trlse'];
if (!validClients.includes(client)) {
return res.status(400).send('client参数值无效');
}
// 获取服务器端当前时间戳
const uptime = Date.now();
// 构建包含参数的对象
const data = {
modid: modid,
uptime: uptime,
client: client
};
// 生成文件路径
const filePath = path.join(__dirname, 'mod', `${modid}.json`);
// 检查文件是否已存在
if (fs.existsSync(filePath)) {
return res.status(400).send('文件列表中已有Mod');
}
// 将对象写入到JSON文件中
fs.writeFile(filePath, JSON.stringify(data, null, 2), (err) => {
if (err) {
return res.status(500).send('写入文件时发生错误');
}
// 获取当前时间和用户IP
const currentTime = new Date().toLocaleString();
const userIP = req.ip;
// 日志信息
const logMessage = `[${currentTime}] {${userIP}} 提交 ${modid} 成功\n`;
console.log(logMessage)
// 获取今天的日期
const today = new Date().toISOString().slice(0, 10);
const logFilePath = path.join(logDir, `${today}.log`);
// 追加日志信息到日志文件
fs.appendFile(logFilePath, logMessage, (err) => {
if (err) {
console.error('写入日志文件时发生错误:', err);
}
});
// 返回成功消息给客户端
res.send('提交成功');
});
});
// 启动服务器并监听指定端口
app.listen(port, () => {
console.log(`服务器正在运行在 http://localhost:${port}`);
});