mirror of
https://github.com/thelittlerocket/zero-ui.git
synced 2025-01-01 11:45:03 +08:00
90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
const express = require("express");
|
|
const router = express.Router();
|
|
|
|
const auth = require("../services/auth");
|
|
const network = require("../services/network");
|
|
|
|
const api = require("../utils/controller-api");
|
|
const constants = require("../utils/constants");
|
|
const getZTAddress = require("../utils/zt-address");
|
|
|
|
let ZT_ADDRESS = null;
|
|
getZTAddress().then(function (address) {
|
|
ZT_ADDRESS = address;
|
|
});
|
|
|
|
// get all networks
|
|
router.get("/", auth.isAuthorized, async function (req, res) {
|
|
api.get("controller/network").then(async function (controllerRes) {
|
|
const nwids = controllerRes.data;
|
|
const data = await network.getNetworksData(nwids);
|
|
res.send(data);
|
|
});
|
|
});
|
|
|
|
// create new network
|
|
router.post("/", auth.isAuthorized, async function (req, res) {
|
|
let reqData = req.body;
|
|
if (reqData.config) {
|
|
const config = reqData.config;
|
|
delete reqData.config;
|
|
reqData = config;
|
|
reqData.rules = JSON.parse(constants.defaultRules);
|
|
} else {
|
|
res.status(400).send({ error: "Bad request" });
|
|
}
|
|
api
|
|
.post("controller/network/" + ZT_ADDRESS + "______", reqData)
|
|
.then(async function (controllerRes) {
|
|
await network.createNetworkAdditionalData(controllerRes.data);
|
|
const data = await network.getNetworksData([controllerRes.data.id]);
|
|
res.send(data[0]);
|
|
});
|
|
});
|
|
|
|
// get network
|
|
router.get("/:nwid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
const data = await network.getNetworksData([nwid]);
|
|
if (data[0]) {
|
|
res.send(data[0]);
|
|
} else {
|
|
res.status(404).send({ error: "Network not found" });
|
|
}
|
|
});
|
|
|
|
// update network
|
|
router.post("/:nwid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
network.updateNetworkAdditionalData(nwid, req.body);
|
|
if (req.body.config) {
|
|
api
|
|
.post("controller/network/" + nwid, req.body.config)
|
|
.then(async function () {
|
|
const data = await network.getNetworksData([nwid]);
|
|
res.send(data[0]);
|
|
})
|
|
.catch(function (err) {
|
|
res.status(500).send({ error: err.message });
|
|
});
|
|
} else {
|
|
const data = await network.getNetworksData([nwid]);
|
|
res.send(data[0]);
|
|
}
|
|
});
|
|
|
|
// delete network
|
|
router.delete("/:nwid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
network.deleteNetworkAdditionalData(nwid);
|
|
api
|
|
.delete("controller/network/" + nwid)
|
|
.then(function (controllerRes) {
|
|
res.status(controllerRes.status).send("");
|
|
})
|
|
.catch(function (err) {
|
|
res.status(500).send({ error: err.message });
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|