mirror of
https://github.com/vyme-fr/MercuryCloud_Dashboard.git
synced 2026-01-18 16:47:30 +01:00
Complete redesign of the API, improvement of the global aspect of the tables and bug fixing.
This commit is contained in:
@@ -6,12 +6,7 @@ function getRandomInt(max, min) {
|
||||
return Math.floor(Math.random() * (max - min)) + min;
|
||||
}
|
||||
router.get('', (req, res) => {
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/products/delete-product"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEPRODUCT").then(function(result) {
|
||||
if (result) {
|
||||
var sql = `DELETE FROM products WHERE id='${req.body.id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error"};
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.id + " deleted from " + IP + " !")
|
||||
return res.json({"error": error, "response": response});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,72 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/products/edit-product"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITPRODUCT").then(function (result) {
|
||||
if (result) {
|
||||
var configuration = {}
|
||||
if (req.body.category == "pterodactyl") {
|
||||
configuration = {
|
||||
'cpu': req.body.cpu,
|
||||
'cpu_pinning': req.body.cpu_pinning,
|
||||
'ram': req.body.ram,
|
||||
'disk': req.body.disk,
|
||||
'swap': req.body.swap,
|
||||
'io': req.body.io,
|
||||
'egg': req.body.egg,
|
||||
'startup_command': req.body.startup_command,
|
||||
'env': JSON.parse(req.body.env)
|
||||
}
|
||||
}
|
||||
if (req.body.category == "proxmox") {
|
||||
configuration = {
|
||||
'node': req.body.node,
|
||||
'template_vmid': req.body.template_vm,
|
||||
'cores': req.body.cores,
|
||||
'ram': req.body.ram,
|
||||
'storage': req.body.storage,
|
||||
'disk_size': req.body.disk_size,
|
||||
'add_conf': req.body.add_conf
|
||||
}
|
||||
}
|
||||
var sql = `UPDATE products SET name = '${req.body.name}', description = '${req.body.description}', price = '${req.body.price}', configuration = '${JSON.stringify(configuration)}' WHERE id = '${req.body.id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error : " + err }) };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " updated from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
205
api/routes/products/infos/product-info.js
Normal file
205
api/routes/products/infos/product-info.js
Normal file
@@ -0,0 +1,205 @@
|
||||
var router = require('express').Router({ mergeParams: true });
|
||||
const server = require('../../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/products/:product_id"
|
||||
const permissions_manager = require("../../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
|
||||
// GET INFOS //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function (result) {
|
||||
if (result) {
|
||||
var id = req.params.product_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Id params is required", "code": 102 }) }
|
||||
var sql = `SELECT * FROM products WHERE id = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length > 0) {
|
||||
if (result[0].category == 'pterodactyl') {
|
||||
var env = []
|
||||
configuration = JSON.parse(result[0].configuration)
|
||||
env_json = configuration.env
|
||||
Object.keys(env_json).forEach((key) => {
|
||||
env.push(env_json[key])
|
||||
})
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': result[0].id,
|
||||
'category': result[0].category,
|
||||
'name': result[0].name,
|
||||
'description': result[0].description,
|
||||
'price': result[0].price,
|
||||
'cpu': configuration.cpu,
|
||||
'cpu_pinning': configuration.cpu_pinning,
|
||||
'ram': configuration.ram,
|
||||
'disk': configuration.disk,
|
||||
'swap': configuration.swap,
|
||||
'io': configuration.io,
|
||||
'egg': configuration.egg,
|
||||
'startup_command': configuration.startup_command,
|
||||
'env': env
|
||||
}
|
||||
})
|
||||
} else if (result[0].category == 'proxmox') {
|
||||
configuration = JSON.parse(result[0].configuration)
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': result[0].id,
|
||||
'category': result[0].category,
|
||||
'name': result[0].name,
|
||||
'description': result[0].description,
|
||||
'price': result[0].price,
|
||||
'node': configuration.node,
|
||||
'template_vmid': configuration.template_vmid,
|
||||
'cores': configuration.cores,
|
||||
'ram': configuration.ram,
|
||||
'storage': configuration.storage,
|
||||
'disk_size': configuration.disk_size,
|
||||
'add_conf': configuration.add_conf
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// EDIT PRODUCT //
|
||||
|
||||
router.put('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
var id = req.params.product_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Id params is required", "code": 102 }) }
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITPRODUCT").then(function (result) {
|
||||
if (result) {
|
||||
var configuration = {}
|
||||
if (req.body.category == "pterodactyl") {
|
||||
configuration = {
|
||||
'cpu': req.body.cpu,
|
||||
'cpu_pinning': req.body.cpu_pinning,
|
||||
'ram': req.body.ram,
|
||||
'disk': req.body.disk,
|
||||
'swap': req.body.swap,
|
||||
'io': req.body.io,
|
||||
'egg': req.body.egg,
|
||||
'startup_command': req.body.startup_command,
|
||||
'env': JSON.parse(req.body.env)
|
||||
}
|
||||
}
|
||||
if (req.body.category == "proxmox") {
|
||||
configuration = {
|
||||
'node': req.body.node,
|
||||
'template_vmid': req.body.template_vm,
|
||||
'cores': req.body.cores,
|
||||
'ram': req.body.ram,
|
||||
'storage': req.body.storage,
|
||||
'disk_size': req.body.disk_size,
|
||||
'add_conf': req.body.add_conf
|
||||
}
|
||||
}
|
||||
var sql = `UPDATE products SET name = '${req.body.name}', description = '${req.body.description}', price = '${req.body.price}', configuration = '${JSON.stringify(configuration)}' WHERE id = '${id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error : " + err }) };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " updated from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// DELETE PRODUCT //
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
var id = req.params.product_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Id params is required", "code": 102 }) }
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEPRODUCT").then(function (result) {
|
||||
if (result) {
|
||||
var sql = `DELETE FROM products WHERE id='${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error" };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + id + " deleted from " + IP + " !")
|
||||
return res.json({ "error": error, "response": response });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,19 +1,14 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const config = require('../../config.json');
|
||||
const server = require('../../../../server.js')
|
||||
const config = require('../../../../config.json');
|
||||
const { response } = require('express');
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
const route_name = "/products/proxmox-nodes-list"
|
||||
const permissions_manager = require("../../../../utils/permissions-manager.js")
|
||||
const route_name = "/products/proxmox/nodes"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
53
api/routes/products/infos/proxmox/qemu.js
Normal file
53
api/routes/products/infos/proxmox/qemu.js
Normal file
@@ -0,0 +1,53 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../../../server.js')
|
||||
const config = require('../../../../config.json');
|
||||
const { response } = require('express');
|
||||
const permissions_manager = require("../../../../utils/permissions-manager.js")
|
||||
const route_name = "/products/proxmox/qemu"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function (result) {
|
||||
if (result) {
|
||||
server.fetch(`${config.proxmox_url}/api2/json/nodes/${req.query.node}/qemu`, {
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"CSRFPreventionToken": server.proxmox_CSRFPreventionToken,
|
||||
"Cookie": "PVEAuthCookie=" + server.proxmox_ticket
|
||||
},
|
||||
"agent": server.httpsAgent
|
||||
}).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
.then(data => {
|
||||
return res.json({ 'error': false, 'vms': data.data })
|
||||
})
|
||||
.catch(err => {
|
||||
server.logger(" [ERROR] Proxmox API Error " + err)
|
||||
return res.json({ "error": true, "code": 1000, "msg": err })
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
53
api/routes/products/infos/proxmox/storage.js
Normal file
53
api/routes/products/infos/proxmox/storage.js
Normal file
@@ -0,0 +1,53 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../../../server.js')
|
||||
const config = require('../../../../config.json');
|
||||
const { response } = require('express');
|
||||
const permissions_manager = require("../../../../utils/permissions-manager.js")
|
||||
const route_name = "/products/proxmox/storage"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function (result) {
|
||||
if (result) {
|
||||
server.fetch(`${config.proxmox_url}/api2/json/nodes/${req.query.node}/storage`, {
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"CSRFPreventionToken": server.proxmox_CSRFPreventionToken,
|
||||
"Cookie": "PVEAuthCookie=" + server.proxmox_ticket
|
||||
},
|
||||
"agent": server.httpsAgent
|
||||
}).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
.then(data => {
|
||||
return res.json({ 'error': false, 'storage': data.data })
|
||||
})
|
||||
.catch(err => {
|
||||
server.logger(" [ERROR] Proxmox API Error " + err)
|
||||
return res.json({ "error": true, "code": 1000, "msg": err })
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,101 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/products/product-info"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function(result) {
|
||||
if (result) {
|
||||
var id = req.query.id
|
||||
if (id == undefined) {return res.json({'error': true, 'msg': "Id query is required", "code": 101})}
|
||||
if (id == "") {return res.json({'error': true, 'msg': "Id query is required", "code": 102})}
|
||||
var sql = `SELECT * FROM products WHERE id = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length > 0) {
|
||||
if (result[0].category == 'pterodactyl') {
|
||||
var env = []
|
||||
configuration = JSON.parse(result[0].configuration)
|
||||
env_json = configuration.env
|
||||
Object.keys(env_json).forEach((key)=>{
|
||||
env.push(env_json[key])
|
||||
})
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': result[0].id,
|
||||
'category': result[0].category,
|
||||
'name': result[0].name,
|
||||
'description': result[0].description,
|
||||
'price': result[0].price,
|
||||
'cpu': configuration.cpu,
|
||||
'cpu_pinning': configuration.cpu_pinning,
|
||||
'ram': configuration.ram,
|
||||
'disk': configuration.disk,
|
||||
'swap': configuration.swap,
|
||||
'io': configuration.io,
|
||||
'egg': configuration.egg,
|
||||
'startup_command': configuration.startup_command,
|
||||
'env': env
|
||||
}
|
||||
})
|
||||
} else if (result[0].category == 'proxmox') {
|
||||
configuration = JSON.parse(result[0].configuration)
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': result[0].id,
|
||||
'category': result[0].category,
|
||||
'name': result[0].name,
|
||||
'description': result[0].description,
|
||||
'price': result[0].price,
|
||||
'node': configuration.node,
|
||||
'template_vmid': configuration.template_vmid,
|
||||
'cores': configuration.cores,
|
||||
'ram': configuration.ram,
|
||||
'storage': configuration.storage,
|
||||
'disk_size': configuration.disk_size,
|
||||
'add_conf': configuration.add_conf
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'id': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,34 +1,97 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/products/products"
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/products"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
// GET LIST //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP)
|
||||
var sql = `SELECT * FROM products`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
products = []
|
||||
for(var i= 0; i < result.length; i++)
|
||||
{
|
||||
products.push({
|
||||
"id": result[i].id,
|
||||
"category": result[i].category,
|
||||
"name": result[i].name,
|
||||
"description": result[i].description,
|
||||
"price": result[i].price,
|
||||
"configuration": JSON.parse(result[i].configuration)
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
products = []
|
||||
for (var i = 0; i < result.length; i++) {
|
||||
products.push({
|
||||
"id": result[i].id,
|
||||
"category": result[i].category,
|
||||
"name": result[i].name,
|
||||
"description": result[i].description,
|
||||
"price": result[i].price,
|
||||
"configuration": JSON.parse(result[i].configuration)
|
||||
})
|
||||
}
|
||||
return res.json({ 'error': false, 'data': products })
|
||||
});
|
||||
})
|
||||
|
||||
// POST NEW PRODUCT //
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] POST /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "CREATEPRODUCT").then(function (result) {
|
||||
if (result) {
|
||||
if (req.body.category == "pterodactyl") {
|
||||
configuration = {
|
||||
'cpu': req.body.cpu,
|
||||
'cpu_pinning': req.body.cpu_pinning,
|
||||
'ram': req.body.ram,
|
||||
'disk': req.body.disk,
|
||||
'swap': req.body.swap,
|
||||
'io': req.body.io,
|
||||
'egg': req.body.egg,
|
||||
'startup_command': req.body.startup_command,
|
||||
'env': JSON.parse(req.body.env)
|
||||
}
|
||||
var sql = `INSERT INTO products (id, category, name, description, price, configuration) VALUES('${server.crypto.randomBytes(3).toString('hex')}', 'pterodactyl', '${req.body.name}', '${req.body.description}', '${req.body.price}', '${JSON.stringify(configuration)}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else if (req.body.category == "proxmox") {
|
||||
configuration = {
|
||||
'node': req.body.node,
|
||||
'template_vmid': req.body.template_vm,
|
||||
'cores': req.body.cores,
|
||||
'ram': req.body.ram,
|
||||
'storage': req.body.storage,
|
||||
'disk_size': req.body.disk_size,
|
||||
'add_conf': req.body.add_conf
|
||||
}
|
||||
var sql = `INSERT INTO products (id, category, name, description, price, configuration) VALUES('${server.crypto.randomBytes(3).toString('hex')}', 'proxmox', '${req.body.name}', '${req.body.description}', '${req.body.price}', '${JSON.stringify(configuration)}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
}
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
return res.json({'error': false, 'data': products})
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,53 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
const route_name = "/products/proxmox-create-product"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "CREATEPRODUCT").then(function(result) {
|
||||
if (result) {
|
||||
configuration = {
|
||||
'node': req.body.node,
|
||||
'template_vmid': req.body.template_vm,
|
||||
'cores': req.body.cores,
|
||||
'ram': req.body.ram,
|
||||
'storage': req.body.storage,
|
||||
'disk_size': req.body.disk_size,
|
||||
'add_conf': req.body.add_conf
|
||||
}
|
||||
var sql = `INSERT INTO products (id, category, name, description, price, configuration) VALUES('${server.crypto.randomBytes(3).toString('hex')}', 'proxmox', '${req.body.name}', '${req.body.description}', '${req.body.price}', '${JSON.stringify(configuration)}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({"error": false, "response": "OK"});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,58 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const config = require('../../config.json');
|
||||
const { response } = require('express');
|
||||
const route_name = "/products/proxmox-qemu-list"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function(result) {
|
||||
if (result) {
|
||||
server.fetch(`${config.proxmox_url}/api2/json/nodes/${req.query.node}/qemu`, {
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"CSRFPreventionToken": server.proxmox_CSRFPreventionToken,
|
||||
"Cookie": "PVEAuthCookie=" + server.proxmox_ticket
|
||||
},
|
||||
"agent": server.httpsAgent
|
||||
}).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
.then(data => {
|
||||
return res.json({'error': false, 'vms': data.data})
|
||||
})
|
||||
.catch(err => {
|
||||
server.logger(" [ERROR] Proxmox API Error " + err)
|
||||
return res.json({"error": true, "code": 1000, "msg": err})
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,58 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const config = require('../../config.json');
|
||||
const { response } = require('express');
|
||||
const route_name = "/products/proxmox-storage-list"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTPRODUCTS").then(function(result) {
|
||||
if (result) {
|
||||
server.fetch(`${config.proxmox_url}/api2/json/nodes/${req.query.node}/storage`, {
|
||||
"method": "GET",
|
||||
"headers": {
|
||||
"CSRFPreventionToken": server.proxmox_CSRFPreventionToken,
|
||||
"Cookie": "PVEAuthCookie=" + server.proxmox_ticket
|
||||
},
|
||||
"agent": server.httpsAgent
|
||||
}).then(response => {
|
||||
return response.json()
|
||||
})
|
||||
.then(data => {
|
||||
return res.json({'error': false, 'storage': data.data})
|
||||
})
|
||||
.catch(err => {
|
||||
server.logger(" [ERROR] Proxmox API Error " + err)
|
||||
return res.json({"error": true, "code": 1000, "msg": err})
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,57 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/products/ptero-create-product"
|
||||
const permissions_manager = require("../../utils/permissions-manager.js")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "CREATEPRODUCT").then(function (result) {
|
||||
if (result) {
|
||||
configuration = {
|
||||
'cpu': req.body.cpu,
|
||||
'cpu_pinning': req.body.cpu_pinning,
|
||||
'ram': req.body.ram,
|
||||
'disk': req.body.disk,
|
||||
'swap': req.body.swap,
|
||||
'io': req.body.io,
|
||||
'egg': req.body.egg,
|
||||
'startup_command': req.body.startup_command,
|
||||
'env': JSON.parse(req.body.env)
|
||||
}
|
||||
var sql = `INSERT INTO products (id, category, name, description, price, configuration) VALUES('${server.crypto.randomBytes(3).toString('hex')}', 'pterodactyl', '${req.body.name}', '${req.body.description}', '${req.body.price}', '${JSON.stringify(configuration)}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
});
|
||||
server.logger(" [DEBUG] Product " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,51 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/roles/create-role"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "CREATEROLE").then(function(result) {
|
||||
if (result) {
|
||||
var permissions = ''
|
||||
if (req.body.permissions.length < 1) {
|
||||
permissions = "NONE"
|
||||
} else {
|
||||
permissions = req.body.permissions
|
||||
}
|
||||
var sql = `INSERT INTO roles (id, name, permissions) VALUES('${server.crypto.randomBytes(3).toString('hex')}', '${req.body.name}', '${permissions}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({"error": false, "response": "OK"});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,47 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/roles/delete-role"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEROLE").then(function(result) {
|
||||
if (result) {
|
||||
var sql = `DELETE FROM roles WHERE id='${req.body.id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error"};
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + req.body.id + " deleted from " + IP + " !")
|
||||
return res.json({"error": error, "response": response});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
145
api/routes/roles/infos/role-info.js
Normal file
145
api/routes/roles/infos/role-info.js
Normal file
@@ -0,0 +1,145 @@
|
||||
var router = require('express').Router({ mergeParams: true });
|
||||
const server = require('../../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/roles/:role_id"
|
||||
const permissions_manager = require("../../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
// GET INFOS //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTROLES").then(function (result) {
|
||||
if (result) {
|
||||
var id = req.params.role_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 102 }) }
|
||||
var sql = `SELECT * FROM roles WHERE id = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length > 0) {
|
||||
return res.json({
|
||||
'error': false, 'data': {
|
||||
'id': result[0].id,
|
||||
'name': result[0].name,
|
||||
'permissions': result[0].permissions
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false, 'data': {
|
||||
'id': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// EDIT ROLE //
|
||||
|
||||
router.put('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
var id = req.params.role_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 102 }) }
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITROLE").then(function (result) {
|
||||
if (result) {
|
||||
var permissions = ''
|
||||
if (req.body.permissions.length < 1) {
|
||||
permissions = "NONE"
|
||||
} else {
|
||||
permissions = req.body.permissions
|
||||
}
|
||||
var sql = `UPDATE roles SET name = '${req.body.name}', permissions = '${permissions}' WHERE id = '${id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error : " + err }) };
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + req.body.name + " updated from " + IP + " with uuid " + req.query.uuid + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// DELETE ROLE //
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
var id = req.params.role_id
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "Role id params is required", "code": 102 }) }
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEROLE").then(function (result) {
|
||||
if (result) {
|
||||
var sql = `DELETE FROM roles WHERE id='${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error" };
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + id + " deleted from " + IP + " !")
|
||||
return res.json({ "error": error, "response": response });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,52 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/roles/edit-role"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITROLE").then(function(result) {
|
||||
if (result) {
|
||||
var permissions = ''
|
||||
if (req.body.permissions.length < 1) {
|
||||
permissions = "NONE"
|
||||
} else {
|
||||
permissions = req.body.permissions
|
||||
}
|
||||
var sql = `UPDATE roles SET name = '${req.body.name}', permissions = '${permissions}' WHERE id = '${req.body.id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err); return res.json({"error": true, "msg": "Database error : " + err})};
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + req.body.name + " updated from " + IP + " with uuid " + req.query.uuid + " !")
|
||||
return res.json({"error": false, "response": "OK"});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,61 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/roles/role-info"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTROLES").then(function(result) {
|
||||
if (result) {
|
||||
var id = req.query.id
|
||||
if (id == undefined) {return res.json({'error': true, 'msg': "Role id query is required", "code": 101})}
|
||||
if (id == "") {return res.json({'error': true, 'msg': "Role id query is required", "code": 102})}
|
||||
var sql = `SELECT * FROM roles WHERE id = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length > 0) {
|
||||
return res.json({
|
||||
'error': false, 'data': {
|
||||
'id': result[0].id,
|
||||
'name': result[0].name,
|
||||
'permissions': result[0].permissions
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false, 'data': {
|
||||
'id': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,52 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/roles/roles-list"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTROLES").then(function(result) {
|
||||
if (result) {
|
||||
var sql = `SELECT * FROM roles`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
roles = []
|
||||
for(var i= 0; i < result.length; i++)
|
||||
{
|
||||
roles.push({
|
||||
"id": result[i].id,
|
||||
"name": result[i].name
|
||||
})
|
||||
}
|
||||
return res.json({'error': false, 'roles': roles})
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
93
api/routes/roles/roles.js
Normal file
93
api/routes/roles/roles.js
Normal file
@@ -0,0 +1,93 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/roles"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
|
||||
// GET LIST //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTROLES").then(function (result) {
|
||||
if (result) {
|
||||
var sql = `SELECT * FROM roles`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
roles = []
|
||||
for (var i = 0; i < result.length; i++) {
|
||||
roles.push({
|
||||
"id": result[i].id,
|
||||
"name": result[i].name
|
||||
})
|
||||
}
|
||||
return res.json({ 'error': false, 'roles': roles })
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// POST ROLE //
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "CREATEROLE").then(function (result) {
|
||||
if (result) {
|
||||
var permissions = ''
|
||||
if (req.body.permissions.length < 1) {
|
||||
permissions = "NONE"
|
||||
} else {
|
||||
permissions = req.body.permissions
|
||||
}
|
||||
var sql = `INSERT INTO roles (id, name, permissions) VALUES('${server.crypto.randomBytes(3).toString('hex')}', '${req.body.name}', '${permissions}')`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
});
|
||||
server.logger(" [DEBUG] Role " + req.body.name + " created from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,13 +1,19 @@
|
||||
var router = require('express').Router({ mergeParams: true });
|
||||
const server = require('../../../../server')
|
||||
const route_name = "/services/file"
|
||||
const textParser = server.parser.text()
|
||||
const permissions_manager = require("../../../../utils/permissions-manager")
|
||||
const config = require('../../../../config.json')
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
// GET CONTENT //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
@@ -87,12 +93,10 @@ router.get('', function (req, res) {
|
||||
|
||||
router.put('', textParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
@@ -173,3 +177,5 @@ router.put('', textParser, function (req, res) {
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -8,12 +8,10 @@ server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
|
||||
@@ -8,12 +8,10 @@ server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
@@ -176,12 +174,10 @@ router.get('', function (req, res) {
|
||||
|
||||
router.put('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
@@ -229,12 +225,10 @@ router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
|
||||
@@ -8,12 +8,10 @@ server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
@@ -112,12 +110,10 @@ router.get('', function (req, res) {
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users/create-user"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
server.bcrypt.hash(req.body.password, 10, function(err, hash) {
|
||||
var sql = `INSERT INTO users (uuid, username, role, mail, token, password, first_name, last_name, tel, address_1, address_2, city, zip, country, state, balance, tickets, services, suspend_services, alerts) VALUES('${server.uuid.v4()}', '${req.body.username}', '${req.body.role}', '${req.body.mail.toLowerCase()}', '${server.crypto.randomBytes(20).toString('hex')}', '${hash}', '${req.body.first_name}', '${req.body.last_name}', '${req.body.tel}', '${req.body.address_1}', '${req.body.address_2}', '${req.body.city}', '${req.body.zip}', '${req.body.country}', '${req.body.state}', 0, 0, 0, 0, 0)`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err); return res.json({"error": true, "msg": "Database error " + err})};
|
||||
});
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " created !")
|
||||
return res.json({"error": false, "response": "OK"})
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,40 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api/users/delete-user route loaded !")
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
returnres.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEUSER").then(function(result) {
|
||||
if (result) {
|
||||
var sql = `DELETE FROM users WHERE uuid='${req.body.user_uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error"};
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.user_uuid + " deleted by " + req.query.uuid + " !")
|
||||
return res.json({"error": error, "response": response});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,58 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users/edit-user"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITUSER").then(function(result) {
|
||||
if (result) {
|
||||
if (req.body.password != "Q@4%738r$7") {
|
||||
server.bcrypt.hash(req.body.password, 10, function(err, hash) {
|
||||
var sql = `UPDATE users SET username = '${req.body.username}', token = '${server.crypto.randomBytes(20).toString('hex')}', password = '${hash}', role = '${req.body.role}', mail = '${req.body.mail}', first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', tel = '${req.body.tel}', address_1 = '${req.body.address_1}', address_2 = '${req.body.address_2}', city = '${req.body.city}', zip = '${req.body.zip}', country = '${req.body.country}', state = '${req.body.state}' WHERE uuid = '${req.body.uuid}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err); return res.json({"error": true, "msg": "Database error : " + err})};
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " updated !")
|
||||
return res.json({"error": false, "response": "OK"});
|
||||
})
|
||||
} else {
|
||||
var sql = `UPDATE users SET username = '${req.body.username}', role = '${req.body.role}', mail = '${req.body.mail.toLowerCase()}', first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', tel = '${req.body.tel}', address_1 = '${req.body.address_1}', address_2 = '${req.body.address_2}', city = '${req.body.city}', zip = '${req.body.zip}', country = '${req.body.country}', state = '${req.body.state}' WHERE uuid = '${req.body.uuid}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err); return res.json({"error": true, "msg": "Database error : " + err})};
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " updated !")
|
||||
return res.json({"error": false, "response": "OK"});
|
||||
}
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
173
api/routes/users/infos/user-info.js
Normal file
173
api/routes/users/infos/user-info.js
Normal file
@@ -0,0 +1,173 @@
|
||||
var router = require('express').Router({ mergeParams: true });
|
||||
const server = require('../../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users/:user_uuid"
|
||||
const permissions_manager = require("../../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
// GET INFOS //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTUSERS").then(function (result) {
|
||||
if (result) {
|
||||
var id = req.params.user_uuid
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "User id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "User id params is required", "code": 102 }) }
|
||||
var sql = `SELECT * FROM users WHERE uuid = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length > 0) {
|
||||
var sql = `SELECT * FROM roles WHERE id = '${result[0].role}'`;
|
||||
server.con.query(sql, function (err, result1) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'uuid': result[0].uuid,
|
||||
'username': result[0].username,
|
||||
'mail': result[0].mail,
|
||||
'role': result[0].role,
|
||||
'role_name': result1[0].name,
|
||||
'permissions': result1[0].permissions,
|
||||
'first_name': result[0].first_name,
|
||||
'last_name': result[0].last_name,
|
||||
'tel': result[0].tel,
|
||||
'address_1': result[0].address_1,
|
||||
'address_2': result[0].address_2,
|
||||
'city': result[0].city,
|
||||
'zip': result[0].zip,
|
||||
'country': result[0].country,
|
||||
'state': result[0].state
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'uuid': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// EDIT //
|
||||
|
||||
router.put('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "EDITUSER").then(function (result) {
|
||||
if (result) {
|
||||
var id = req.params.user_uuid
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "User id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "User id params is required", "code": 102 }) }
|
||||
if (req.body.password != "Q@4%738r$7") {
|
||||
server.bcrypt.hash(req.body.password, 10, function (err, hash) {
|
||||
var sql = `UPDATE users SET username = '${req.body.username}', token = '${server.crypto.randomBytes(20).toString('hex')}', password = '${hash}', role = '${req.body.role}', mail = '${req.body.mail}', first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', tel = '${req.body.tel}', address_1 = '${req.body.address_1}', address_2 = '${req.body.address_2}', city = '${req.body.city}', zip = '${req.body.zip}', country = '${req.body.country}', state = '${req.body.state}' WHERE uuid = '${id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error : " + err }) };
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " updated !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
})
|
||||
} else {
|
||||
var sql = `UPDATE users SET username = '${req.body.username}', role = '${req.body.role}', mail = '${req.body.mail.toLowerCase()}', first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', tel = '${req.body.tel}', address_1 = '${req.body.address_1}', address_2 = '${req.body.address_2}', city = '${req.body.city}', zip = '${req.body.zip}', country = '${req.body.country}', state = '${req.body.state}' WHERE uuid = '${id}';`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error : " + err }) };
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " updated !")
|
||||
return res.json({ "error": false, "response": "OK" });
|
||||
}
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// DELETE //
|
||||
|
||||
router.delete('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var response = "OK"
|
||||
var error = false
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
var IP = req.socket.remoteAddress;
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
returnres.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "DELETEUSER").then(function (result) {
|
||||
var id = req.params.user_uuid
|
||||
if (id == undefined) { return res.json({ 'error': true, 'msg': "User id params is required", "code": 101 }) }
|
||||
if (id == "") { return res.json({ 'error': true, 'msg': "User id params is required", "code": 102 }) }
|
||||
if (result) {
|
||||
var sql = `DELETE FROM users WHERE uuid='${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err), error = true, response = "Database error" };
|
||||
});
|
||||
server.logger(" [DEBUG] User " + id + " deleted by " + req.query.uuid + " from " + IP + " !")
|
||||
return res.json({ "error": error, "response": response });
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 403 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
38
api/routes/users/infos/user-login.js
Normal file
38
api/routes/users/infos/user-login.js
Normal file
@@ -0,0 +1,38 @@
|
||||
var router = require('express').Router({ mergeParams: true });
|
||||
const server = require('../../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users/login/:user_mail"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
|
||||
var mail = req.params.user_mail
|
||||
if (mail == undefined) { return res.json({ 'error': true, 'msg': "User mail params is required", "code": 101 }) }
|
||||
if (mail == "") { return res.json({ 'error': true, 'msg': "User mail params is required", "code": 102 }) }
|
||||
var sql = `SELECT password FROM users WHERE mail = '${mail}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) throw err;
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 404 })
|
||||
} else {
|
||||
server.bcrypt.compare(req.body.password, result[0].password, function (err, result) {
|
||||
if (result === true) {
|
||||
var sql = `SELECT * FROM users WHERE mail = '${mail}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
res.json({ 'error': false, 'uuid': result[0].uuid, 'token': result[0].token })
|
||||
return server.logger(' [DEBUG] User ' + mail + ' successful login from ' + IP)
|
||||
});
|
||||
} else {
|
||||
res.json({ 'error': true, 'code': 403 })
|
||||
return server.logger(' [DEBUG] User ' + mail + ' unsuccessful login from ' + IP + '!')
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,29 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users/login-user"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
var sql = `SELECT password FROM users WHERE mail = '${req.body.mail}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) throw err;
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
server.bcrypt.compare(req.body.password, result[0].password, function(err, result) {
|
||||
if (result === true) {
|
||||
var sql = `SELECT * FROM users WHERE mail = '${req.body.mail}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
return res.json({'error': false, 'uuid': result[0].uuid, 'token': result[0].token})
|
||||
});
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,41 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/users/mail-exist"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
var mail = req.query.mail
|
||||
if (mail == undefined) {return res.json({'error': true, 'msg': "Mail query is required", "code": 101})}
|
||||
if (mail == "") {return res.json({'error': true, 'msg': "Mail query is required", "code": 102})}
|
||||
var sql = `SELECT mail FROM users WHERE mail = '${mail}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length > 0) {
|
||||
return res.json({'error': false, 'exist': true, "code": 100})
|
||||
} else {
|
||||
return res.json({'error': false, 'exist': false, "code": 100})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,80 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/users/user-info"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTUSERS").then(function(result) {
|
||||
if (result) {
|
||||
var id = req.query.id
|
||||
if (id == undefined) {return res.json({'error': true, 'msg': "User id query is required", "code": 101})}
|
||||
if (id == "") {return res.json({'error': true, 'msg': "User id query is required", "code": 102})}
|
||||
var sql = `SELECT * FROM users WHERE uuid = '${id}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length > 0) {
|
||||
var sql = `SELECT * FROM roles WHERE id = '${result[0].role}'`;
|
||||
server.con.query(sql, function (err, result1) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'uuid': result[0].uuid,
|
||||
'username': result[0].username,
|
||||
'mail': result[0].mail,
|
||||
'role': result[0].role,
|
||||
'role_name': result1[0].name,
|
||||
'permissions': result1[0].permissions,
|
||||
'first_name': result[0].first_name,
|
||||
'last_name': result[0].last_name,
|
||||
'tel': result[0].tel,
|
||||
'address_1': result[0].address_1,
|
||||
'address_2': result[0].address_2,
|
||||
'city': result[0].city,
|
||||
'zip': result[0].zip,
|
||||
'country': result[0].country,
|
||||
'state': result[0].state
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
return res.json({
|
||||
'error': false,
|
||||
'data': {
|
||||
'uuid': 404
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,35 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/users/usernale-exist"
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
server.logger(' [DEBUG] GET from : ' + ipInfo.clientIp.split("::ffff:")[1] + `, ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 404})
|
||||
} else {
|
||||
if (result[0].token == req.query.token) {
|
||||
var username = req.query.username
|
||||
if (username == undefined) {return res.json({'error': true, 'msg': "Username query is required", "code": 101})}
|
||||
if (username == "") {return res.json({'error': true, 'msg': "Username query is required", "code": 102})}
|
||||
var sql = `SELECT username FROM users WHERE username = '${username}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length > 0) {
|
||||
return res.json({'error': false, 'exist': true, "code": 100})
|
||||
} else {
|
||||
return res.json({'error': false, 'exist': false, "code": 100})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 403})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
@@ -1,59 +0,0 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
const route_name = "/users/users-list"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
var forwardedIpsStr = req.header('x-forwarded-for');
|
||||
var IP = '';
|
||||
|
||||
if (forwardedIpsStr) {
|
||||
IP = forwardedIps = forwardedIpsStr.split(',')[0];
|
||||
}
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
if (result.length == 0) {
|
||||
return res.json({'error': true, 'code': 401})
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTUSERS").then(function(result) {
|
||||
if (result) {
|
||||
var sql = `SELECT * FROM users`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) {server.logger(" [ERROR] Database error\n " + err)};
|
||||
users = []
|
||||
for(var i= 0; i < result.length; i++)
|
||||
{
|
||||
users.push({
|
||||
"uuid": result[i].uuid,
|
||||
"username": result[i].username,
|
||||
"mail": result[i].mail,
|
||||
"role": result[i].role,
|
||||
"balance": result[i].balance,
|
||||
"tickets": result[i].tickets,
|
||||
"services": result[i].services,
|
||||
"suspended_services": result[i].suspended_services,
|
||||
"alerts": result[i].alerts
|
||||
})
|
||||
}
|
||||
return res.json({'error': false, 'users': users})
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({'error': true, 'code': 401})
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
module.exports = router;
|
||||
90
api/routes/users/users.js
Normal file
90
api/routes/users/users.js
Normal file
@@ -0,0 +1,90 @@
|
||||
var router = require('express').Router();
|
||||
const server = require('../../server.js')
|
||||
var jsonParser = server.parser.json()
|
||||
const route_name = "/users"
|
||||
const permissions_manager = require("../../utils/permissions-manager")
|
||||
server.logger(" [INFO] /api" + route_name + " route loaded !")
|
||||
|
||||
|
||||
// USERS LIST //
|
||||
|
||||
router.get('', function (req, res) {
|
||||
ipInfo = server.ip(req);
|
||||
|
||||
var IP = req.socket.remoteAddress;
|
||||
server.logger(' [DEBUG] GET /api' + route_name + ' from ' + IP + ` with uuid ${req.query.uuid}`)
|
||||
var sql = `SELECT token FROM users WHERE uuid = '${req.query.uuid}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length == 0) {
|
||||
return res.json({ 'error': true, 'code': 401 })
|
||||
} else {
|
||||
if (result[0].token === req.query.token) {
|
||||
permissions_manager.has_permission(req.query.uuid, "LISTUSERS").then(function (result) {
|
||||
if (result) {
|
||||
var sql = `SELECT * FROM users`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
users = []
|
||||
for (var i = 0; i < result.length; i++) {
|
||||
users.push({
|
||||
"uuid": result[i].uuid,
|
||||
"username": result[i].username,
|
||||
"mail": result[i].mail,
|
||||
"role": result[i].role,
|
||||
"balance": result[i].balance,
|
||||
"tickets": result[i].tickets,
|
||||
"services": result[i].services,
|
||||
"suspended_services": result[i].suspended_services,
|
||||
"alerts": result[i].alerts
|
||||
})
|
||||
}
|
||||
return res.json({ 'error': false, 'users': users })
|
||||
});
|
||||
} else {
|
||||
return res.json({
|
||||
"error": true,
|
||||
"code": 403
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return res.json({ 'error': true, 'code': 401 })
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
// CREATE //
|
||||
|
||||
router.post('', jsonParser, function (req, res) {
|
||||
var IP = req.socket.remoteAddress;
|
||||
var sql = `SELECT mail FROM users WHERE mail = '${req.body.mail.toLowerCase()}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length > 0) {
|
||||
return res.json({ "error": true, "msg": "Mail already used" })
|
||||
} else {
|
||||
var sql = `SELECT username FROM users WHERE username = '${req.body.username}'`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err) };
|
||||
if (result.length > 0) {
|
||||
return res.json({ "error": true, "msg": "Username already exist" })
|
||||
} else {
|
||||
server.bcrypt.hash(req.body.password, 10, function (err, hash) {
|
||||
var sql = `INSERT INTO users (uuid, username, role, mail, token, password, first_name, last_name, tel, address_1, address_2, city, zip, country, state, balance, tickets, services, suspend_services, alerts) VALUES('${server.uuid.v4()}', '${req.body.username}', '${req.body.role}', '${req.body.mail.toLowerCase()}', '${server.crypto.randomBytes(20).toString('hex')}', '${hash}', '${req.body.first_name}', '${req.body.last_name}', '${req.body.tel}', '${req.body.address_1}', '${req.body.address_2}', '${req.body.city}', '${req.body.zip}', '${req.body.country}', '${req.body.state}', 0, 0, 0, 0, 0)`;
|
||||
server.con.query(sql, function (err, result) {
|
||||
if (err) { server.logger(" [ERROR] Database error\n " + err); return res.json({ "error": true, "msg": "Database error " + err }) };
|
||||
});
|
||||
});
|
||||
server.logger(" [DEBUG] User " + req.body.username + " created from " + IP + " !")
|
||||
return res.json({ "error": false, "response": "User successfully created !" })
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
module.exports = router;
|
||||
@@ -13,6 +13,10 @@ const fetch = require('node-fetch');
|
||||
const httpsAgent = new https.Agent({
|
||||
rejectUnauthorized: false,
|
||||
});
|
||||
var server_opt = {
|
||||
cert: fs.readFileSync(config.api_ssl_cert_path),
|
||||
key: fs.readFileSync(config.api_ssl_privkey_path)
|
||||
}
|
||||
|
||||
let start_date = new Date();;
|
||||
let date = ("0" + start_date.getDate()).slice(-2);
|
||||
@@ -42,7 +46,6 @@ function logger(msg) {
|
||||
|
||||
logger(" [INFO] The API is starting...")
|
||||
|
||||
const PORT = 400
|
||||
var mysql = require('mysql');
|
||||
var connection = mysql.createConnection({
|
||||
host: config.mysql_host,
|
||||
@@ -125,48 +128,35 @@ connection.connect(function (err) {
|
||||
app.use('/api/', require('./routes/index'));
|
||||
|
||||
// products //
|
||||
app.use('/api/products/ptero-create-product', require('./routes/products/ptero-create-product'));
|
||||
app.use('/api/products/proxmox-create-product', require('./routes/products/proxmox-create-product'));
|
||||
app.use('/api/products/proxmox-qemu-list', require('./routes/products/proxmox-qemu-list'));
|
||||
app.use('/api/products/proxmox-nodes-list', require('./routes/products/proxmox-nodes-list'));
|
||||
app.use('/api/products/proxmox-storage-list', require('./routes/products/proxmox-storage-list'));
|
||||
app.use('/api/products/delete-product', require('./routes/products/delete-product'));
|
||||
app.use('/api/products/product-info', require('./routes/products/product-info'));
|
||||
app.use('/api/products/products', require('./routes/products/products'));
|
||||
app.use('/api/products/edit-product', require('./routes/products/edit-product'));
|
||||
app.use('/api/products', require('./routes/products/products'));
|
||||
app.use('/api/products/:product_id', require('./routes/products/infos/product-info'));
|
||||
app.use('/api/products/proxmox/qemu', require('./routes/products/infos/proxmox/qemu'));
|
||||
app.use('/api/products/proxmox/nodes', require('./routes/products/infos/proxmox/nodes'));
|
||||
app.use('/api/products/proxmox/storage', require('./routes/products/infos/proxmox/storage'));
|
||||
|
||||
// users //
|
||||
app.use('/api/users/create-user', require('./routes/users/create-user'));
|
||||
app.use('/api/users/login-user', require('./routes/users/login-user'));
|
||||
app.use('/api/users/users-list', require('./routes/users/users-list'));
|
||||
app.use('/api/users/user-info', require('./routes/users/user-info'));
|
||||
app.use('/api/users/username-exist', require('./routes/users/username-exist'));
|
||||
app.use('/api/users/mail-exist', require('./routes/users/mail-exist'));
|
||||
app.use('/api/users/delete-user', require('./routes/users/delete-user'));
|
||||
app.use('/api/users/edit-user', require('./routes/users/edit-user'));
|
||||
app.use('/api/users', require('./routes/users/users'));
|
||||
app.use('/api/users/:user_uuid', require('./routes/users/infos/user-info'));
|
||||
app.use('/api/users/:user_mail/login', require('./routes/users/infos/user-login'));
|
||||
|
||||
// roles //
|
||||
app.use('/api/roles/create-role', require('./routes/roles/create-role'));
|
||||
app.use('/api/roles/delete-role', require('./routes/roles/delete-role'));
|
||||
app.use('/api/roles/roles-list', require('./routes/roles/roles-list'));
|
||||
app.use('/api/roles/role-info', require('./routes/roles/role-info'));
|
||||
app.use('/api/roles/role-edit', require('./routes/roles/role-edit'));
|
||||
app.use('/api/roles', require('./routes/roles/roles'));
|
||||
app.use('/api/roles/:role_id', require('./routes/roles/infos/role-info'));
|
||||
|
||||
|
||||
// services //
|
||||
app.use('/api/services', require('./routes/services/services'));
|
||||
app.use('/api/services/:service_name', require('./routes/services/infos/service-info'));
|
||||
app.use('/api/services/:service_name/files', require('./routes/services/infos/files/service-files'));
|
||||
app.use('/api/services/:service_name/file', require('./routes/services/infos/files/service-file'));
|
||||
|
||||
|
||||
|
||||
// utils //
|
||||
app.use('/api/utils/send-mail', require('./routes/utils/send-mail'));
|
||||
|
||||
app.listen(PORT, () => {
|
||||
logger(` [INFO] MercuryCloud API listening on ${config.api_url} !`)
|
||||
}
|
||||
);
|
||||
https.createServer(server_opt, app).listen(config.api_port, config.api_bind_address, function () {
|
||||
logger(` [INFO] MercuryCloud API listening on ${config.api_url + ":" + config.api_port} !`)
|
||||
});
|
||||
}).catch((error) => {
|
||||
logger(" [ERROR] Proxmox API error : " + error);
|
||||
process.exit(1);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
}
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/products/product-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/${url.searchParams.get('id')}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -44,16 +44,16 @@
|
||||
/*---------------------------------------------------------------------
|
||||
Fieldset
|
||||
-----------------------------------------------------------------------*/
|
||||
|
||||
let currentTab =0;
|
||||
const ActiveTab=(n)=>{
|
||||
if(n==0){
|
||||
|
||||
let currentTab = 0;
|
||||
const ActiveTab = (n) => {
|
||||
if (n == 0) {
|
||||
document.getElementById("account").classList.add("active");
|
||||
document.getElementById("account").classList.remove("done");
|
||||
document.getElementById("personal").classList.remove("done");
|
||||
document.getElementById("personal").classList.remove("active");
|
||||
}
|
||||
if(n==1){
|
||||
if (n == 1) {
|
||||
form1 = {
|
||||
"cycle": document.getElementById("cycle-fac").value,
|
||||
"srv_name": document.getElementById("srv-name").value,
|
||||
@@ -62,142 +62,142 @@
|
||||
"db_sup": document.getElementById("db-sup").value,
|
||||
"bkp_sup": document.getElementById("bkp-sup").value
|
||||
}
|
||||
fetch(`https://api.mercurycloud.fr/api/users/user-info?uuid=${getCookie('uuid')}&token=${getCookie('token')}&id=${getCookie('uuid')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
document.getElementById("first-name").value = json.data.first_name
|
||||
document.getElementById("last-name").value = json.data.last_name
|
||||
document.getElementById("mail").value = json.data.mail
|
||||
document.getElementById("tel").value = json.data.tel
|
||||
document.getElementById("address-1").value = json.data.address_1
|
||||
document.getElementById("address-2").value = json.data.address_2
|
||||
document.getElementById("city").value = json.data.city
|
||||
document.getElementById("zip").value = json.data.zip
|
||||
document.getElementById("country").value = json.data.country
|
||||
document.getElementById("state").value = json.data.state
|
||||
}
|
||||
document.getElementById("account").classList.add("done");
|
||||
document.getElementById("personal").classList.add("active");
|
||||
document.getElementById("personal").classList.remove("done");
|
||||
document.getElementById("payment").classList.remove("active");
|
||||
document.getElementById("payment").classList.remove("done");
|
||||
document.getElementById("confirm").classList.remove("done");
|
||||
document.getElementById("confirm").classList.remove("active");
|
||||
if(document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("first-name").classList.remove('is-valid')
|
||||
document.getElementById("first-name").classList.add('is-invalid')
|
||||
document.getElementById("first-name").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("last-name").classList.remove('is-valid')
|
||||
document.getElementById("last-name").classList.add('is-invalid')
|
||||
document.getElementById("last-name").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("mail").value.length > 2) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("tel").classList.remove('is-valid')
|
||||
document.getElementById("tel").classList.add('is-invalid')
|
||||
document.getElementById("tel").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("address-1").classList.remove('is-valid')
|
||||
document.getElementById("address-1").classList.add('is-invalid')
|
||||
document.getElementById("address-1").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("city").classList.remove('is-valid')
|
||||
document.getElementById("city").classList.add('is-invalid')
|
||||
document.getElementById("city").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("zip").classList.remove('is-valid')
|
||||
document.getElementById("zip").classList.add('is-invalid')
|
||||
document.getElementById("zip").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("country").classList.remove('is-valid')
|
||||
document.getElementById("country").classList.add('is-invalid')
|
||||
document.getElementById("country").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("state").classList.remove('is-valid')
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users/${getCookie('uuid')}?uuid=${getCookie('uuid')}&token=${getCookie('token')}&id=${getCookie('uuid')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
document.getElementById("first-name").value = json.data.first_name
|
||||
document.getElementById("last-name").value = json.data.last_name
|
||||
document.getElementById("mail").value = json.data.mail
|
||||
document.getElementById("tel").value = json.data.tel
|
||||
document.getElementById("address-1").value = json.data.address_1
|
||||
document.getElementById("address-2").value = json.data.address_2
|
||||
document.getElementById("city").value = json.data.city
|
||||
document.getElementById("zip").value = json.data.zip
|
||||
document.getElementById("country").value = json.data.country
|
||||
document.getElementById("state").value = json.data.state
|
||||
}
|
||||
document.getElementById("account").classList.add("done");
|
||||
document.getElementById("personal").classList.add("active");
|
||||
document.getElementById("personal").classList.remove("done");
|
||||
document.getElementById("payment").classList.remove("active");
|
||||
document.getElementById("payment").classList.remove("done");
|
||||
document.getElementById("confirm").classList.remove("done");
|
||||
document.getElementById("confirm").classList.remove("active");
|
||||
if (document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("first-name").classList.remove('is-valid')
|
||||
document.getElementById("first-name").classList.add('is-invalid')
|
||||
document.getElementById("first-name").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("last-name").classList.remove('is-valid')
|
||||
document.getElementById("last-name").classList.add('is-invalid')
|
||||
document.getElementById("last-name").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("mail").value.length > 2) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("tel").classList.remove('is-valid')
|
||||
document.getElementById("tel").classList.add('is-invalid')
|
||||
document.getElementById("tel").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("address-1").classList.remove('is-valid')
|
||||
document.getElementById("address-1").classList.add('is-invalid')
|
||||
document.getElementById("address-1").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("city").classList.remove('is-valid')
|
||||
document.getElementById("city").classList.add('is-invalid')
|
||||
document.getElementById("city").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("zip").classList.remove('is-valid')
|
||||
document.getElementById("zip").classList.add('is-invalid')
|
||||
document.getElementById("zip").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("country").classList.remove('is-valid')
|
||||
document.getElementById("country").classList.add('is-invalid')
|
||||
document.getElementById("country").value = ""
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
|
||||
} else {
|
||||
document.getElementById("state").classList.remove('is-valid')
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
if(n==2){
|
||||
if (n == 2) {
|
||||
form2 = {
|
||||
"first_name": document.getElementById("first-name").value,
|
||||
"last_name": document.getElementById("last-name").value,
|
||||
@@ -218,209 +218,207 @@
|
||||
document.getElementById("confirm").classList.remove("active");
|
||||
|
||||
}
|
||||
if(n==3){
|
||||
if (n == 3) {
|
||||
document.getElementById("account").classList.add("done");
|
||||
document.getElementById("personal").classList.add("done");
|
||||
document.getElementById("payment").classList.add("done");
|
||||
document.getElementById("confirm").classList.add("active");
|
||||
document.getElementById("confirm").classList.remove("done");
|
||||
}
|
||||
}
|
||||
const showTab=(n)=>{
|
||||
}
|
||||
const showTab = (n) => {
|
||||
var x = document.getElementsByTagName("fieldset");
|
||||
x[n].style.display = "block";
|
||||
console.log(n);
|
||||
ActiveTab(n);
|
||||
|
||||
|
||||
}
|
||||
const nextBtnFunction= (n) => {
|
||||
const nextBtnFunction = (n) => {
|
||||
var x = document.getElementsByTagName("fieldset");
|
||||
x[currentTab].style.display = "none";
|
||||
currentTab = currentTab + n;
|
||||
showTab(currentTab);
|
||||
}
|
||||
|
||||
const nextbtn= document.querySelectorAll('.next')
|
||||
|
||||
const nextbtn = document.querySelectorAll('.next')
|
||||
Array.from(nextbtn, (nbtn) => {
|
||||
nbtn.addEventListener('click',function()
|
||||
{
|
||||
console.log("tab " + currentTab)
|
||||
if (currentTab == 0) {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById('cycle-fac').value > 0) {
|
||||
document.getElementById('cycle-fac').classList.remove('is-invalid')
|
||||
document.getElementById('cycle-fac').classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById('cycle-fac').classList.remove('is-valid')
|
||||
document.getElementById('cycle-fac').classList.add('is-invalid')
|
||||
document.getElementById('cycle-fac').value = "0"
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('srv-name').value.length > 2) {
|
||||
document.getElementById('srv-name').classList.remove('is-invalid')
|
||||
document.getElementById('srv-name').classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById('srv-name').classList.remove('is-valid')
|
||||
document.getElementById('srv-name').classList.add('is-invalid')
|
||||
document.getElementById('srv-name').value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
if(ok ==2 && no == 0) {
|
||||
nextBtnFunction(1);
|
||||
}
|
||||
}
|
||||
if (currentTab == 1) {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("first-name").classList.remove('is-valid')
|
||||
document.getElementById("first-name").classList.add('is-invalid')
|
||||
document.getElementById("first-name").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("last-name").classList.remove('is-valid')
|
||||
document.getElementById("last-name").classList.add('is-invalid')
|
||||
document.getElementById("last-name").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("mail").value.length > 2) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("tel").classList.remove('is-valid')
|
||||
document.getElementById("tel").classList.add('is-invalid')
|
||||
document.getElementById("tel").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("address-1").classList.remove('is-valid')
|
||||
document.getElementById("address-1").classList.add('is-invalid')
|
||||
document.getElementById("address-1").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("city").classList.remove('is-valid')
|
||||
document.getElementById("city").classList.add('is-invalid')
|
||||
document.getElementById("city").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("zip").classList.remove('is-valid')
|
||||
document.getElementById("zip").classList.add('is-invalid')
|
||||
document.getElementById("zip").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("country").classList.remove('is-valid')
|
||||
document.getElementById("country").classList.add('is-invalid')
|
||||
document.getElementById("country").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("state").classList.remove('is-valid')
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(ok > 2 && no == 0) {
|
||||
nextBtnFunction(1);
|
||||
}
|
||||
}
|
||||
if (currentTab == 2) {
|
||||
form = {"product_id": url.searchParams.get('id'), "srv_info": form1, "user_info": form2}
|
||||
console.log(form)
|
||||
postData(`https://api.mercurycloud.fr/api/services/order-form?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, form).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
nextBtnFunction(1);
|
||||
nbtn.addEventListener('click', function () {
|
||||
console.log("tab " + currentTab)
|
||||
if (currentTab == 0) {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if (document.getElementById('cycle-fac').value > 0) {
|
||||
document.getElementById('cycle-fac').classList.remove('is-invalid')
|
||||
document.getElementById('cycle-fac').classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
if (data.code == 403) {
|
||||
console.log('[ERROR] ' + data);
|
||||
window.location.replace("/dashboard/auth/sign-in.html");
|
||||
document.getElementById('cycle-fac').classList.remove('is-valid')
|
||||
document.getElementById('cycle-fac').classList.add('is-invalid')
|
||||
document.getElementById('cycle-fac').value = "0"
|
||||
no++
|
||||
}
|
||||
|
||||
if (document.getElementById('srv-name').value.length > 2) {
|
||||
document.getElementById('srv-name').classList.remove('is-invalid')
|
||||
document.getElementById('srv-name').classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById('srv-name').classList.remove('is-valid')
|
||||
document.getElementById('srv-name').classList.add('is-invalid')
|
||||
document.getElementById('srv-name').value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
if (ok == 2 && no == 0) {
|
||||
nextBtnFunction(1);
|
||||
}
|
||||
}
|
||||
if (currentTab == 1) {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if (document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("first-name").classList.remove('is-valid')
|
||||
document.getElementById("first-name").classList.add('is-invalid')
|
||||
document.getElementById("first-name").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("last-name").classList.remove('is-valid')
|
||||
document.getElementById("last-name").classList.add('is-invalid')
|
||||
document.getElementById("last-name").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("mail").value.length > 2) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("tel").classList.remove('is-valid')
|
||||
document.getElementById("tel").classList.add('is-invalid')
|
||||
document.getElementById("tel").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("address-1").classList.remove('is-valid')
|
||||
document.getElementById("address-1").classList.add('is-invalid')
|
||||
document.getElementById("address-1").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("city").classList.remove('is-valid')
|
||||
document.getElementById("city").classList.add('is-invalid')
|
||||
document.getElementById("city").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("zip").classList.remove('is-valid')
|
||||
document.getElementById("zip").classList.add('is-invalid')
|
||||
document.getElementById("zip").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("country").classList.remove('is-valid')
|
||||
document.getElementById("country").classList.add('is-invalid')
|
||||
document.getElementById("country").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("state").classList.remove('is-valid')
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if (ok > 2 && no == 0) {
|
||||
nextBtnFunction(1);
|
||||
}
|
||||
}
|
||||
if (currentTab == 2) {
|
||||
form = { "product_id": url.searchParams.get('id'), "srv_info": form1, "user_info": form2 }
|
||||
console.log(form)
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/services?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, form).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
nextBtnFunction(1);
|
||||
} else {
|
||||
if (data.code == 404) {
|
||||
if (data.code == 403) {
|
||||
console.log('[ERROR] ' + data);
|
||||
window.location.replace("/dashboard/auth/sign-in.html");
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
if (data.code == 404) {
|
||||
console.log('[ERROR] ' + data);
|
||||
window.location.replace("/dashboard/auth/sign-in.html");
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
const prebtn = document.querySelectorAll('.previous')
|
||||
const prebtn = document.querySelectorAll('.previous')
|
||||
Array.from(prebtn, (pbtn) => {
|
||||
pbtn.addEventListener('click',function()
|
||||
{
|
||||
nextBtnFunction(-1);
|
||||
})
|
||||
});
|
||||
|
||||
pbtn.addEventListener('click', function () {
|
||||
nextBtnFunction(-1);
|
||||
})
|
||||
});
|
||||
|
||||
})()
|
||||
@@ -1,13 +1,13 @@
|
||||
fetch('https://api.mercurycloud.fr/api/products/products')
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let products = ``
|
||||
for(var i = 0; i < json.data.length; i++) {
|
||||
if (window.location.href.includes("vps-pricings.html")) {
|
||||
if (json.data[i].category == "proxmox") {
|
||||
products = products + `
|
||||
fetch('https://dash.mercurycloud.fr:8000/api/products')
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let products = ``
|
||||
for (var i = 0; i < json.data.length; i++) {
|
||||
if (window.location.href.includes("vps-pricings.html")) {
|
||||
if (json.data[i].category == "proxmox") {
|
||||
products = products + `
|
||||
<div class="col iq-star-inserted-3">
|
||||
<div class="card my-5">
|
||||
<div class="card-body">
|
||||
@@ -25,11 +25,11 @@ fetch('https://api.mercurycloud.fr/api/products/products')
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
}
|
||||
if (window.location.href.includes("game-pricings.html")) {
|
||||
if (json.data[i].category == "pterodactyl") {
|
||||
products = products + `
|
||||
}
|
||||
}
|
||||
if (window.location.href.includes("game-pricings.html")) {
|
||||
if (json.data[i].category == "pterodactyl") {
|
||||
products = products + `
|
||||
<div class="col iq-star-inserted-3">
|
||||
<div class="card my-5">
|
||||
<div class="card-body">
|
||||
@@ -47,8 +47,8 @@ fetch('https://api.mercurycloud.fr/api/products/products')
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
document.getElementById('pricings').innerHTML = products
|
||||
})
|
||||
document.getElementById('pricings').innerHTML = products
|
||||
})
|
||||
@@ -1,68 +1,68 @@
|
||||
async function postData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
|
||||
function getCookie(name) {
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-nodes-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let nodes_html = ``
|
||||
for(var i = 0; i < json.nodes.length; i++) {
|
||||
nodes_html = nodes_html + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/nodes?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let nodes_html = ``
|
||||
for (var i = 0; i < json.nodes.length; i++) {
|
||||
nodes_html = nodes_html + `
|
||||
<option value="${json.nodes[i].node}">${json.nodes[i].node}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('nodes').innerHTML = '<option value="0">Veuillez choisir un noeud</option>' + nodes_html
|
||||
})
|
||||
}
|
||||
document.getElementById('nodes').innerHTML = '<option value="0">Veuillez choisir un noeud</option>' + nodes_html
|
||||
})
|
||||
|
||||
function update_node() {
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-qemu-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let template_vm_html = ``
|
||||
for(var i = 0; i < json.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/qemu?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let template_vm_html = ``
|
||||
for (var i = 0; i < json.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
<option value="${json.vms[i].vmid}">${json.vms[i].name}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
})
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
})
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-storage-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let storage_html = ``
|
||||
for(var i = 0; i < json.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/storage?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let storage_html = ``
|
||||
for (var i = 0; i < json.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
<option value="${json.storage[i].storage}">${json.storage[i].storage}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
})
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
})
|
||||
}
|
||||
|
||||
function create_product() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById('name').value.length > 0) {
|
||||
if (document.getElementById('name').value.length > 0) {
|
||||
document.getElementById('name').classList.remove('is-invalid')
|
||||
document.getElementById('name').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -73,7 +73,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('description').value.length > 0) {
|
||||
if (document.getElementById('description').value.length > 0) {
|
||||
document.getElementById('description').classList.remove('is-invalid')
|
||||
document.getElementById('description').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -84,7 +84,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('price').value.length > 0) {
|
||||
if (document.getElementById('price').value.length > 0) {
|
||||
document.getElementById('price').classList.remove('is-invalid')
|
||||
document.getElementById('price').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -95,7 +95,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('nodes').value != 0) {
|
||||
if (document.getElementById('nodes').value != 0) {
|
||||
document.getElementById('nodes').classList.remove('is-invalid')
|
||||
document.getElementById('nodes').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -105,7 +105,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('template_vm').value != 0) {
|
||||
if (document.getElementById('template_vm').value != 0) {
|
||||
document.getElementById('template_vm').classList.remove('is-invalid')
|
||||
document.getElementById('template_vm').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -115,7 +115,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('cores').value.length > 0) {
|
||||
if (document.getElementById('cores').value.length > 0) {
|
||||
document.getElementById('cores').classList.remove('is-invalid')
|
||||
document.getElementById('cores').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -126,7 +126,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('ram').value.length > 0) {
|
||||
if (document.getElementById('ram').value.length > 0) {
|
||||
document.getElementById('ram').classList.remove('is-invalid')
|
||||
document.getElementById('ram').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -137,7 +137,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('storage').value != 0) {
|
||||
if (document.getElementById('storage').value != 0) {
|
||||
document.getElementById('storage').classList.remove('is-invalid')
|
||||
document.getElementById('storage').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -147,7 +147,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('disk_size').value.length > 0) {
|
||||
if (document.getElementById('disk_size').value.length > 0) {
|
||||
document.getElementById('disk_size').classList.remove('is-invalid')
|
||||
document.getElementById('disk_size').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -160,11 +160,12 @@ function create_product() {
|
||||
|
||||
|
||||
|
||||
if(ok == 9 && no == 0) {
|
||||
if (ok == 9 && no == 0) {
|
||||
body = {
|
||||
"name": document.getElementById("name").value,
|
||||
"description": document.getElementById("description").value,
|
||||
"price": document.getElementById("price").value,
|
||||
"category": "proxmox",
|
||||
"node": document.getElementById("nodes").value,
|
||||
"template_vm": document.getElementById("template_vm").value,
|
||||
"cores": document.getElementById("cores").value,
|
||||
@@ -173,7 +174,7 @@ function create_product() {
|
||||
"disk_size": document.getElementById("disk_size").value,
|
||||
"add_conf": document.getElementById("add_conf").value
|
||||
}
|
||||
postData(`https://api.mercurycloud.fr/api/products/proxmox-create-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.replace("/dashboard/products/proxmox-products-list.html")
|
||||
@@ -185,6 +186,6 @@ function create_product() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
async function postData(url = '', data = {}) {
|
||||
async function putData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -17,115 +17,114 @@ function getCookie(name) {
|
||||
var id_string = ""
|
||||
var category_string = ""
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-nodes-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let nodes_html = ``
|
||||
for(var i = 0; i < json.nodes.length; i++) {
|
||||
nodes_html = nodes_html + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/nodes?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let nodes_html = ``
|
||||
for (var i = 0; i < json.nodes.length; i++) {
|
||||
nodes_html = nodes_html + `
|
||||
<option value="${json.nodes[i].node}">${json.nodes[i].node}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('nodes').innerHTML = '<option value="0">Veuillez choisir un noeud</option>' + nodes_html
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/products/product-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
}
|
||||
document.getElementById('nodes').innerHTML = '<option value="0">Veuillez choisir un noeud</option>' + nodes_html
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/${url.searchParams.get('id')}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du produit Pterodactyl ${json.data.name}`
|
||||
document.getElementById("product-title").innerHTML = `Edition du produit ${json.data.name}`
|
||||
document.getElementById('name').value = json.data.name
|
||||
document.getElementById('description').value = json.data.description
|
||||
document.getElementById('price').value = json.data.price
|
||||
document.getElementById('nodes').value = json.data.node
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/qemu?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json1) {
|
||||
let template_vm_html = ``
|
||||
for (var i = 0; i < json1.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
<option value="${json1.vms[i].vmid}">${json1.vms[i].name}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
document.getElementById('template_vm').value = json.data.template_vmid
|
||||
})
|
||||
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/storage?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
let storage_html = ``
|
||||
for (var i = 0; i < json2.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
<option value="${json2.storage[i].storage}">${json2.storage[i].storage}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
document.getElementById('storage').value = json.data.storage
|
||||
})
|
||||
document.getElementById('cores').value = json.data.cores
|
||||
document.getElementById('ram').value = json.data.ram
|
||||
document.getElementById('disk_size').value = json.data.disk_size
|
||||
document.getElementById('add_conf').value = json.data.add_conf
|
||||
id_string = json.data.id
|
||||
category_string = json.data.category
|
||||
}
|
||||
} else {
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
})
|
||||
|
||||
function update_node() {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/qemu?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du produit Pterodactyl ${json.data.name}`
|
||||
document.getElementById("product-title").innerHTML = `Edition du produit ${json.data.name}`
|
||||
document.getElementById('name').value = json.data.name
|
||||
document.getElementById('description').value = json.data.description
|
||||
document.getElementById('price').value = json.data.price
|
||||
document.getElementById('nodes').value = json.data.node
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-qemu-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json1) {
|
||||
let template_vm_html = ``
|
||||
for(var i = 0; i < json1.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
<option value="${json1.vms[i].vmid}">${json1.vms[i].name}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
document.getElementById('template_vm').value = json.data.template_vmid
|
||||
})
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-storage-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
let storage_html = ``
|
||||
for(var i = 0; i < json2.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
<option value="${json2.storage[i].storage}">${json2.storage[i].storage}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
document.getElementById('storage').value = json.data.storage
|
||||
})
|
||||
document.getElementById('cores').value = json.data.cores
|
||||
document.getElementById('ram').value = json.data.ram
|
||||
document.getElementById('disk_size').value = json.data.disk_size
|
||||
document.getElementById('add_conf').value = json.data.add_conf
|
||||
id_string = json.data.id
|
||||
category_string = json.data.category
|
||||
}
|
||||
} else {
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
})
|
||||
|
||||
function update_node() {
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-qemu-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let template_vm_html = ``
|
||||
for(var i = 0; i < json.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
let template_vm_html = ``
|
||||
for (var i = 0; i < json.vms.length; i++) {
|
||||
template_vm_html = template_vm_html + `
|
||||
<option value="${json.vms[i].vmid}">${json.vms[i].name}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
})
|
||||
}
|
||||
document.getElementById('template_vm').innerHTML = template_vm_html
|
||||
})
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/proxmox-storage-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let storage_html = ``
|
||||
for(var i = 0; i < json.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/proxmox/storage?uuid=${getCookie("uuid")}&token=${getCookie("token")}&node=${document.getElementById('nodes').value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
let storage_html = ``
|
||||
for (var i = 0; i < json.storage.length; i++) {
|
||||
storage_html = storage_html + `
|
||||
<option value="${json.storage[i].storage}">${json.storage[i].storage}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
})
|
||||
}
|
||||
document.getElementById('storage').innerHTML = storage_html
|
||||
})
|
||||
}
|
||||
|
||||
function save_product() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById('name').value.length > 0) {
|
||||
if (document.getElementById('name').value.length > 0) {
|
||||
document.getElementById('name').classList.remove('is-invalid')
|
||||
document.getElementById('name').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -136,7 +135,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('description').value.length > 0) {
|
||||
if (document.getElementById('description').value.length > 0) {
|
||||
document.getElementById('description').classList.remove('is-invalid')
|
||||
document.getElementById('description').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -147,7 +146,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('price').value.length > 0) {
|
||||
if (document.getElementById('price').value.length > 0) {
|
||||
document.getElementById('price').classList.remove('is-invalid')
|
||||
document.getElementById('price').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -158,7 +157,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('nodes').value != 0) {
|
||||
if (document.getElementById('nodes').value != 0) {
|
||||
document.getElementById('nodes').classList.remove('is-invalid')
|
||||
document.getElementById('nodes').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -168,7 +167,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('template_vm').value != 0) {
|
||||
if (document.getElementById('template_vm').value != 0) {
|
||||
document.getElementById('template_vm').classList.remove('is-invalid')
|
||||
document.getElementById('template_vm').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -178,7 +177,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('cores').value.length > 0) {
|
||||
if (document.getElementById('cores').value.length > 0) {
|
||||
document.getElementById('cores').classList.remove('is-invalid')
|
||||
document.getElementById('cores').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -189,7 +188,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('ram').value.length > 0) {
|
||||
if (document.getElementById('ram').value.length > 0) {
|
||||
document.getElementById('ram').classList.remove('is-invalid')
|
||||
document.getElementById('ram').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -200,7 +199,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('storage').value != 0) {
|
||||
if (document.getElementById('storage').value != 0) {
|
||||
document.getElementById('storage').classList.remove('is-invalid')
|
||||
document.getElementById('storage').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -210,7 +209,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('disk_size').value.length > 0) {
|
||||
if (document.getElementById('disk_size').value.length > 0) {
|
||||
document.getElementById('disk_size').classList.remove('is-invalid')
|
||||
document.getElementById('disk_size').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -223,9 +222,8 @@ function save_product() {
|
||||
|
||||
|
||||
|
||||
if(ok == 9 && no == 0) {
|
||||
if (ok == 9 && no == 0) {
|
||||
body = {
|
||||
"id": id_string,
|
||||
"category": category_string,
|
||||
"name": document.getElementById("name").value,
|
||||
"description": document.getElementById("description").value,
|
||||
@@ -238,7 +236,7 @@ function save_product() {
|
||||
"disk_size": document.getElementById("disk_size").value,
|
||||
"add_conf": document.getElementById("add_conf").value
|
||||
}
|
||||
postData(`https://api.mercurycloud.fr/api/products/edit-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
putData(`https://dash.mercurycloud.fr:8000/api/products/${id_string}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
@@ -250,6 +248,6 @@ function save_product() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ async function deleteData(url = '', data = {}) {
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
@@ -70,7 +70,7 @@ fetch(`https://api.mercurycloud.fr/api/products/products?uuid=${getCookie("uuid"
|
||||
})
|
||||
|
||||
function delete_product(id) {
|
||||
deleteData(`https://api.mercurycloud.fr/api/products/delete-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, { "id": id }).then(data => {
|
||||
deleteData(`https://dash.mercurycloud.fr:8000/api/products/${id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, {}).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
async function postData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
|
||||
function getCookie(name) {
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
|
||||
function update_eggs() {
|
||||
@@ -153,7 +153,7 @@ function update_eggs() {
|
||||
function create_product() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById('name').value.length > 0) {
|
||||
if (document.getElementById('name').value.length > 0) {
|
||||
document.getElementById('name').classList.remove('is-invalid')
|
||||
document.getElementById('name').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -164,7 +164,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('description').value.length > 0) {
|
||||
if (document.getElementById('description').value.length > 0) {
|
||||
document.getElementById('description').classList.remove('is-invalid')
|
||||
document.getElementById('description').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -175,7 +175,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('price').value.length > 0) {
|
||||
if (document.getElementById('price').value.length > 0) {
|
||||
document.getElementById('price').classList.remove('is-invalid')
|
||||
document.getElementById('price').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -186,7 +186,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('cpu').value.length > 0) {
|
||||
if (document.getElementById('cpu').value.length > 0) {
|
||||
document.getElementById('cpu').classList.remove('is-invalid')
|
||||
document.getElementById('cpu').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -197,7 +197,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('ram').value.length > 0) {
|
||||
if (document.getElementById('ram').value.length > 0) {
|
||||
document.getElementById('ram').classList.remove('is-invalid')
|
||||
document.getElementById('ram').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -208,7 +208,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('disk').value.length > 0) {
|
||||
if (document.getElementById('disk').value.length > 0) {
|
||||
document.getElementById('disk').classList.remove('is-invalid')
|
||||
document.getElementById('disk').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -219,7 +219,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('swap').value.length > 0) {
|
||||
if (document.getElementById('swap').value.length > 0) {
|
||||
document.getElementById('swap').classList.remove('is-invalid')
|
||||
document.getElementById('swap').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -230,7 +230,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('io').value.length > 0) {
|
||||
if (document.getElementById('io').value.length > 0) {
|
||||
document.getElementById('io').classList.remove('is-invalid')
|
||||
document.getElementById('io').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -241,7 +241,7 @@ function create_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('startup_command').value.length > 0) {
|
||||
if (document.getElementById('startup_command').value.length > 0) {
|
||||
document.getElementById('startup_command').classList.remove('is-invalid')
|
||||
document.getElementById('startup_command').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -253,32 +253,33 @@ function create_product() {
|
||||
}
|
||||
|
||||
|
||||
if(ok == 9 && no == 0) {
|
||||
if (ok == 9 && no == 0) {
|
||||
|
||||
var env_vars_count = 2
|
||||
var env_vars = []
|
||||
var env_vars_title = []
|
||||
var env_vars_json = `{`
|
||||
if (document.getElementById("egg").value == 1) {env_vars_count = 2, env_vars_title = ['BUNGEE_VERSION', 'SERVER_JARFILE']}
|
||||
if (document.getElementById("egg").value == 2) {env_vars_count = 2, env_vars_title = ['SERVER_JARFILE', 'VANILLA_VERSION']}
|
||||
if (document.getElementById("egg").value == 3) {env_vars_count = 4, env_vars_title = ['MINECRAFT_VERSION', 'SERVER_JARFILE', 'DL_PATH', 'BUILD_NUMBER']}
|
||||
if (document.getElementById("egg").value == 4) {env_vars_count = 4, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'BUILD_TYPE', 'FORGE_VERSION ']}
|
||||
if (document.getElementById("egg").value == 5) {env_vars_count = 2, env_vars_title = ['SPONGE_VERSION', 'SERVER_JARFILE']}
|
||||
if (document.getElementById("egg").value == 6) {env_vars_count = 3, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'FABRIC_VERSION']}
|
||||
if (document.getElementById("egg").value == 7) {env_vars_count = 6, env_vars_title = ['BEDROCK_VERSION', 'LD_LIBRARY_PATH', 'SERVERNAME', 'GAMEMODE', 'DIFFICULTY', 'CHEATS']}
|
||||
if (document.getElementById("egg").value == 8) {env_vars_count = 2, env_vars_title = ['GITHUB_PACKAGE', 'MATCH']}
|
||||
for(var i= 1; i < env_vars_count + 1; i++) {
|
||||
if (document.getElementById("egg").value == 1) { env_vars_count = 2, env_vars_title = ['BUNGEE_VERSION', 'SERVER_JARFILE'] }
|
||||
if (document.getElementById("egg").value == 2) { env_vars_count = 2, env_vars_title = ['SERVER_JARFILE', 'VANILLA_VERSION'] }
|
||||
if (document.getElementById("egg").value == 3) { env_vars_count = 4, env_vars_title = ['MINECRAFT_VERSION', 'SERVER_JARFILE', 'DL_PATH', 'BUILD_NUMBER'] }
|
||||
if (document.getElementById("egg").value == 4) { env_vars_count = 4, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'BUILD_TYPE', 'FORGE_VERSION '] }
|
||||
if (document.getElementById("egg").value == 5) { env_vars_count = 2, env_vars_title = ['SPONGE_VERSION', 'SERVER_JARFILE'] }
|
||||
if (document.getElementById("egg").value == 6) { env_vars_count = 3, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'FABRIC_VERSION'] }
|
||||
if (document.getElementById("egg").value == 7) { env_vars_count = 6, env_vars_title = ['BEDROCK_VERSION', 'LD_LIBRARY_PATH', 'SERVERNAME', 'GAMEMODE', 'DIFFICULTY', 'CHEATS'] }
|
||||
if (document.getElementById("egg").value == 8) { env_vars_count = 2, env_vars_title = ['GITHUB_PACKAGE', 'MATCH'] }
|
||||
for (var i = 1; i < env_vars_count + 1; i++) {
|
||||
env_vars.push(document.getElementById("env_" + i).value)
|
||||
}
|
||||
for(var i= 0; i < env_vars.length; i++) {
|
||||
env_vars_json = env_vars_json + `"${env_vars_title[i]}": "${env_vars[i]}"`
|
||||
if (i < env_vars.length - 1) {env_vars_json = env_vars_json + ","}
|
||||
if (i == env_vars.length - 1) {env_vars_json = env_vars_json + "}"}
|
||||
for (var i = 0; i < env_vars.length; i++) {
|
||||
env_vars_json = env_vars_json + `"${env_vars_title[i]}": "${env_vars[i]}"`
|
||||
if (i < env_vars.length - 1) { env_vars_json = env_vars_json + "," }
|
||||
if (i == env_vars.length - 1) { env_vars_json = env_vars_json + "}" }
|
||||
}
|
||||
body = {
|
||||
"name": document.getElementById("name").value,
|
||||
"description": document.getElementById("description").value,
|
||||
"price": document.getElementById("price").value,
|
||||
"category": "pterodactyl",
|
||||
"cpu": document.getElementById("cpu").value,
|
||||
"cpu_pinning": document.getElementById("cpu_pinning").value,
|
||||
"ram": document.getElementById("ram").value,
|
||||
@@ -289,7 +290,7 @@ function create_product() {
|
||||
"startup_command": document.getElementById("startup_command").value,
|
||||
"env": env_vars_json
|
||||
}
|
||||
postData(`https://api.mercurycloud.fr/api/products/ptero-create-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.replace("/dashboard/products/ptero-products-list.html")
|
||||
@@ -301,6 +302,6 @@ function create_product() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
async function postData(url = '', data = {}) {
|
||||
async function putData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -13,46 +13,45 @@ function getCookie(name) {
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
}
|
||||
|
||||
var id_string = ""
|
||||
var category_string = ""
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/products/product-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du produit Pterodactyl ${json.data.name}`
|
||||
document.getElementById("product-title").innerHTML = `Edition du produit ${json.data.name}`
|
||||
document.getElementById('name').value = json.data.name
|
||||
document.getElementById('description').value = json.data.description
|
||||
document.getElementById('price').value = json.data.price
|
||||
document.getElementById('cpu').value = json.data.cpu
|
||||
document.getElementById('cpu_pinning').value = json.data.cpu_pinning
|
||||
document.getElementById('ram').value = json.data.ram
|
||||
document.getElementById('disk').value = json.data.disk
|
||||
document.getElementById('swap').value = json.data.swap
|
||||
document.getElementById('io').value = json.data.io
|
||||
document.getElementById('startup_command').value = json.data.startup_command
|
||||
document.getElementById('egg').value = json.data.egg
|
||||
update_eggs()
|
||||
for (let i=0; i < json.data.env.length; i++) {
|
||||
document.getElementById('env_' + (i + 1)).value = json.data.env[i]
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products/${url.searchParams.get('id')}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du produit Pterodactyl ${json.data.name}`
|
||||
document.getElementById("product-title").innerHTML = `Edition du produit ${json.data.name}`
|
||||
document.getElementById('name').value = json.data.name
|
||||
document.getElementById('description').value = json.data.description
|
||||
document.getElementById('price').value = json.data.price
|
||||
document.getElementById('cpu').value = json.data.cpu
|
||||
document.getElementById('cpu_pinning').value = json.data.cpu_pinning
|
||||
document.getElementById('ram').value = json.data.ram
|
||||
document.getElementById('disk').value = json.data.disk
|
||||
document.getElementById('swap').value = json.data.swap
|
||||
document.getElementById('io').value = json.data.io
|
||||
document.getElementById('startup_command').value = json.data.startup_command
|
||||
document.getElementById('egg').value = json.data.egg
|
||||
update_eggs()
|
||||
for (let i = 0; i < json.data.env.length; i++) {
|
||||
document.getElementById('env_' + (i + 1)).value = json.data.env[i]
|
||||
}
|
||||
id_string = json.data.id
|
||||
category_string = json.data.category
|
||||
}
|
||||
id_string = json.data.id
|
||||
category_string = json.data.category
|
||||
} else {
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
} else {
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
@@ -195,7 +194,7 @@ function update_eggs() {
|
||||
function save_product() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById('name').value.length > 0) {
|
||||
if (document.getElementById('name').value.length > 0) {
|
||||
document.getElementById('name').classList.remove('is-invalid')
|
||||
document.getElementById('name').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -206,7 +205,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('description').value.length > 0) {
|
||||
if (document.getElementById('description').value.length > 0) {
|
||||
document.getElementById('description').classList.remove('is-invalid')
|
||||
document.getElementById('description').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -217,7 +216,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('price').value.length > 0) {
|
||||
if (document.getElementById('price').value.length > 0) {
|
||||
document.getElementById('price').classList.remove('is-invalid')
|
||||
document.getElementById('price').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -228,7 +227,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('cpu').value.length > 0) {
|
||||
if (document.getElementById('cpu').value.length > 0) {
|
||||
document.getElementById('cpu').classList.remove('is-invalid')
|
||||
document.getElementById('cpu').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -239,7 +238,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('ram').value.length > 0) {
|
||||
if (document.getElementById('ram').value.length > 0) {
|
||||
document.getElementById('ram').classList.remove('is-invalid')
|
||||
document.getElementById('ram').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -250,7 +249,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('disk').value.length > 0) {
|
||||
if (document.getElementById('disk').value.length > 0) {
|
||||
document.getElementById('disk').classList.remove('is-invalid')
|
||||
document.getElementById('disk').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -261,7 +260,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('swap').value.length > 0) {
|
||||
if (document.getElementById('swap').value.length > 0) {
|
||||
document.getElementById('swap').classList.remove('is-invalid')
|
||||
document.getElementById('swap').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -272,7 +271,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('io').value.length > 0) {
|
||||
if (document.getElementById('io').value.length > 0) {
|
||||
document.getElementById('io').classList.remove('is-invalid')
|
||||
document.getElementById('io').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -283,7 +282,7 @@ function save_product() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById('startup_command').value.length > 0) {
|
||||
if (document.getElementById('startup_command').value.length > 0) {
|
||||
document.getElementById('startup_command').classList.remove('is-invalid')
|
||||
document.getElementById('startup_command').classList.add('is-valid')
|
||||
ok++
|
||||
@@ -295,30 +294,29 @@ function save_product() {
|
||||
}
|
||||
|
||||
|
||||
if(ok == 9 && no == 0) {
|
||||
if (ok == 9 && no == 0) {
|
||||
|
||||
var env_var_count = 2
|
||||
var env_vars = []
|
||||
var env_vars_title = []
|
||||
var env_vars_json = `{`
|
||||
if (document.getElementById("egg").value == 1) {env_var_count = 2, env_vars_title = ['BUNGEE_VERSION', 'SERVER_JARFILE']}
|
||||
if (document.getElementById("egg").value == 2) {env_var_count = 2, env_vars_title = ['SERVER_JARFILE', 'VANILLA_VERSION']}
|
||||
if (document.getElementById("egg").value == 3) {env_var_count = 4, env_vars_title = ['MINECRAFT_VERSION', 'SERVER_JARFILE', 'DL_PATH', 'BUILD_NUMBER']}
|
||||
if (document.getElementById("egg").value == 4) {env_var_count = 4, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'BUILD_TYPE', 'FORGE_VERSION ']}
|
||||
if (document.getElementById("egg").value == 5) {env_var_count = 2, env_vars_title = ['SPONGE_VERSION', 'SERVER_JARFILE']}
|
||||
if (document.getElementById("egg").value == 6) {env_var_count = 3, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'FABRIC_VERSION']}
|
||||
if (document.getElementById("egg").value == 7) {env_var_count = 6, env_vars_title = ['BEDROCK_VERSION', 'LD_LIBRARY_PATH', 'SERVERNAME', 'GAMEMODE', 'DIFFICULTY', 'CHEATS']}
|
||||
if (document.getElementById("egg").value == 8) {env_var_count = 2, env_vars_title = ['GITHUB_PACKAGE', 'MATCH']}
|
||||
for(var i= 1; i < env_var_count + 1; i++) {
|
||||
if (document.getElementById("egg").value == 1) { env_var_count = 2, env_vars_title = ['BUNGEE_VERSION', 'SERVER_JARFILE'] }
|
||||
if (document.getElementById("egg").value == 2) { env_var_count = 2, env_vars_title = ['SERVER_JARFILE', 'VANILLA_VERSION'] }
|
||||
if (document.getElementById("egg").value == 3) { env_var_count = 4, env_vars_title = ['MINECRAFT_VERSION', 'SERVER_JARFILE', 'DL_PATH', 'BUILD_NUMBER'] }
|
||||
if (document.getElementById("egg").value == 4) { env_var_count = 4, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'BUILD_TYPE', 'FORGE_VERSION '] }
|
||||
if (document.getElementById("egg").value == 5) { env_var_count = 2, env_vars_title = ['SPONGE_VERSION', 'SERVER_JARFILE'] }
|
||||
if (document.getElementById("egg").value == 6) { env_var_count = 3, env_vars_title = ['SERVER_JARFILE', 'MC_VERSION', 'FABRIC_VERSION'] }
|
||||
if (document.getElementById("egg").value == 7) { env_var_count = 6, env_vars_title = ['BEDROCK_VERSION', 'LD_LIBRARY_PATH', 'SERVERNAME', 'GAMEMODE', 'DIFFICULTY', 'CHEATS'] }
|
||||
if (document.getElementById("egg").value == 8) { env_var_count = 2, env_vars_title = ['GITHUB_PACKAGE', 'MATCH'] }
|
||||
for (var i = 1; i < env_var_count + 1; i++) {
|
||||
env_vars.push(document.getElementById("env_" + i).value)
|
||||
}
|
||||
for(var i= 0; i < env_vars.length; i++) {
|
||||
env_vars_json = env_vars_json + `"${env_vars_title[i]}": "${env_vars[i]}"`
|
||||
if (i < env_vars.length - 1) {env_vars_json = env_vars_json + ","}
|
||||
if (i == env_vars.length - 1) {env_vars_json = env_vars_json + "}"}
|
||||
for (var i = 0; i < env_vars.length; i++) {
|
||||
env_vars_json = env_vars_json + `"${env_vars_title[i]}": "${env_vars[i]}"`
|
||||
if (i < env_vars.length - 1) { env_vars_json = env_vars_json + "," }
|
||||
if (i == env_vars.length - 1) { env_vars_json = env_vars_json + "}" }
|
||||
}
|
||||
body = {
|
||||
"id": id_string,
|
||||
"category": category_string,
|
||||
"name": document.getElementById("name").value,
|
||||
"description": document.getElementById("description").value,
|
||||
@@ -334,8 +332,8 @@ function save_product() {
|
||||
"env": env_vars_json
|
||||
}
|
||||
|
||||
|
||||
postData(`https://api.mercurycloud.fr/api/products/edit-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
|
||||
putData(`https://dash.mercurycloud.fr:8000/api/products/${id_string}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
@@ -347,7 +345,7 @@ function save_product() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ async function deleteData(url = '', data = {}) {
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/products/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
@@ -70,7 +70,7 @@ fetch(`https://api.mercurycloud.fr/api/products/products?uuid=${getCookie("uuid"
|
||||
})
|
||||
|
||||
function delete_product(id) {
|
||||
deleteData(`https://api.mercurycloud.fr/api/products/delete-product?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, { "id": id }).then(data => {
|
||||
deleteData(`https://dash.mercurycloud.fr:8000/api/products/${id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, {}).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
|
||||
@@ -6,11 +6,11 @@ function getCookie(name) {
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -31,7 +31,7 @@ function admin_click() {
|
||||
function create_role() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("role-name").value.length > 2) {
|
||||
if (document.getElementById("role-name").value.length > 2) {
|
||||
document.getElementById("role-name").classList.remove('is-invalid')
|
||||
document.getElementById("role-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -42,7 +42,7 @@ function create_role() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(ok == 1 && no == 0) {
|
||||
if (ok == 1 && no == 0) {
|
||||
var permissions = []
|
||||
const permissions_array = ["ADMIN", "VIEWADMINPANEL", "LISTUSERS", "CREATEUSER", "DELETEUSER", "EDTIUSER", "LISTROLES", "CREATEROLE", "DELETEROLE", "EDITROLE", "LISTPRODUCTS", "CREATEPRODUCT", "DELETEPRODUCT", "EDITPRODUCT"]
|
||||
if (document.getElementById("ADMIN").checked) {
|
||||
@@ -60,7 +60,7 @@ function create_role() {
|
||||
"permissions": permissions
|
||||
}
|
||||
|
||||
postData(`https://api.mercurycloud.fr/api/roles/create-role?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/roles?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.replace("/dashboard/roles/roles-list.html")
|
||||
} else {
|
||||
@@ -71,6 +71,6 @@ function create_role() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ function getCookie(name) {
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
async function putData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -18,32 +18,31 @@ async function postData(url = '', data = {}) {
|
||||
var role_id = ""
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/roles/role-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.uuid == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du rôle ${json.data.name}`
|
||||
document.getElementById("role-title").innerHTML = `Edition du rôle ${json.data.name}`
|
||||
document.getElementById("role-name").value = json.data.name
|
||||
if (json.data.permissions != "NONE") {
|
||||
const role_permissions = json.data.permissions.split(",");
|
||||
for (let i = 0; i < role_permissions.length; ++i) {
|
||||
document.getElementById(role_permissions[i]).checked = true
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/roles/${url.searchParams.get('id')}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.uuid == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du rôle ${json.data.name}`
|
||||
document.getElementById("role-title").innerHTML = `Edition du rôle ${json.data.name}`
|
||||
document.getElementById("role-name").value = json.data.name
|
||||
if (json.data.permissions != "NONE") {
|
||||
const role_permissions = json.data.permissions.split(",");
|
||||
for (let i = 0; i < role_permissions.length; ++i) {
|
||||
document.getElementById(role_permissions[i]).checked = true
|
||||
}
|
||||
admin_click()
|
||||
}
|
||||
admin_click()
|
||||
role_id = json.data.id
|
||||
}
|
||||
role_id = json.data.id
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
@@ -64,7 +63,7 @@ function admin_click() {
|
||||
function save_role() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("role-name").value.length > 2) {
|
||||
if (document.getElementById("role-name").value.length > 2) {
|
||||
document.getElementById("role-name").classList.remove('is-invalid')
|
||||
document.getElementById("role-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -75,7 +74,7 @@ function save_role() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(ok == 1 && no == 0) {
|
||||
if (ok == 1 && no == 0) {
|
||||
var permissions = []
|
||||
const permissions_array = ["ADMIN", "VIEWADMINPANEL", "LISTUSERS", "CREATEUSER", "DELETEUSER", "EDTIUSER", "LISTROLES", "CREATEROLE", "DELETEROLE", "EDITROLE", "LISTPRODUCTS", "CREATEPRODUCT", "DELETEPRODUCT", "EDITPRODUCT", "LISTSERVICES", "CREATESERVICE", "DELETESERVICE", "EDITSERVICE"]
|
||||
if (document.getElementById("ADMIN").checked) {
|
||||
@@ -89,12 +88,11 @@ function save_role() {
|
||||
}
|
||||
}
|
||||
body = {
|
||||
"id": role_id,
|
||||
"name": document.getElementById("role-name").value,
|
||||
"permissions": permissions
|
||||
}
|
||||
|
||||
postData(`https://api.mercurycloud.fr/api/roles/role-edit?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
putData(`https://dash.mercurycloud.fr:8000/api/roles/${role_id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
} else {
|
||||
@@ -105,6 +103,6 @@ function save_role() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ async function deleteData(url = '', data = {}) {
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/roles/roles-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/roles?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
@@ -57,7 +57,7 @@ fetch(`https://api.mercurycloud.fr/api/roles/roles-list?uuid=${getCookie("uuid")
|
||||
})
|
||||
|
||||
function delete_role(id) {
|
||||
deleteData(`https://api.mercurycloud.fr/api/roles/delete-role?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, { "id": id }).then(data => {
|
||||
deleteData(`https://dash.mercurycloud.fr:8000/api/roles/${id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, {}).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
|
||||
@@ -4,13 +4,13 @@ function getCookie(name) {
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
async function putData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -19,55 +19,54 @@ var service_id = ""
|
||||
var json_products = {}
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/services/service-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du service ${json.data.name}`
|
||||
document.getElementById("service-title").innerHTML = `Edition du service ${json.data.name}`
|
||||
document.getElementById("name").value = json.data.name
|
||||
document.getElementById("price").value = json.data.price
|
||||
document.getElementById("statut").value = json.data.statut
|
||||
fetch(`https://api.mercurycloud.fr/api/users/users-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
if (json2.error === false) {
|
||||
var uuid_list = ``
|
||||
for (let i = 0; i < json2.users.length; i++) {
|
||||
uuid_list = uuid_list + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.id == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition du service ${json.data.name}`
|
||||
document.getElementById("service-title").innerHTML = `Edition du service ${json.data.name}`
|
||||
document.getElementById("name").value = json.data.name
|
||||
document.getElementById("price").value = json.data.price
|
||||
document.getElementById("statut").value = json.data.statut
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
if (json2.error === false) {
|
||||
var uuid_list = ``
|
||||
for (let i = 0; i < json2.users.length; i++) {
|
||||
uuid_list = uuid_list + `
|
||||
<option value="${json2.users[i].uuid}">${json2.users[i].mail}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById("uuid-list").innerHTML = uuid_list
|
||||
document.getElementById("uuid-list").value = json.data.uuid
|
||||
var logs_table = ``
|
||||
for (let i=0; i < json.logs.length; i++) {
|
||||
var username = ""
|
||||
for (let i = 0; i < json2.users.length; i++) {
|
||||
if (json.logs[i].uuid == json2.users[i].uuid) {
|
||||
username = json2.users[i].username
|
||||
break;
|
||||
}
|
||||
}
|
||||
let timestamp = new Date(+json.logs[i].timestamp);
|
||||
let date = ("0" + timestamp.getDate()).slice(-2);
|
||||
let month = ("0" + (timestamp.getMonth() + 1)).slice(-2);
|
||||
let year = timestamp.getFullYear();
|
||||
let hours = timestamp.getHours();
|
||||
let minutes = timestamp.getMinutes();
|
||||
let seconds = timestamp.getSeconds();
|
||||
if (seconds < 10) {seconds = "0" + seconds}
|
||||
if (hours < 10) {hours = "0" + hours}
|
||||
if (minutes < 10) {minutes = "0" + minutes}
|
||||
console.log(date + "/" + month + "/" + year + " " + hours + ":" + minutes + ":" + seconds)
|
||||
logs_table = logs_table + `
|
||||
document.getElementById("uuid-list").innerHTML = uuid_list
|
||||
document.getElementById("uuid-list").value = json.data.uuid
|
||||
var logs_table = ``
|
||||
for (let i = 0; i < json.logs.length; i++) {
|
||||
var username = ""
|
||||
for (let i = 0; i < json2.users.length; i++) {
|
||||
if (json.logs[i].uuid == json2.users[i].uuid) {
|
||||
username = json2.users[i].username
|
||||
break;
|
||||
}
|
||||
}
|
||||
let timestamp = new Date(+json.logs[i].timestamp);
|
||||
let date = ("0" + timestamp.getDate()).slice(-2);
|
||||
let month = ("0" + (timestamp.getMonth() + 1)).slice(-2);
|
||||
let year = timestamp.getFullYear();
|
||||
let hours = timestamp.getHours();
|
||||
let minutes = timestamp.getMinutes();
|
||||
let seconds = timestamp.getSeconds();
|
||||
if (seconds < 10) { seconds = "0" + seconds }
|
||||
if (hours < 10) { hours = "0" + hours }
|
||||
if (minutes < 10) { minutes = "0" + minutes }
|
||||
logs_table = logs_table + `
|
||||
<tr>
|
||||
<td>${date + "/" + month + "/" + year + " " + hours + ":" + minutes + ":" + seconds}</td>
|
||||
<td>${username}</td>
|
||||
@@ -75,39 +74,39 @@ if (url.searchParams.get('id')) {
|
||||
<td>${json.logs[i].action}</td>
|
||||
</tr>
|
||||
`
|
||||
}
|
||||
document.getElementById("service-logs-table").innerHTML = logs_table
|
||||
fetch(`https://api.mercurycloud.fr/api/products/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json3) {
|
||||
if (json3.error === false) {
|
||||
json_products = json3
|
||||
var products_list = ``
|
||||
for (let i = 0; i < json3.data.length; i++) {
|
||||
products_list = products_list + `
|
||||
}
|
||||
document.getElementById("service-logs-table").innerHTML = logs_table
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json3) {
|
||||
if (json3.error === false) {
|
||||
json_products = json3
|
||||
var products_list = ``
|
||||
for (let i = 0; i < json3.data.length; i++) {
|
||||
products_list = products_list + `
|
||||
<option value="${json3.data[i].id}">${json3.data[i].name}</option>
|
||||
`
|
||||
}
|
||||
document.getElementById("products").innerHTML = products_list
|
||||
document.getElementById("products").value = json.data.product_id
|
||||
}
|
||||
document.getElementById("products").innerHTML = products_list
|
||||
document.getElementById("products").value = json.data.product_id
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
|
||||
service_id = json.data.id
|
||||
service_id = json.data.id
|
||||
}
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
@@ -124,7 +123,7 @@ function update_product() {
|
||||
function save_service() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("name").value.length > 2) {
|
||||
if (document.getElementById("name").value.length > 2) {
|
||||
document.getElementById("name").classList.remove('is-invalid')
|
||||
document.getElementById("name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -135,7 +134,7 @@ function save_service() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("uuid-list").value !=0) {
|
||||
if (document.getElementById("uuid-list").value != 0) {
|
||||
document.getElementById("uuid-list").classList.remove('is-invalid')
|
||||
document.getElementById("uuid-list").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -146,7 +145,7 @@ function save_service() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("products").value != 0) {
|
||||
if (document.getElementById("products").value != 0) {
|
||||
document.getElementById("products").classList.remove('is-invalid')
|
||||
document.getElementById("products").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -157,7 +156,7 @@ function save_service() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("statut").value != 0) {
|
||||
if (document.getElementById("statut").value != 0) {
|
||||
document.getElementById("statut").classList.remove('is-invalid')
|
||||
document.getElementById("statut").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -170,7 +169,7 @@ function save_service() {
|
||||
|
||||
document.getElementById("price").classList.remove('is-valid')
|
||||
|
||||
if(ok == 4 && no == 0) {
|
||||
if (ok == 4 && no == 0) {
|
||||
body = {
|
||||
"id": service_id,
|
||||
"name": document.getElementById("name").value,
|
||||
@@ -180,7 +179,7 @@ function save_service() {
|
||||
"statut": document.getElementById("statut").value
|
||||
}
|
||||
|
||||
postData(`https://api.mercurycloud.fr/api/services/service-edit?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
putData(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
} else {
|
||||
@@ -191,6 +190,6 @@ function save_service() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
var editor = ace.edit("editor");
|
||||
editor.setTheme("ace/theme/nord_dark");
|
||||
editor.session.setMode("ace/mode/yaml");
|
||||
|
||||
function getCookie(name) {
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
@@ -17,10 +18,11 @@ var term = new Terminal({
|
||||
|
||||
var back = [];
|
||||
var files_data = {};
|
||||
|
||||
function load_files(directory) {
|
||||
document.getElementById("files-explorer").innerHTML =
|
||||
'<a class="list-group-item list-group-item"><div class="spinner-grow text-secondary" role="status"></div></a>';
|
||||
fetch(`https://api.mercurycloud.fr/api/services/${url.searchParams.get("id")}/files?uuid=${getCookie("uuid")}&token=${getCookie("token")}&directory=${directory}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}/files?uuid=${getCookie("uuid")}&token=${getCookie("token")}&directory=${directory}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
@@ -70,7 +72,7 @@ function load_files(directory) {
|
||||
</div>`;
|
||||
} else {
|
||||
if (json_files.data[i].attributes.mimetype == "inode/directory") {
|
||||
document.getElementById("files-explorer").innerHTML += `<div onclick="select_file(${directory + "/" + json_files.data[i].attributes.name})" ondblclick="load_filecontent('${directory + "/" + json_files.data[i].attributes.name}', ${i})" class="list-group-item list-group-item-action not-selectable">
|
||||
document.getElementById("files-explorer").innerHTML += `<div onclick="select_file(${directory + "/" + json_files.data[i].attributes.name})" ondblclick="load_files('${directory + "/" + json_files.data[i].attributes.name}')" class="list-group-item list-group-item-action not-selectable">
|
||||
<svg width="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path opacity="0.4" d="M16.8843 5.11485H13.9413C13.2081 5.11969 12.512 4.79355 12.0474 4.22751L11.0782 2.88762C10.6214 2.31661 9.9253 1.98894 9.19321 2.00028H7.11261C3.37819 2.00028 2.00001 4.19201 2.00001 7.91884V11.9474C1.99536 12.3904 21.9956 12.3898 21.9969 11.9474V10.7761C22.0147 7.04924 20.6721 5.11485 16.8843 5.11485Z"
|
||||
fill="currentColor"></path>
|
||||
@@ -144,6 +146,7 @@ function editor_back() {
|
||||
}
|
||||
|
||||
var file_path = "";
|
||||
|
||||
function load_filecontent(path, file_id) {
|
||||
document.getElementById("files-explorer").innerHTML =
|
||||
'<a class="list-group-item list-group-item"><div class="spinner-grow text-secondary" role="status"></div></a>';
|
||||
@@ -193,8 +196,7 @@ function load_filecontent(path, file_id) {
|
||||
document.getElementById("save-file-btn").classList.remove("disabled");
|
||||
document.getElementById("file-title").innerHTML =
|
||||
files_data[file_id].attributes.name;
|
||||
fetch(
|
||||
`https://api.mercurycloud.fr/api/services/${url.searchParams.get("id")}files?uuid=${getCookie("uuid")}&token=${getCookie("token")}&path=${path}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}/file?uuid=${getCookie("uuid")}&token=${getCookie("token")}&path=${path}`)
|
||||
.then(function (response) {
|
||||
return response.text();
|
||||
})
|
||||
@@ -219,24 +221,15 @@ function save_file_content() {
|
||||
"save-filecontent-btn"
|
||||
).innerHTML = `<span class="spinner-grow spinner-grow-sm" role="status" aria-hidden="true"></span>`;
|
||||
body = editor.getValue();
|
||||
fetch(
|
||||
`https://api.mercurycloud.fr/api/services/service-savefilecontent?uuid=${getCookie(
|
||||
"uuid"
|
||||
)}&token=${getCookie("token")}&id=${url.searchParams.get(
|
||||
"id"
|
||||
)}&path=${file_path}`,
|
||||
{
|
||||
method: "POST",
|
||||
body: body,
|
||||
}
|
||||
)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}/file?uuid=${getCookie("uuid")}&token=${getCookie("token")}&path=${file_path}`, {
|
||||
method: "PUT",
|
||||
body: body,
|
||||
})
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (data) {
|
||||
document
|
||||
.getElementById("save-filecontent-btn")
|
||||
.classList.remove("disabled");
|
||||
document.getElementById("save-filecontent-btn").classList.remove("disabled");
|
||||
document.getElementById("save-filecontent-btn").innerHTML = `Enregistrer`;
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -253,11 +246,7 @@ term.open(document.getElementById("terminal"));
|
||||
fitAddon.fit();
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get("id")) {
|
||||
fetch(
|
||||
`https://api.mercurycloud.fr/api/services/service-info?uuid=${getCookie(
|
||||
"uuid"
|
||||
)}&token=${getCookie("token")}&id=${url.searchParams.get("id")}`
|
||||
)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services/${url.searchParams.get("id")}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
@@ -294,12 +283,10 @@ if (url.searchParams.get("id")) {
|
||||
},
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: "CPU",
|
||||
data: [],
|
||||
},
|
||||
],
|
||||
series: [{
|
||||
name: "CPU",
|
||||
data: [],
|
||||
},],
|
||||
colors: ["#344ed1"],
|
||||
|
||||
xaxis: {
|
||||
@@ -358,12 +345,10 @@ if (url.searchParams.get("id")) {
|
||||
},
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: "RAM",
|
||||
data: [],
|
||||
},
|
||||
],
|
||||
series: [{
|
||||
name: "RAM",
|
||||
data: [],
|
||||
},],
|
||||
colors: ["#d95f18"],
|
||||
|
||||
xaxis: {
|
||||
@@ -422,12 +407,10 @@ if (url.searchParams.get("id")) {
|
||||
},
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: "Disque",
|
||||
data: [],
|
||||
},
|
||||
],
|
||||
series: [{
|
||||
name: "Disque",
|
||||
data: [],
|
||||
},],
|
||||
colors: ["#17904b"],
|
||||
|
||||
xaxis: {
|
||||
@@ -486,12 +469,10 @@ if (url.searchParams.get("id")) {
|
||||
},
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: "Réseau",
|
||||
data: [],
|
||||
},
|
||||
],
|
||||
series: [{
|
||||
name: "Réseau",
|
||||
data: [],
|
||||
},],
|
||||
colors: ["#ad2d1e"],
|
||||
|
||||
xaxis: {
|
||||
@@ -633,28 +614,11 @@ if (url.searchParams.get("id")) {
|
||||
100 +
|
||||
"Go";
|
||||
document.getElementById("disk-counter").innerHTML =
|
||||
Math.round((args_parse.disk_bytes / (1024 * 1024 * 1024)) * 100) /
|
||||
100 +
|
||||
"Go";
|
||||
Math.round((args_parse.disk_bytes / (1024 * 1024 * 1024)) * 100) / 100 + "Go";
|
||||
document.getElementById("net-counter").innerHTML =
|
||||
(Math.round(
|
||||
((args_parse.network.rx_bytes + args_parse.network.tx_bytes) /
|
||||
(1024 * 1024)) *
|
||||
100
|
||||
) /
|
||||
100) *
|
||||
8 +
|
||||
"Mb/s";
|
||||
document.getElementById("disk-counter-span").innerHTML =
|
||||
Math.round((args_parse.disk_bytes / (1024 * 1024)) * 100) / 100 +
|
||||
"Mo";
|
||||
document.getElementById("ram-counter-span").innerHTML =
|
||||
"sur " +
|
||||
Math.round(
|
||||
(args_parse.memory_limit_bytes / (1024 * 1024 * 1024)) * 100
|
||||
) /
|
||||
100 +
|
||||
"Go";
|
||||
(Math.round(((args_parse.network.rx_bytes + args_parse.network.tx_bytes) / (1024 * 1024)) * 100) / 100) * 8 + "Mb/s";
|
||||
document.getElementById("disk-counter-span").innerHTML = Math.round((args_parse.disk_bytes / (1024 * 1024)) * 100) / 100 + "Mo";
|
||||
document.getElementById("ram-counter-span").innerHTML = "sur " + Math.round((args_parse.memory_limit_bytes / (1024 * 1024 * 1024)) * 10) / 10 + "Go";
|
||||
document.getElementById("net-counter-span").innerHTML = `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 20 20"
|
||||
fill="currentColor">
|
||||
@@ -662,78 +626,51 @@ if (url.searchParams.get("id")) {
|
||||
d="M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
${(Math.round(
|
||||
(args_parse.network.rx_bytes / 1024000) *
|
||||
100
|
||||
) /
|
||||
100) *
|
||||
8
|
||||
}Mb/s
|
||||
${(Math.round((args_parse.network.rx_bytes / 1024000) * 100) / 100) * 8}Mb/s
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
${(Math.round(
|
||||
(args_parse.network.tx_bytes / 1024000) *
|
||||
100
|
||||
) /
|
||||
100) *
|
||||
8
|
||||
}Mb/s`;
|
||||
${(Math.round((args_parse.network.tx_bytes / 1024000) * 100) / 100) * 8}Mb/s`;
|
||||
if (cpu_series.length > 14) {
|
||||
cpu_series.shift();
|
||||
}
|
||||
cpu_series.push(Math.round(args_parse.cpu_absolute * 100) / 100);
|
||||
cpu_chart.updateSeries([
|
||||
{
|
||||
name: "CPU",
|
||||
data: cpu_series,
|
||||
},
|
||||
]);
|
||||
cpu_chart.updateSeries([{
|
||||
name: "CPU",
|
||||
data: cpu_series,
|
||||
},]);
|
||||
|
||||
if (ram_series.length > 14) {
|
||||
ram_series.shift();
|
||||
}
|
||||
ram_series.push(
|
||||
Math.round((args_parse.memory_bytes / 1024000000) * 100) / 100
|
||||
Math.round((args_parse.memory_bytes / (1024 * 1024 * 1024)) * 100) / 100 + "Go"
|
||||
);
|
||||
ram_chart.updateSeries([
|
||||
{
|
||||
name: "RAM",
|
||||
data: ram_series,
|
||||
},
|
||||
]);
|
||||
ram_chart.updateSeries([{
|
||||
name: "RAM",
|
||||
data: ram_series,
|
||||
},]);
|
||||
|
||||
if (disk_series.length > 14) {
|
||||
disk_series.shift();
|
||||
}
|
||||
disk_series.push(
|
||||
Math.round((args_parse.disk_bytes / 1024000000) * 100) / 100
|
||||
Math.round((args_parse.disk_bytes / (1024 * 1024 * 1024)) * 100) / 100 + "Go"
|
||||
);
|
||||
disk_chart.updateSeries([
|
||||
{
|
||||
name: "Disque",
|
||||
data: disk_series,
|
||||
},
|
||||
]);
|
||||
disk_chart.updateSeries([{
|
||||
name: "Disque",
|
||||
data: disk_series,
|
||||
},]);
|
||||
|
||||
if (net_series.length > 14) {
|
||||
net_series.shift();
|
||||
}
|
||||
net_series.push(
|
||||
(Math.round(
|
||||
((args_parse.network.rx_bytes + args_parse.network.tx_bytes) /
|
||||
1024000) *
|
||||
100
|
||||
) /
|
||||
100) *
|
||||
8
|
||||
);
|
||||
net_chart.updateSeries([
|
||||
{
|
||||
name: "Réseau",
|
||||
data: net_series,
|
||||
},
|
||||
]);
|
||||
(Math.round(((args_parse.network.rx_bytes + args_parse.network.tx_bytes) / 1024000) * 100) / 100) * 8);
|
||||
net_chart.updateSeries([{
|
||||
name: "Réseau",
|
||||
data: net_series,
|
||||
},]);
|
||||
}
|
||||
if (data_parse.event == "console output") {
|
||||
term.writeUtf8(data_parse.args[0] + "\r\n");
|
||||
@@ -794,8 +731,8 @@ if (url.searchParams.get("id")) {
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// window.location.replace("/dashboard/errors/error500.html")
|
||||
window.location.replace("/dashboard/errors/error500.html")
|
||||
});
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
}
|
||||
@@ -15,24 +15,48 @@ async function deleteData(url = '', data = {}) {
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/services?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/services?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
list = ``
|
||||
for (var i = 0; i < json.data.length; i++) {
|
||||
statut = ''
|
||||
if (json.data[i].statut == "installing") { statut = '<span class="badge bg-primary">Installation...</span>' }
|
||||
if (json.data[i].statut == "active") { statut = '<span class="badge bg-success">Actif</span>' }
|
||||
if (json.data[i].statut == "suspended") { statut = '<span class="badge bg-danger">Suspendu</span>' }
|
||||
list = list + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
if (json2.error === false) {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/products?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json3) {
|
||||
if (json3.error === false) {
|
||||
owner_username = ''
|
||||
product_name = ''
|
||||
list = ``
|
||||
for (var i = 0; i < json.data.length; i++) {
|
||||
for (let ii = 0; ii < json2.users.length; ii++) {
|
||||
if (json2.users[ii].uuid == json.data[i].uuid) {
|
||||
owner_username = json2.users[ii].username
|
||||
}
|
||||
}
|
||||
for (let ii = 0; ii < json3.data.length; ii++) {
|
||||
if (json3.data[ii].id == json.data[i].product_id) {
|
||||
product_name = json3.data[ii].name
|
||||
}
|
||||
}
|
||||
statut = ''
|
||||
if (json.data[i].statut == "installing") { statut = '<span class="badge bg-primary">Installation...</span>' }
|
||||
if (json.data[i].statut == "active") { statut = '<span class="badge bg-success">Actif</span>' }
|
||||
if (json.data[i].statut == "suspended") { statut = '<span class="badge bg-danger">Suspendu</span>' }
|
||||
list = list + `
|
||||
<tr>
|
||||
<td>${json.data[i].id}</td>
|
||||
<td><a href="/dashboard/services/service-game.html?id=${json.data[i].id}">${json.data[i].name}</a></td>
|
||||
<td>${json.data[i].uuid}</td>
|
||||
<td>${json.data[i].product_id}</td>
|
||||
<td>${owner_username}</td>
|
||||
<td>${product_name}</td>
|
||||
<td>${json.data[i].price}€</td>
|
||||
<td>${statut}</td>
|
||||
<td>
|
||||
@@ -58,15 +82,23 @@ fetch(`https://api.mercurycloud.fr/api/services?uuid=${getCookie("uuid")}&token=
|
||||
</div>
|
||||
</td>
|
||||
</tr>`
|
||||
}
|
||||
document.getElementById("services-table").innerHTML = list
|
||||
}
|
||||
document.getElementById("services-table").innerHTML = list
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
|
||||
function delete_product(id) {
|
||||
deleteData(`https://api.mercurycloud.fr/api/services/${id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`).then(data => {
|
||||
deleteData(`https://dash.mercurycloud.fr:8000/api/services/${id}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`).then(data => {
|
||||
console.log(data)
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
|
||||
@@ -13,11 +13,9 @@ async function postData(url = '', data = {}) {
|
||||
|
||||
function connect() {
|
||||
let data = {
|
||||
'mail': document.getElementById("email").value,
|
||||
'password': document.getElementById("password").value
|
||||
}
|
||||
postData('https://api.mercurycloud.fr/api/users/login-user', data).then(data => {
|
||||
console.log(data)
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/users/${document.getElementById("email").value}/login`, data).then(data => {
|
||||
if (data.error == false) {
|
||||
document.cookie = `uuid=${data.uuid};max-age=604800; path=/;`
|
||||
document.cookie = `token=${data.token};max-age=604800; path=/;`
|
||||
|
||||
@@ -6,30 +6,30 @@ function getCookie(name) {
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/roles/roles-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (json) {
|
||||
var roles_select = `<option selected="" value="0">--</option>`
|
||||
for (let i = 0; i < json.roles.length; i++) {
|
||||
roles_select = roles_select + `<option value="${json.roles[i].id}">${json.roles[i].name}</option>`
|
||||
}
|
||||
document.getElementById("roles-select").innerHTML = roles_select
|
||||
})
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/roles?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (json) {
|
||||
var roles_select = `<option selected="" value="0">--</option>`
|
||||
for (let i = 0; i < json.roles.length; i++) {
|
||||
roles_select = roles_select + `<option value="${json.roles[i].id}">${json.roles[i].name}</option>`
|
||||
}
|
||||
document.getElementById("roles-select").innerHTML = roles_select
|
||||
})
|
||||
|
||||
function create_user() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("first-name").value.length > 2) {
|
||||
if (document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -40,7 +40,7 @@ function create_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("roles-select").value != 0) {
|
||||
if (document.getElementById("roles-select").value != 0) {
|
||||
document.getElementById("roles-select").classList.remove('is-invalid')
|
||||
document.getElementById("roles-select").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -51,27 +51,11 @@ function create_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("username-input").value.length > 2) {
|
||||
fetch(`https://api.mercurycloud.fr/api/users/username-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&username=${document.getElementById("username-input").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if(myJson.exist == false) {
|
||||
document.getElementById("username-input").classList.remove('is-invalid')
|
||||
document.getElementById("username-input").classList.add('is-valid')
|
||||
document.getElementById("username-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
no++
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
document.getElementById("username-input").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("username-toast").innerHTML = `<div class="toast-body">Le nom d'utilisateur ${document.getElementById("username-input").value} éxiste déja !</div>`
|
||||
}
|
||||
}
|
||||
})
|
||||
if (document.getElementById("username-input").value.length > 2) {
|
||||
document.getElementById("username-input").classList.remove('is-invalid')
|
||||
document.getElementById("username-input").classList.add('is-valid')
|
||||
document.getElementById("username-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
@@ -80,7 +64,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("last-name").value.length > 2) {
|
||||
if (document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -92,27 +76,10 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("mail").value.length > 2) {
|
||||
fetch(`https://api.mercurycloud.fr/api/users/mail-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&mail=${document.getElementById("mail").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if(myJson.exist == false) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
document.getElementById("mail-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("mail-toast").innerHTML = `<div class="toast-body">L'adresse mail ${document.getElementById("mail").value} est déja utilisé !</div>`
|
||||
}
|
||||
no++
|
||||
}
|
||||
})
|
||||
if (document.getElementById("mail").value.length > 2) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
document.getElementById("mail-toast").innerHTML = ``
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
@@ -120,8 +87,8 @@ function create_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("password").value.length >= 8) {
|
||||
|
||||
if (document.getElementById("password").value.length >= 8) {
|
||||
document.getElementById("password").classList.remove('is-invalid')
|
||||
document.getElementById("password").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -133,7 +100,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
if (document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -145,7 +112,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("address-1").value.length > 2) {
|
||||
if (document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -157,7 +124,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("city").value.length > 2) {
|
||||
if (document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -169,7 +136,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
if (document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -181,7 +148,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("country").value > 0) {
|
||||
if (document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -193,7 +160,7 @@ function create_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("state").value.length > 2) {
|
||||
if (document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -202,9 +169,10 @@ function create_user() {
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
no++
|
||||
}
|
||||
}
|
||||
console.log("ok : " + ok + " no : " + no)
|
||||
|
||||
if(ok == 10 && no == 0) {
|
||||
if (ok == 11 && no == 0) {
|
||||
body = {
|
||||
"username": document.getElementById("username-input").value,
|
||||
"mail": document.getElementById("mail").value,
|
||||
@@ -220,18 +188,26 @@ function create_user() {
|
||||
"country": document.getElementById("country").value,
|
||||
"state": document.getElementById("state").value
|
||||
}
|
||||
postData(`https://api.mercurycloud.fr/api/users/create-user?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
postData(`https://dash.mercurycloud.fr:8000/api/users?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.replace("/dashboard/users/users-list.html")
|
||||
} else {
|
||||
console.log('[ERROR] Code : ' + data.code + ' Message : ' + data.msg);
|
||||
if (data.code == 403) {
|
||||
location.href = "../errors/error403.html"
|
||||
console.log('[ERROR] Message : ' + data.msg);
|
||||
if (data.msg == "Mail already used") {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
document.getElementById("mail-toast").innerHTML = `<div class="toast-body">L'adresse mail ${document.getElementById("mail").value} est déja utilisé !</div>`
|
||||
} else if (data.msg == "Username already exist") {
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
document.getElementById("username-input").value = ""
|
||||
document.getElementById("username-toast").innerHTML = `<div class="toast-body">Le nom d'utilisateur ${document.getElementById("username-input").value} éxiste déja !</div>`
|
||||
} else {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,13 @@ function getCookie(name) {
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
}
|
||||
|
||||
async function postData(url = '', data = {}) {
|
||||
async function putData(url = '', data = {}) {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
return response.json()
|
||||
}
|
||||
@@ -18,47 +18,46 @@ async function postData(url = '', data = {}) {
|
||||
var uuid_string = ""
|
||||
const url = new URL(window.location.href);
|
||||
if (url.searchParams.get('id')) {
|
||||
fetch(`https://api.mercurycloud.fr/api/users/user-info?uuid=${getCookie("uuid")}&token=${getCookie("token")}&id=${url.searchParams.get('id')}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
console.log(json)
|
||||
if (json.error === false) {
|
||||
if (json.data.uuid == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users/${url.searchParams.get('id')}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
if (json.data.uuid == 404) {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
} else {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/roles?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (json1) {
|
||||
var roles_select = `<option selected="" value="0">--</option>`
|
||||
for (let i = 0; i < json1.roles.length; i++) {
|
||||
roles_select = roles_select + `<option value="${json1.roles[i].id}">${json1.roles[i].name}</option>`
|
||||
}
|
||||
document.getElementById("roles-select").innerHTML = roles_select
|
||||
document.getElementById('roles-select').value = json.data.role
|
||||
})
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition de ${json.data.username}`
|
||||
document.getElementById("username_title").innerHTML = `Edition de ${json.data.username}`
|
||||
document.getElementById('username-input').value = json.data.username
|
||||
document.getElementById('mail').value = json.data.mail
|
||||
document.getElementById('password').value = "Q@4%738r$7"
|
||||
document.getElementById('first-name').value = json.data.first_name
|
||||
document.getElementById('last-name').value = json.data.last_name
|
||||
document.getElementById('tel').value = json.data.tel
|
||||
document.getElementById('address-1').value = json.data.address_1
|
||||
document.getElementById('address-2').value = json.data.address_2
|
||||
document.getElementById('city').value = json.data.city
|
||||
document.getElementById('zip').value = json.data.zip
|
||||
document.getElementById('country').value = json.data.country
|
||||
document.getElementById('state').value = json.data.state
|
||||
uuid_string = json.data.uuid
|
||||
}
|
||||
} else {
|
||||
fetch(`https://api.mercurycloud.fr/api/roles/roles-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
}).then(function (json1) {
|
||||
var roles_select = `<option selected="" value="0">--</option>`
|
||||
for (let i = 0; i < json1.roles.length; i++) {
|
||||
roles_select = roles_select + `<option value="${json1.roles[i].id}">${json1.roles[i].name}</option>`
|
||||
}
|
||||
document.getElementById("roles-select").innerHTML = roles_select
|
||||
document.getElementById('roles-select').value = json.data.role
|
||||
})
|
||||
document.getElementById("title").innerHTML = `Mercury Cloud | Edition de ${json.data.username}`
|
||||
document.getElementById("username_title").innerHTML = `Edition de ${json.data.username}`
|
||||
document.getElementById('username-input').value = json.data.username
|
||||
document.getElementById('mail').value = json.data.mail
|
||||
document.getElementById('password').value = "Q@4%738r$7"
|
||||
document.getElementById('first-name').value = json.data.first_name
|
||||
document.getElementById('last-name').value = json.data.last_name
|
||||
document.getElementById('tel').value = json.data.tel
|
||||
document.getElementById('address-1').value = json.data.address_1
|
||||
document.getElementById('address-2').value = json.data.address_2
|
||||
document.getElementById('city').value = json.data.city
|
||||
document.getElementById('zip').value = json.data.zip
|
||||
document.getElementById('country').value = json.data.country
|
||||
document.getElementById('state').value = json.data.state
|
||||
uuid_string = json.data.uuid
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
} else {
|
||||
// window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error404.html");
|
||||
}
|
||||
@@ -66,7 +65,7 @@ if (url.searchParams.get('id')) {
|
||||
function save_user() {
|
||||
var ok = 0
|
||||
var no = 0
|
||||
if(document.getElementById("first-name").value.length > 2) {
|
||||
if (document.getElementById("first-name").value.length > 2) {
|
||||
document.getElementById("first-name").classList.remove('is-invalid')
|
||||
document.getElementById("first-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -77,7 +76,7 @@ function save_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("roles-select").value != 0) {
|
||||
if (document.getElementById("roles-select").value != 0) {
|
||||
document.getElementById("roles-select").classList.remove('is-invalid')
|
||||
document.getElementById("roles-select").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -88,27 +87,27 @@ function save_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
if(document.getElementById("username-input").value.length > 2) {
|
||||
fetch(`https://api.mercurycloud.fr/api/users/username-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&username=${document.getElementById("username-input").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if(myJson.exist == false) {
|
||||
document.getElementById("username-input").classList.remove('is-invalid')
|
||||
document.getElementById("username-input").classList.add('is-valid')
|
||||
document.getElementById("username-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
no++
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
document.getElementById("username-input").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("username-toast").innerHTML = `<div class="toast-body">Le nom d'utilisateur ${document.getElementById("username-input").value} éxiste déja !</div>`
|
||||
if (document.getElementById("username-input").value.length > 2) {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users/username-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&username=${document.getElementById("username-input").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if (myJson.exist == false) {
|
||||
document.getElementById("username-input").classList.remove('is-invalid')
|
||||
document.getElementById("username-input").classList.add('is-valid')
|
||||
document.getElementById("username-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
no++
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
document.getElementById("username-input").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("username-toast").innerHTML = `<div class="toast-body">Le nom d'utilisateur ${document.getElementById("username-input").value} éxiste déja !</div>`
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
document.getElementById("username-input").classList.remove('is-valid')
|
||||
document.getElementById("username-input").classList.add('is-invalid')
|
||||
@@ -117,7 +116,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("last-name").value.length > 2) {
|
||||
if (document.getElementById("last-name").value.length > 2) {
|
||||
document.getElementById("last-name").classList.remove('is-invalid')
|
||||
document.getElementById("last-name").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -129,27 +128,27 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("mail").value.length > 2) {
|
||||
fetch(`https://api.mercurycloud.fr/api/users/mail-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&mail=${document.getElementById("mail").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if(myJson.exist == false) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
document.getElementById("mail-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("mail-toast").innerHTML = `<div class="toast-body">L'adresse mail ${document.getElementById("mail").value} est déja utilisé !</div>`
|
||||
if (document.getElementById("mail").value.length > 2) {
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users/mail-exist?uuid=${getCookie("uuid")}&token=${getCookie("token")}&mail=${document.getElementById("mail").value}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (myJson) {
|
||||
if (myJson.exist == false) {
|
||||
document.getElementById("mail").classList.remove('is-invalid')
|
||||
document.getElementById("mail").classList.add('is-valid')
|
||||
document.getElementById("mail-toast").innerHTML = ``
|
||||
ok++
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
document.getElementById("mail").value = ""
|
||||
if (myJson.error != true) {
|
||||
document.getElementById("mail-toast").innerHTML = `<div class="toast-body">L'adresse mail ${document.getElementById("mail").value} est déja utilisé !</div>`
|
||||
}
|
||||
no++
|
||||
}
|
||||
no++
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
document.getElementById("mail").classList.remove('is-valid')
|
||||
document.getElementById("mail").classList.add('is-invalid')
|
||||
@@ -157,8 +156,8 @@ function save_user() {
|
||||
no++
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("password").value.length >= 8) {
|
||||
|
||||
if (document.getElementById("password").value.length >= 8) {
|
||||
document.getElementById("password").classList.remove('is-invalid')
|
||||
document.getElementById("password").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -170,7 +169,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
if (document.getElementById("tel").value.length == 12 && document.getElementById("tel").value.match(/[0-9]/gi) != null && document.getElementById("tel").value.includes("+", 0) == true) {
|
||||
document.getElementById("tel").classList.remove('is-invalid')
|
||||
document.getElementById("tel").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -182,7 +181,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("address-1").value.length > 2) {
|
||||
if (document.getElementById("address-1").value.length > 2) {
|
||||
document.getElementById("address-1").classList.remove('is-invalid')
|
||||
document.getElementById("address-1").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -194,7 +193,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("city").value.length > 2) {
|
||||
if (document.getElementById("city").value.length > 2) {
|
||||
document.getElementById("city").classList.remove('is-invalid')
|
||||
document.getElementById("city").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -206,7 +205,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
if (document.getElementById("zip").value.length == 5 && /^\d+$/.test(document.getElementById("zip").value) == true) {
|
||||
document.getElementById("zip").classList.remove('is-invalid')
|
||||
document.getElementById("zip").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -218,7 +217,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("country").value > 0) {
|
||||
if (document.getElementById("country").value > 0) {
|
||||
document.getElementById("country").classList.remove('is-invalid')
|
||||
document.getElementById("country").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -230,7 +229,7 @@ function save_user() {
|
||||
}
|
||||
|
||||
|
||||
if(document.getElementById("state").value.length > 2) {
|
||||
if (document.getElementById("state").value.length > 2) {
|
||||
document.getElementById("state").classList.remove('is-invalid')
|
||||
document.getElementById("state").classList.add('is-valid')
|
||||
ok++
|
||||
@@ -239,11 +238,10 @@ function save_user() {
|
||||
document.getElementById("state").classList.add('is-invalid')
|
||||
document.getElementById("state").value = ""
|
||||
no++
|
||||
}
|
||||
}
|
||||
|
||||
if(ok == 10 && no == 0) {
|
||||
if (ok == 10 && no == 0) {
|
||||
body = {
|
||||
"uuid": uuid_string,
|
||||
"username": document.getElementById("username-input").value,
|
||||
"role": document.getElementById("roles-select").value,
|
||||
"mail": document.getElementById("mail").value,
|
||||
@@ -258,7 +256,7 @@ function save_user() {
|
||||
"country": document.getElementById("country").value,
|
||||
"state": document.getElementById("state").value
|
||||
}
|
||||
postData(`https://api.mercurycloud.fr/api/users/edit-user?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
putData(`https://dash.mercurycloud.fr:8000/api/users/${uuid_string}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, body).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
} else {
|
||||
@@ -269,7 +267,7 @@ function save_user() {
|
||||
location.href = "../errors/error500.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,20 +15,32 @@ async function deleteData(url = '', data = {}) {
|
||||
return response.json()
|
||||
}
|
||||
|
||||
fetch(`https://api.mercurycloud.fr/api/users/users-list?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/users?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json) {
|
||||
if (json.error === false) {
|
||||
list = ``
|
||||
for (var i = 0; i < json.users.length; i++) {
|
||||
list = list + `
|
||||
fetch(`https://dash.mercurycloud.fr:8000/api/roles?uuid=${getCookie("uuid")}&token=${getCookie("token")}`)
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (json2) {
|
||||
if (json2.error === false) {
|
||||
list = ``
|
||||
role_name = ''
|
||||
for (let i = 0; i < json.users.length; i++) {
|
||||
for (let ii = 0; ii < json2.roles.length; ii++) {
|
||||
if (json2.roles[ii].id == json.users[i].role) {
|
||||
role_name = json2.roles[ii].name
|
||||
}
|
||||
}
|
||||
list = list + `
|
||||
<tr>
|
||||
<td>${json.users[i].uuid}</td>
|
||||
<td>${json.users[i].username}</td>
|
||||
<td>${json.users[i].mail}</td>
|
||||
<td>${json.users[i].role}</td>
|
||||
<td>${role_name}</td>
|
||||
<td><span class="badge bg-primary">Actif</span></td>
|
||||
<td>
|
||||
<div class="flex align-items-center list-user-action">
|
||||
@@ -52,16 +64,19 @@ fetch(`https://api.mercurycloud.fr/api/users/users-list?uuid=${getCookie("uuid")
|
||||
</div>
|
||||
</td>
|
||||
</tr>`
|
||||
}
|
||||
document.getElementById("users-table").innerHTML = list
|
||||
}
|
||||
document.getElementById("users-table").innerHTML = list
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
window.location.replace("/dashboard/errors/error500.html");
|
||||
}
|
||||
})
|
||||
|
||||
function delete_product(uuid) {
|
||||
deleteData(`https://api.mercurycloud.fr/api/users/delete-user?uuid=${getCookie("uuid")}&token=${getCookie("token")}`, { "user_uuid": uuid }).then(data => {
|
||||
console.log(data)
|
||||
deleteData(`https://dash.mercurycloud.fr:8000/api/users/${uuid}?uuid=${getCookie("uuid")}&token=${getCookie("token")}`).then(data => {
|
||||
if (data.error == false) {
|
||||
window.location.reload()
|
||||
} else {
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="statut">Status *</label>
|
||||
<select id="statut" class="form-select mb-3 shadow-none">
|
||||
<option value="ative">Actif</option>
|
||||
<option value="active">Actif</option>
|
||||
<option value="installing">Installation...</option>
|
||||
<option value="suspended">Suspendu</option>
|
||||
</select>
|
||||
|
||||
@@ -486,8 +486,8 @@
|
||||
<tr class="ligth">
|
||||
<th>ID</th>
|
||||
<th>Nom</th>
|
||||
<th>UUID</th>
|
||||
<th>ID du produit</th>
|
||||
<th>Propriétaire</th>
|
||||
<th>Produit</th>
|
||||
<th>Prix</th>
|
||||
<th>Statut</th>
|
||||
<th>Actions</th>
|
||||
|
||||
@@ -486,8 +486,8 @@
|
||||
<tr class="ligth">
|
||||
<th>ID</th>
|
||||
<th>Nom</th>
|
||||
<th>UUID</th>
|
||||
<th>ID du produit</th>
|
||||
<th>Propriétaire</th>
|
||||
<th>Produit</th>
|
||||
<th>Prix</th>
|
||||
<th>Statut</th>
|
||||
<th>Actions</th>
|
||||
|
||||
Reference in New Issue
Block a user