Duongkum999's picture
Upload 56 files
91d9d20 verified
raw
history blame
3.55 kB
var log = require("../lib/log");
var utils = require("../lib/utils");
var path = require("path");
var Express = require("express");
var ExpressWs = require("express-ws");
var ExpressSession = require("express-session")({
secret: "không có gì là bí mật.",
resave: false,
saveUninitialized: true,
cookie: {
secure: true
}
});
var Os = require("os");
var fs = require("fs");
var App = Express();
ExpressWs(App);
App.set("view engine", "ejs");
App.set("views", path.resolve(__dirname, "views"));
App.use("/assets", utils.requestChecked, Express.static(path.resolve(__dirname, "assets")));
App.use(Express.urlencoded({ extended: true }));
App.use(Express.json());
App.use(ExpressSession);
if (global.mira.config.dashboardOptions.resetAccount) {
var { Messenger } = global.mira.apis;
var { adminIDs } = global.mira.config.botOptions;
var templMail = utils.randomStr({ length: 10, letter: true, number: false }) + "@mira.com";
var templPass = utils.randomStr({ length: 16 });
global.mira.config = {
dashboardOptions: {
user: templMail,
password: templPass
}
}
var message =
"==========================" +
"\n• Email: " + templMail +
"\n• Password: " + templPass +
"\n• Timestamp: " + Date.now() +
"\n==========================";
adminIDs.map(id => Messenger.send(message, id, _ => {}));
}
App.post("/", function (req, res) {
var { dashboardOptions } = global.mira.config;
var body = req.body;
var status, resData;
if (body.url === "/login") {
var { username, password, remember } = body;
if (username === dashboardOptions.user && password === dashboardOptions.password) {
req.session.loggedIn = true;
req.session.username = username;
req.session.cookie.maxAge = remember ? 7 * 24 * 60 * 60 * 1000 : 3 * 60 * 60 * 1000;
req.session.cookie.secure = req.secure || req.headers["x-forwarded-proto"] === "https";
req.session.cookie.httpOnly = true;
status = 200;
resData = {
isLogin: true
}
} else {
status = 401;
resData = {
message: "Wrong Username/Password."
}
}
} else if (body.url === "/logout") {
req.session.destroy();
status = 200;
resData = {
isLogin: false
}
}
res.status(status || 404);
res.json(resData || {});
});
App.get("/login", function (req, res) {
if (utils.isAuthenticated(req))
res.redirect("/dashboard");
else
res.render("login");
});
App.get("/", function (req, res) {
if (utils.isAuthenticated(req))
res.redirect("/dashboard");
else
res.redirect("/login");
});
App.use(function (req, res) {
res.status(404);
res.render("404");
});
var interfaces = Os.networkInterfaces();
var info;
for (var network in interfaces) {
if (info)
break;
info = interfaces[network].find(item => !item.internal && item.family === "IPv4");
}
var Server = App.listen(global.mira.config.dashboardOptions.port, _ => {
var port = Server.address().port;
log.info("dashboard.port", port);
log.info("dashboard.ip", info.address);
log.info("dashboard.host", "http://" + info.address + ":" + port);
log.wall();
});