From ab96ae9413cbc9871ad97c304b6c622cdb1f7b69 Mon Sep 17 00:00:00 2001 From: makabaka Date: Mon, 9 Oct 2023 21:49:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=84=E5=88=99=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E4=B8=8E=E5=8D=8F=E8=AE=AE=E8=BD=AC=E6=8D=A2API?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/restful/index.js | 2 ++ backend/src/restful/parser.js | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 backend/src/restful/parser.js diff --git a/backend/src/restful/index.js b/backend/src/restful/index.js index c819fab..502a886 100644 --- a/backend/src/restful/index.js +++ b/backend/src/restful/index.js @@ -16,6 +16,7 @@ import registerPreviewRoutes from './preview'; import registerSortingRoutes from './sort'; import registerMiscRoutes from './miscs'; import registerNodeInfoRoutes from './node-info'; +import registerParserRoutes from './parser'; export default function serve() { let port; @@ -38,6 +39,7 @@ export default function serve() { registerSyncRoutes($app); registerNodeInfoRoutes($app); registerMiscRoutes($app); + registerParserRoutes($app); $app.start(); diff --git a/backend/src/restful/parser.js b/backend/src/restful/parser.js new file mode 100644 index 0000000..fc8233e --- /dev/null +++ b/backend/src/restful/parser.js @@ -0,0 +1,46 @@ +import { success, failed } from '@/restful/response'; +import { ProxyUtils } from '@/core/proxy-utils'; +import { RuleUtils } from '@/core/rule-utils'; + +export default function register($app) { + $app.route('/api/proxy/parse').post(proxy_parser); + $app.route('/api/rule/parse').post(rule_parser); +} +/*** + * 代理服务器协议转换接口。 + * 请求方法为POST,数据为json。需要提供data和client字段。 + * data: string, 协议数据,每行一个或者是clash + * client: string, 目标平台名称,见backend/src/core/proxy-utils/producers/index.js + * + */ +function proxy_parser(req, res) { + const { data, client } = req.body; + var result = {}; + try { + var proxies = ProxyUtils.parse(data); + var par_res = ProxyUtils.produce(proxies, client); + result['par_res'] = par_res; + } catch (err) { + failed(res, err); + } + success(res, result); +} +/** + * 规则转换接口。 + * 请求方法为POST,数据为json。需要提供data和client字段。 + * data: string, 多行规则字符串 + * client: string, 目标平台名称,具体见backend/src/core/rule-utils/producers.js + */ +function rule_parser(req, res) { + const { data, client } = req.body; + var result = {}; + try { + const rules = RuleUtils.parse(data); + var par_res = RuleUtils.produce(rules, client); + result['par_res'] = par_res; + } catch (err) { + failed(res, err); + } + + success(res, result); +}