DeMoon-Backend/up.js

78 lines
2.0 KiB
JavaScript
Raw Normal View History

2024-06-08 06:16:28 +00:00
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}`);
});