index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright (c) 2025 gugdun
  2. // All rights reserved. Unauthorized use, copying, or distribution is strictly prohibited.
  3. require("dotenv").config();
  4. const path = require("path");
  5. const express = require("express");
  6. const cookieParser = require("cookie-parser");
  7. const passport = require("passport");
  8. const session = require("express-session");
  9. const pgSession = require("connect-pg-simple")(session);
  10. const indexRouter = require("./routes/index");
  11. const authRouter = require("./routes/auth");
  12. const chatRouter = require("./routes/chat");
  13. const addRouter = require("./routes/add");
  14. const longpollRouter = require("./routes/longpoll");
  15. const attachmentRouter = require("./routes/attachment");
  16. const PORT = process.env.PORT || 3000;
  17. const app = express();
  18. app.set("trust proxy", 1);
  19. app.set("view engine", "ejs");
  20. app.set("views", path.join(__dirname, "views"));
  21. app.use(express.json());
  22. app.use(express.urlencoded({ extended: false }));
  23. app.use(cookieParser());
  24. app.use(express.static("public"));
  25. app.use(session({
  26. secret: process.env.SESSION_SECRET,
  27. resave: false,
  28. saveUninitialized: false,
  29. store: new pgSession({
  30. tableName: "sessions",
  31. conString: process.env.POSTGRES_CONNECTION,
  32. createTableIfMissing: true
  33. }),
  34. cookie: {
  35. path: "/",
  36. secure: "auto",
  37. sameSite: "strict",
  38. httpOnly: true,
  39. maxAge: Number(process.env.COOKIE_MAX_AGE)
  40. }
  41. }));
  42. app.use(passport.authenticate("session"));
  43. app.use(indexRouter);
  44. app.use(authRouter);
  45. app.use(chatRouter);
  46. app.use(addRouter);
  47. app.use(longpollRouter);
  48. app.use(attachmentRouter);
  49. app.use(function (req, res, next) {
  50. next(createError(404));
  51. });
  52. app.use(function (err, req, res, next) {
  53. res.locals.message = err.message;
  54. res.locals.error = err;
  55. res.status(err.status || 500);
  56. res.render('error');
  57. });
  58. app.listen(PORT, function () {
  59. console.log(`Listening on port ${PORT}`);
  60. });