shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
104 lines (96 loc) • 2.87 kB
JavaScript
const group = appRequire('plugins/group/index');
const knex = appRequire('init/knex').knex;
exports.getGroups = (req, res, next) => {
group.getGroupsAndUserNumber().then(success => {
res.send(success);
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.getOneGroup = (req, res, next) => {
const id = +req.params.id;
group.getOneGroup(id).then(success => {
res.send(success);
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.addGroup = async (req, res) => {
try {
const name = req.body.name;
const comment = req.body.comment;
const order = req.body.order ? JSON.stringify(req.body.order) : null;
const multiAccount = !!req.body.multiAccount;
const notices = req.body.notices;
const [ id ] = await group.addGroup(name, comment, order, multiAccount);
const ids = await knex('notice').where({ group: 1 }).then(success => success.map(m => m.id));
for(const noticeId of notices) {
if(ids.includes(noticeId)) {
await knex('notice_group').insert({
groupId: id,
noticeId,
});
}
}
res.send('success');
} catch(err) {
console.log(err);
res.status(403).end();
}
};
exports.editGroup = async (req, res) => {
try {
const id = +req.params.id;
const name = req.body.name;
const comment = req.body.comment;
const order = req.body.order ? JSON.stringify(req.body.order) : null;
const multiAccount = !!req.body.multiAccount;
const notices = req.body.notices;
await group.editGroup(id, name, comment, order, multiAccount);
const ids = await knex('notice').where({ group: 1 }).then(success => success.map(m => m.id));
const currentIds = await knex('notice_group').where({
groupId: id,
}).then(success => success.map(m => m.noticeId));
for(const noticeId of notices) {
if(!currentIds.includes(noticeId) && ids.includes(noticeId)) {
await knex('notice_group').insert({
groupId: id,
noticeId,
});
}
}
for(noticeId of currentIds) {
if(!notices.includes(noticeId)) {
await knex('notice_group').delete().where({
groupId: id,
noticeId,
});
}
}
res.send('success');
} catch(err) {
console.log(err);
res.status(403).end();
}
};
exports.deleteGroup = (req, res, next) => {
const id = +req.params.id;
group.deleteGroup(id).then(success => {
res.send('success');
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.setUserGroup = (req, res, next) => {
const groupId = +req.params.groupId;
const userId = +req.params.userId;
group.setUserGroup(groupId, userId).then(success => {
res.send('success');
}).catch(err => {
console.log(err);
res.status(403).end();
});
};