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)
);