mirror of https://github.com/itsmrval/accessGate
122 lines
5.2 KiB
JavaScript
122 lines
5.2 KiB
JavaScript
const express = require('express');
|
|
const User = require("../../model/user.model");
|
|
const Group = require("../../model/group.model");
|
|
const Server = require("../../model/server.model");
|
|
const url = require('url');
|
|
require('dotenv').config()
|
|
|
|
memberService = require("../../services/members.service");
|
|
serverService = require("../../services/server.service");
|
|
var router = express.Router();
|
|
|
|
const regexp_ip = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/
|
|
const regex_space = /^\S*$/;
|
|
|
|
router.get("/", (req, res) => {
|
|
try {
|
|
// pas très propre à edit
|
|
var lastPullList = {}
|
|
Server.findAll().then((servers) => {
|
|
var secret_display = null
|
|
servers.forEach((server) => {
|
|
if (server.lastPull != null) {
|
|
lastPullList[server.hostname] = server.lastPull.toLocaleString()
|
|
} else {
|
|
lastPullList[server.hostname] = 'never'
|
|
}
|
|
if (req.query.alert === "secretDisplay") {
|
|
var tmp = ''
|
|
secret_display = {}
|
|
if (server.hostname === req.query.server) {
|
|
secret_display.content = server.tmp
|
|
secret_display.url = process.env.APP_URL
|
|
secret_display.name = server.hostname,
|
|
secret_display.user = server.username
|
|
|
|
}
|
|
}
|
|
})
|
|
res.render('admin/servers', { "servers": servers, "lastPullList": lastPullList, locals: {secret: secret_display, alert: req.query.alert, alert_type: req.query.type} })
|
|
});
|
|
} catch (e) {
|
|
console.log(e)
|
|
res.redirect(url.format({
|
|
pathname:'/admin/users',
|
|
query: {
|
|
"alert": "⚠️ An error occured, ask your admin to check logs.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
})
|
|
|
|
|
|
router.post("/add", (req, res) => {
|
|
try {
|
|
if (req.body.server_hostname && req.body.server_ip && req.body.server_multi && req.body.server_username && regexp_ip.test(req.body.server_ip) && regexp_space.test(req.body.server_hostname, req.body.server_username)) {
|
|
if (req.body.server_multi === 'true') {
|
|
req.body.server_username = "accessGateMultiuser"
|
|
}
|
|
serverService.addServer(req.body.server_hostname, req.body.server_ip, req.body.server_username).then((secret) => {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/servers',
|
|
query: {
|
|
"server": req.body.server_hostname,
|
|
"alert": "secretDisplay"
|
|
}
|
|
}));
|
|
})
|
|
} else {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/servers',
|
|
query: {
|
|
"alert": "⚠️ Please check the value of your fields or if the server does not already exist.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
} catch (e) {
|
|
console.log(e)
|
|
res.redirect(url.format({
|
|
pathname:'/admin/servers',
|
|
query: {
|
|
"alert": "⚠️ An error occured, ask your admin to check logs.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
})
|
|
|
|
router.get("/delete/:server", (req, res) => {
|
|
try {
|
|
serverService.delServer(req.params.server).then((result) => {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/servers',
|
|
query: {
|
|
"alert": "✅ Server " + req.params.server + " deleted.",
|
|
"type": "success"
|
|
}
|
|
}));
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
res.redirect(url.format({
|
|
pathname:'/admin/servers',
|
|
query: {
|
|
"alert": "⚠️ An error occured, ask your admin to check logs.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
|
|
});
|
|
|
|
|
|
router.get("/new", async (req, res) => {
|
|
res.render('admin/server_new')
|
|
})
|
|
|
|
|
|
|
|
|
|
module.exports = router; |