mirror of
https://github.com/thelittlerocket/zero-ui.git
synced 2025-01-01 11:45:03 +08:00
85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
const express = require("express");
|
|
const router = express.Router({ mergeParams: true });
|
|
|
|
const auth = require("../services/auth");
|
|
const member = require("../services/member");
|
|
|
|
const api = require("../utils/controller-api");
|
|
|
|
// get all members
|
|
router.get("/", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
api
|
|
.get("controller/network/" + nwid + "/member")
|
|
.then(async function (controllerRes) {
|
|
const mids = Object.keys(controllerRes.data);
|
|
const data = await member.getMembersData(nwid, mids);
|
|
res.send(data);
|
|
})
|
|
.catch(function () {
|
|
res.status(404).send({ error: "Network not found" });
|
|
});
|
|
});
|
|
|
|
// get member
|
|
router.get("/:mid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
const mid = req.params.mid;
|
|
const data = await member.getMembersData(nwid, [mid]);
|
|
if (data[0]) {
|
|
res.send(data[0]);
|
|
} else {
|
|
res.status(404).send({ error: "Member not found" });
|
|
}
|
|
});
|
|
|
|
// update member
|
|
router.post("/:mid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
const mid = req.params.mid;
|
|
member.updateMemberAdditionalData(nwid, mid, req.body);
|
|
if (req.body.config) {
|
|
api
|
|
.post("controller/network/" + nwid + "/member/" + mid, req.body.config)
|
|
.then(async function () {
|
|
const data = await member.getMembersData(nwid, [mid]);
|
|
res.send(data[0]);
|
|
})
|
|
.catch(function (err) {
|
|
res.status(500).send({ error: err.message });
|
|
});
|
|
} else {
|
|
const data = await member.getMembersData(nwid, [mid]);
|
|
res.send(data[0]);
|
|
}
|
|
});
|
|
|
|
// delete member
|
|
router.delete("/:mid", auth.isAuthorized, async function (req, res) {
|
|
const nwid = req.params.nwid;
|
|
const mid = req.params.mid;
|
|
member.deleteMemberAdditionalData(nwid, mid);
|
|
api
|
|
.delete("controller/network/" + nwid + "/member/" + mid)
|
|
.then(function () {})
|
|
.catch(function (err) {
|
|
res.status(500).send({ error: err.message });
|
|
});
|
|
// Need this to fix ZT controller bug https://github.com/zerotier/ZeroTierOne/issues/859
|
|
const defaultConfig = {
|
|
authorized: false,
|
|
ipAssignments: [],
|
|
capabilities: [],
|
|
tags: [],
|
|
};
|
|
api
|
|
.post("controller/network/" + nwid + "/member/" + mid, defaultConfig)
|
|
.then(function (controllerRes) {
|
|
res.status(controllerRes.status).send("");
|
|
})
|
|
.catch(function (err) {
|
|
res.status(500).send({ error: err.message });
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|