Spaces:
Paused
Paused
File size: 1,645 Bytes
9cf1ab7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import dotenv from "dotenv";
dotenv.config();
import express from "express";
import session from "express-session";
import { connectDB } from "./services/db.js";
import authRoutes from "./routes/auth.js";
import uploadRoutes from "./routes/upload.js";
import downloadRoutes from "./routes/download.js";
import searchUserRoute from "./routes/search-user.js";
import settingsRoutes from "./routes/settings.js";
import adminRoutes from "./routes/admin.js";
await connectDB();
const app = express();
// État du bot (mis à jour par le bot lui-même)
export let botStatus = { online: false, lastPing: null };
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static("public"));
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false
}));
// 🤖 Route appelée par le bot pour signaler qu'il est en ligne
app.post("/internal/bot-ping", (req, res) => {
const { secret } = req.body;
if (secret !== process.env.INTERNAL_SECRET) {
return res.status(403).json({ error: "Forbidden" });
}
botStatus.online = true;
botStatus.lastPing = Date.now();
console.log("✅ Bot ping reçu");
res.json({ ok: true });
});
// Considère le bot offline si pas de ping depuis 60s
setInterval(() => {
if (botStatus.lastPing && Date.now() - botStatus.lastPing > 60_000) {
botStatus.online = false;
}
}, 10_000);
app.use(authRoutes);
app.use(uploadRoutes);
app.use(downloadRoutes);
app.use(searchUserRoute);
app.use(settingsRoutes);
app.use(adminRoutes);
app.listen(process.env.PORT, () =>
console.log("Serveur lancé sur " + process.env.BASE_URL)
); |