Spaces:
Paused
Paused
| 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) | |
| ); |