2023-06-22 19:36:52 +05:00
|
|
|
const cookieParser = require("cookie-parser"),
|
|
|
|
underMaintenancePageDefault = require("./underMaintenancePageDefault"),
|
|
|
|
error404pageDefault = require("./404pagedefault");
|
|
|
|
|
|
|
|
const mainRouter = require("./Routes/main"),
|
|
|
|
dashboardRouter = require("./Routes/dashboard"),
|
|
|
|
discordRouter = require("./Routes/discord");
|
|
|
|
|
2023-06-19 12:35:11 +05:00
|
|
|
module.exports = (app, config, themeConfig, modules) => {
|
2023-06-22 19:36:52 +05:00
|
|
|
app.use(cookieParser());
|
|
|
|
|
|
|
|
app.use((req, res, next) => {
|
|
|
|
req.bot = config.bot;
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
|
|
|
|
if (themeConfig.defaultLocales) {
|
|
|
|
app.use((req, res, next) => {
|
|
|
|
if (req.cookies?.lang) req.lang = req.cookies.lang;
|
|
|
|
else req.lang = req.acceptsLanguages()[0].replace("-", "");
|
|
|
|
|
|
|
|
if (themeConfig.locales) {
|
|
|
|
if (Object.keys(themeConfig.locales).includes(req.lang)) req.locales = themeConfig.locales[req.lang];
|
|
|
|
else req.locales = themeConfig.locales[Object.keys(themeConfig.locales)[0]];
|
|
|
|
} else
|
|
|
|
req.locales = themeConfig.defaultLocales[Object.keys(themeConfig.defaultLocales).includes(req.lang) ? req.lang : "enUS"];
|
|
|
|
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
app.use("/discord", discordRouter(app, config, themeConfig, modules));
|
|
|
|
|
|
|
|
if (config.useUnderMaintenance) {
|
|
|
|
app.get(config.underMaintenanceAccessPage || "/total-secret-get-access", (req, res) => {
|
|
|
|
res.send(`
|
|
|
|
<form action="${config.domain}${config.underMaintenanceAccessPage || "/total-secret-get-access"}" method="POST" >
|
|
|
|
<input id="accessKey" name="accessKey"/>
|
|
|
|
<button role="submit">Submit</button>
|
|
|
|
</form>
|
|
|
|
`);
|
|
|
|
});
|
|
|
|
|
|
|
|
app.post(config.underMaintenanceAccessPage || "/total-secret-get-access", (req, res) => {
|
|
|
|
if (!req.body) req.body = {};
|
|
|
|
|
|
|
|
const accessKey = req.body.accessKey;
|
|
|
|
|
|
|
|
if (accessKey != config.underMaintenanceAccessKey) return res.send("Wrong key.");
|
|
|
|
|
|
|
|
req.session.umaccess = true;
|
|
|
|
res.redirect("/");
|
|
|
|
});
|
|
|
|
|
|
|
|
app.use((req, res, next) => {
|
|
|
|
if (req.originalUrl.startsWith("/loading")) return next();
|
|
|
|
|
|
|
|
if (!req.session.umaccess && !req.session.user) {
|
|
|
|
if (!config.useThemeMaintenance)
|
|
|
|
return res.send(config.underMaintenanceCustomHtml || underMaintenancePageDefault(config.underMaintenance, false));
|
|
|
|
else
|
|
|
|
res.render("maintenance", {
|
|
|
|
req: req,
|
|
|
|
bot: config.bot,
|
|
|
|
themeConfig: req.themeConfig,
|
|
|
|
loggedIn: false,
|
|
|
|
defaultMaintenanceConfig: config.underMaintenance || {},
|
|
|
|
});
|
|
|
|
} else if (!req.session.umaccess && config.ownerIDs && !config.ownerIDs.includes(req.session.user.id)) {
|
|
|
|
if (!config.useThemeMaintenance)
|
|
|
|
return res.send(config.underMaintenanceCustomHtml || underMaintenancePageDefault(config.underMaintenance, true));
|
|
|
|
else
|
|
|
|
res.render("maintenance", {
|
|
|
|
req: req,
|
|
|
|
bot: config.bot,
|
|
|
|
themeConfig: req.themeConfig,
|
|
|
|
loggedIn: true,
|
|
|
|
defaultMaintenanceConfig: config.underMaintenance || {},
|
|
|
|
});
|
|
|
|
} else next();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
app.use("/", mainRouter(app, config, themeConfig, modules));
|
|
|
|
app.use("/", dashboardRouter(app, config, themeConfig, modules));
|
|
|
|
|
|
|
|
config.theme.init(app, config);
|
|
|
|
|
|
|
|
const customPages = config.customPages || [];
|
|
|
|
|
|
|
|
customPages.forEach(p => {
|
|
|
|
if (p.type == "redirect") {
|
|
|
|
app.get(p.endpoint, async (req, res) => {
|
|
|
|
const endpoint = await p.getEndpoint({
|
|
|
|
user: req.session.user || {},
|
|
|
|
req,
|
|
|
|
});
|
|
|
|
|
|
|
|
res.redirect(endpoint);
|
|
|
|
});
|
|
|
|
} else if (p.type == "html") {
|
|
|
|
app.get(p.endpoint, async (req, res) => {
|
|
|
|
const html = await p.getHtml({
|
|
|
|
user: req.session.user || {},
|
|
|
|
req,
|
|
|
|
});
|
|
|
|
|
|
|
|
res.send(html);
|
|
|
|
});
|
|
|
|
} else if (p.type == "json") {
|
|
|
|
app.get(p.endpoint, async (req, res) => {
|
|
|
|
const json = await p.getJson({
|
|
|
|
user: req.session.user || {},
|
|
|
|
req,
|
|
|
|
});
|
|
|
|
|
|
|
|
res.send(json);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
modules.forEach(module => {
|
|
|
|
module.app({
|
|
|
|
app: app,
|
|
|
|
config: this.config,
|
|
|
|
themeConfig: themeConfig,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!config.useTheme404) {
|
|
|
|
app.get("*", (req, res) => {
|
|
|
|
const text = config.html404 || error404pageDefault(config.websiteTitle || themeConfig.websiteName);
|
|
|
|
|
|
|
|
res.send(text.replace("{{websiteTitle}}", config.websiteTitle || themeConfig.websiteName));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|