Secure-Share / src /server.js
TITI14ONI
Configuration finale avec Docker et variables d'environnement
9cf1ab7
Raw
History Blame Contribute Delete
1.65 kB
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)
);