UNPKG

lightsword

Version:

LightSword Secure SOCKS5 Proxy / iOS VPN Server

94 lines (74 loc) 2.79 kB
//----------------------------------- // Copyright(c) 2015 Neko //----------------------------------- 'use strict' import { App } from '../app'; import { LsServer } from '../server'; import * as express from 'express'; import * as kinq from 'kinq'; export function getUserCount(req: express.Request, res: express.Response) { res.json({ count: App.Users.size }); } export function getUsers(req: express.Request, res: express.Response) { let users = App.Users.select(item => { return { port: item[1].port, cipherAlgorithm: item[1].cipherAlgorithm, expireDate: item[1].expireDate, speed: item[1].speed } } ).toArray(); res.json(users); } export function addUser(req: express.Request, res: express.Response) { var body = req.body; let success = Array.isArray(body) ? App.addUsers(body) : App.addUser(body); let statusCode = success ? 200 : 400; let data = { success, msg: success ? undefined : `Port number: ${body.port} is used or access denied` }; res.status(statusCode).json(data); } export function updateUser(req: express.Request, res: express.Response) { var body = req.body; let success = App.updateUser(Number(req.params.port), body); let statusCode = success ? 200 : 404; let data = { success, msg: success ? undefined : 'User Not Found' }; res.status(statusCode).json(data); } export function deleteUser(req: express.Request, res: express.Response) { var port = Number(req.params.port); let success = App.removeUser(port); let statusCode = success ? 200 : 404; let data = { success, msg: success ? undefined : 'User Not Found' }; res.status(404).json(data); } export function getBlacklist(req: express.Request, res: express.Response) { let data = kinq.toLinqable(App.Users.values()).select(server => server.blackIPs).flatten(false).toArray(); res.status(data.length > 0 ? 200 : 404).json(data); } export function getBlacklistCount(req: express.Request, res: express.Response) { let count = kinq.toLinqable(App.Users.values()).select(s => s.blackIPs.size).sum(); res.json({ count }); } export function getServerOfPort(req: express.Request, res: express.Response, next: Function) { let server = kinq.toLinqable(App.Users.values()).singleOrDefault(s => s.port === Number(req.params.port), undefined); if (!server) { return res.status(404).json({ success: false, msg: 'User Not Found' }); } req.user = server; next(); } export function getBlacklistOfPort(req: express.Request, res: express.Response) { let server = <LsServer>req.user; res.json(server.blackIPs.toArray()); } export function getBlacklistCountOfPort(req: express.Request, res: express.Response) { let server = <LsServer>req.user; res.json({ count: server.blackIPs.size }); }