surgio 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/bin/dev +0 -0
  2. package/package.json +69 -75
  3. package/build/base-command.d.ts +0 -20
  4. package/build/base-command.js +0 -75
  5. package/build/base-command.js.map +0 -1
  6. package/build/commands/check.d.ts +0 -10
  7. package/build/commands/check.js +0 -87
  8. package/build/commands/check.js.map +0 -1
  9. package/build/commands/clean-cache.d.ts +0 -6
  10. package/build/commands/clean-cache.js +0 -28
  11. package/build/commands/clean-cache.js.map +0 -1
  12. package/build/commands/doctor.d.ts +0 -6
  13. package/build/commands/doctor.js +0 -20
  14. package/build/commands/doctor.js.map +0 -1
  15. package/build/commands/generate.d.ts +0 -7
  16. package/build/commands/generate.js +0 -94
  17. package/build/commands/generate.js.map +0 -1
  18. package/build/commands/lint.d.ts +0 -6
  19. package/build/commands/lint.js +0 -37
  20. package/build/commands/lint.js.map +0 -1
  21. package/build/commands/new.d.ts +0 -6
  22. package/build/commands/new.js +0 -37
  23. package/build/commands/new.js.map +0 -1
  24. package/build/commands/subscriptions.d.ts +0 -7
  25. package/build/commands/subscriptions.js +0 -95
  26. package/build/commands/subscriptions.js.map +0 -1
  27. package/build/commands/upload.d.ts +0 -6
  28. package/build/commands/upload.js +0 -91
  29. package/build/commands/upload.js.map +0 -1
  30. package/build/config.d.ts +0 -6
  31. package/build/config.js +0 -156
  32. package/build/config.js.map +0 -1
  33. package/build/configurables.d.ts +0 -88
  34. package/build/configurables.js +0 -52
  35. package/build/configurables.js.map +0 -1
  36. package/build/constant/constant.d.ts +0 -36
  37. package/build/constant/constant.js +0 -160
  38. package/build/constant/constant.js.map +0 -1
  39. package/build/constant/env.d.ts +0 -9
  40. package/build/constant/env.js +0 -13
  41. package/build/constant/env.js.map +0 -1
  42. package/build/constant/error.d.ts +0 -1
  43. package/build/constant/error.js +0 -5
  44. package/build/constant/error.js.map +0 -1
  45. package/build/constant/index.d.ts +0 -3
  46. package/build/constant/index.js +0 -20
  47. package/build/constant/index.js.map +0 -1
  48. package/build/filters/classes.d.ts +0 -13
  49. package/build/filters/classes.js +0 -42
  50. package/build/filters/classes.js.map +0 -1
  51. package/build/filters/filters.d.ts +0 -25
  52. package/build/filters/filters.js +0 -107
  53. package/build/filters/filters.js.map +0 -1
  54. package/build/filters/index.d.ts +0 -2
  55. package/build/filters/index.js +0 -32
  56. package/build/filters/index.js.map +0 -1
  57. package/build/filters/utils.d.ts +0 -16
  58. package/build/filters/utils.js +0 -159
  59. package/build/filters/utils.js.map +0 -1
  60. package/build/generator/artifact.d.ts +0 -142
  61. package/build/generator/artifact.js +0 -370
  62. package/build/generator/artifact.js.map +0 -1
  63. package/build/generator/index.d.ts +0 -3
  64. package/build/generator/index.js +0 -25
  65. package/build/generator/index.js.map +0 -1
  66. package/build/generator/json-template.d.ts +0 -11
  67. package/build/generator/json-template.js +0 -66
  68. package/build/generator/json-template.js.map +0 -1
  69. package/build/generator/template.d.ts +0 -8
  70. package/build/generator/template.js +0 -234
  71. package/build/generator/template.js.map +0 -1
  72. package/build/hooks/init.d.ts +0 -3
  73. package/build/hooks/init.js +0 -33
  74. package/build/hooks/init.js.map +0 -1
  75. package/build/index.d.ts +0 -85
  76. package/build/index.js +0 -64
  77. package/build/index.js.map +0 -1
  78. package/build/internal.d.ts +0 -5
  79. package/build/internal.js +0 -25
  80. package/build/internal.js.map +0 -1
  81. package/build/misc/deprecation.d.ts +0 -0
  82. package/build/misc/deprecation.js +0 -2
  83. package/build/misc/deprecation.js.map +0 -1
  84. package/build/misc/flag_cn.d.ts +0 -56
  85. package/build/misc/flag_cn.js +0 -154
  86. package/build/misc/flag_cn.js.map +0 -1
  87. package/build/provider/BlackSSLProvider.d.ts +0 -11
  88. package/build/provider/BlackSSLProvider.js +0 -93
  89. package/build/provider/BlackSSLProvider.js.map +0 -1
  90. package/build/provider/ClashProvider.d.ts +0 -24
  91. package/build/provider/ClashProvider.js +0 -476
  92. package/build/provider/ClashProvider.js.map +0 -1
  93. package/build/provider/CustomProvider.d.ts +0 -10
  94. package/build/provider/CustomProvider.js +0 -144
  95. package/build/provider/CustomProvider.js.map +0 -1
  96. package/build/provider/Provider.d.ts +0 -17
  97. package/build/provider/Provider.js +0 -111
  98. package/build/provider/Provider.js.map +0 -1
  99. package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +0 -11
  100. package/build/provider/ShadowsocksJsonSubscribeProvider.js +0 -86
  101. package/build/provider/ShadowsocksJsonSubscribeProvider.js.map +0 -1
  102. package/build/provider/ShadowsocksSubscribeProvider.d.ts +0 -18
  103. package/build/provider/ShadowsocksSubscribeProvider.js +0 -84
  104. package/build/provider/ShadowsocksSubscribeProvider.js.map +0 -1
  105. package/build/provider/ShadowsocksrSubscribeProvider.d.ts +0 -15
  106. package/build/provider/ShadowsocksrSubscribeProvider.js +0 -93
  107. package/build/provider/ShadowsocksrSubscribeProvider.js.map +0 -1
  108. package/build/provider/SsdProvider.d.ts +0 -39
  109. package/build/provider/SsdProvider.js +0 -138
  110. package/build/provider/SsdProvider.js.map +0 -1
  111. package/build/provider/TrojanProvider.d.ts +0 -24
  112. package/build/provider/TrojanProvider.js +0 -98
  113. package/build/provider/TrojanProvider.js.map +0 -1
  114. package/build/provider/V2rayNSubscribeProvider.d.ts +0 -25
  115. package/build/provider/V2rayNSubscribeProvider.js +0 -181
  116. package/build/provider/V2rayNSubscribeProvider.js.map +0 -1
  117. package/build/provider/index.d.ts +0 -17
  118. package/build/provider/index.js +0 -54
  119. package/build/provider/index.js.map +0 -1
  120. package/build/provider/types.d.ts +0 -18
  121. package/build/provider/types.js +0 -3
  122. package/build/provider/types.js.map +0 -1
  123. package/build/redis.d.ts +0 -9
  124. package/build/redis.js +0 -63
  125. package/build/redis.js.map +0 -1
  126. package/build/types.d.ts +0 -138
  127. package/build/types.js +0 -31
  128. package/build/types.js.map +0 -1
  129. package/build/utils/cache.d.ts +0 -23
  130. package/build/utils/cache.js +0 -98
  131. package/build/utils/cache.js.map +0 -1
  132. package/build/utils/clash.d.ts +0 -3
  133. package/build/utils/clash.js +0 -448
  134. package/build/utils/clash.js.map +0 -1
  135. package/build/utils/constant.d.ts +0 -1
  136. package/build/utils/constant.js +0 -19
  137. package/build/utils/constant.js.map +0 -1
  138. package/build/utils/dns.d.ts +0 -4
  139. package/build/utils/dns.js +0 -51
  140. package/build/utils/dns.js.map +0 -1
  141. package/build/utils/doctor.d.ts +0 -2
  142. package/build/utils/doctor.js +0 -38
  143. package/build/utils/doctor.js.map +0 -1
  144. package/build/utils/env-flag.d.ts +0 -9
  145. package/build/utils/env-flag.js +0 -41
  146. package/build/utils/env-flag.js.map +0 -1
  147. package/build/utils/error-helper.d.ts +0 -2
  148. package/build/utils/error-helper.js +0 -62
  149. package/build/utils/error-helper.js.map +0 -1
  150. package/build/utils/errors.d.ts +0 -19
  151. package/build/utils/errors.js +0 -60
  152. package/build/utils/errors.js.map +0 -1
  153. package/build/utils/flag.d.ts +0 -3
  154. package/build/utils/flag.js +0 -79
  155. package/build/utils/flag.js.map +0 -1
  156. package/build/utils/http-client.d.ts +0 -3
  157. package/build/utils/http-client.js +0 -82
  158. package/build/utils/http-client.js.map +0 -1
  159. package/build/utils/index.d.ts +0 -90
  160. package/build/utils/index.js +0 -529
  161. package/build/utils/index.js.map +0 -1
  162. package/build/utils/linter.d.ts +0 -4
  163. package/build/utils/linter.js +0 -49
  164. package/build/utils/linter.js.map +0 -1
  165. package/build/utils/loon.d.ts +0 -3
  166. package/build/utils/loon.js +0 -236
  167. package/build/utils/loon.js.map +0 -1
  168. package/build/utils/quantumult.d.ts +0 -6
  169. package/build/utils/quantumult.js +0 -240
  170. package/build/utils/quantumult.js.map +0 -1
  171. package/build/utils/relayable-url.d.ts +0 -1
  172. package/build/utils/relayable-url.js +0 -18
  173. package/build/utils/relayable-url.js.map +0 -1
  174. package/build/utils/remote-snippet.d.ts +0 -8
  175. package/build/utils/remote-snippet.js +0 -198
  176. package/build/utils/remote-snippet.js.map +0 -1
  177. package/build/utils/singbox.d.ts +0 -3
  178. package/build/utils/singbox.js +0 -377
  179. package/build/utils/singbox.js.map +0 -1
  180. package/build/utils/ss.d.ts +0 -3
  181. package/build/utils/ss.js +0 -97
  182. package/build/utils/ss.js.map +0 -1
  183. package/build/utils/ssr.d.ts +0 -7
  184. package/build/utils/ssr.js +0 -53
  185. package/build/utils/ssr.js.map +0 -1
  186. package/build/utils/subscription.d.ts +0 -11
  187. package/build/utils/subscription.js +0 -68
  188. package/build/utils/subscription.js.map +0 -1
  189. package/build/utils/surfboard.d.ts +0 -7
  190. package/build/utils/surfboard.js +0 -184
  191. package/build/utils/surfboard.js.map +0 -1
  192. package/build/utils/surge.d.ts +0 -8
  193. package/build/utils/surge.js +0 -407
  194. package/build/utils/surge.js.map +0 -1
  195. package/build/utils/time.d.ts +0 -1
  196. package/build/utils/time.js +0 -6
  197. package/build/utils/time.js.map +0 -1
  198. package/build/utils/tmp-helper.d.ts +0 -30
  199. package/build/utils/tmp-helper.js +0 -102
  200. package/build/utils/tmp-helper.js.map +0 -1
  201. package/build/utils/trojan.d.ts +0 -2
  202. package/build/utils/trojan.js +0 -38
  203. package/build/utils/trojan.js.map +0 -1
  204. package/build/utils/useragent.d.ts +0 -18
  205. package/build/utils/useragent.js +0 -210
  206. package/build/utils/useragent.js.map +0 -1
  207. package/build/validators/artifact.d.ts +0 -44
  208. package/build/validators/artifact.js +0 -26
  209. package/build/validators/artifact.js.map +0 -1
  210. package/build/validators/common.d.ts +0 -377
  211. package/build/validators/common.js +0 -106
  212. package/build/validators/common.js.map +0 -1
  213. package/build/validators/filter.d.ts +0 -10
  214. package/build/validators/filter.js +0 -15
  215. package/build/validators/filter.js.map +0 -1
  216. package/build/validators/hooks.d.ts +0 -9
  217. package/build/validators/hooks.js +0 -11
  218. package/build/validators/hooks.js.map +0 -1
  219. package/build/validators/http.d.ts +0 -366
  220. package/build/validators/http.js +0 -23
  221. package/build/validators/http.js.map +0 -1
  222. package/build/validators/hysteria2.d.ts +0 -196
  223. package/build/validators/hysteria2.js +0 -15
  224. package/build/validators/hysteria2.js.map +0 -1
  225. package/build/validators/index.d.ts +0 -17
  226. package/build/validators/index.js +0 -34
  227. package/build/validators/index.js.map +0 -1
  228. package/build/validators/provider.d.ts +0 -120
  229. package/build/validators/provider.js +0 -46
  230. package/build/validators/provider.js.map +0 -1
  231. package/build/validators/shadowsocks.d.ts +0 -252
  232. package/build/validators/shadowsocks.js +0 -31
  233. package/build/validators/shadowsocks.js.map +0 -1
  234. package/build/validators/shadowsocksr.d.ts +0 -184
  235. package/build/validators/shadowsocksr.js +0 -19
  236. package/build/validators/shadowsocksr.js.map +0 -1
  237. package/build/validators/snell.d.ts +0 -178
  238. package/build/validators/snell.js +0 -17
  239. package/build/validators/snell.js.map +0 -1
  240. package/build/validators/socks5.d.ts +0 -196
  241. package/build/validators/socks5.js +0 -15
  242. package/build/validators/socks5.js.map +0 -1
  243. package/build/validators/surgio-config.d.ts +0 -387
  244. package/build/validators/surgio-config.js +0 -101
  245. package/build/validators/surgio-config.js.map +0 -1
  246. package/build/validators/trojan.d.ts +0 -255
  247. package/build/validators/trojan.js +0 -16
  248. package/build/validators/trojan.js.map +0 -1
  249. package/build/validators/tuic.d.ts +0 -741
  250. package/build/validators/tuic.js +0 -21
  251. package/build/validators/tuic.js.map +0 -1
  252. package/build/validators/vless.d.ts +0 -389
  253. package/build/validators/vless.js +0 -31
  254. package/build/validators/vless.js.map +0 -1
  255. package/build/validators/vmess.d.ts +0 -425
  256. package/build/validators/vmess.js +0 -86
  257. package/build/validators/vmess.js.map +0 -1
  258. package/build/validators/wireguard.d.ts +0 -230
  259. package/build/validators/wireguard.js +0 -26
  260. package/build/validators/wireguard.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomProvider.js","sourceRoot":"","sources":["../../src/provider/CustomProvider.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { ProviderConfig, SubsciptionCacheItem, SupportProviderEnum } from '../types';
2
- import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
3
- export default abstract class Provider {
4
- name: string;
5
- readonly type: SupportProviderEnum;
6
- readonly config: ProviderConfig;
7
- supportGetSubscriptionUserInfo: boolean;
8
- passGatewayRequestUserAgent: boolean;
9
- protected constructor(name: string, config: ProviderConfig);
10
- static requestCacheableResource(url: string, options?: {
11
- requestUserAgent?: string;
12
- }): Promise<SubsciptionCacheItem>;
13
- determineRequestUserAgent(requestUserAgent?: string | undefined): string | undefined;
14
- get nextPort(): number;
15
- getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
16
- getNodeList: GetNodeListFunction;
17
- }
@@ -1,111 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const logger_1 = require("@surgio/logger");
27
- const constant_1 = require("../constant");
28
- const cache_1 = require("../utils/cache");
29
- const config_1 = require("../config");
30
- const env_flag_1 = require("../utils/env-flag");
31
- const http_client_1 = __importStar(require("../utils/http-client"));
32
- const utils_1 = require("../utils");
33
- const validators_1 = require("../validators");
34
- const logger = (0, logger_1.createLogger)({
35
- service: 'surgio:Provider',
36
- });
37
- class Provider {
38
- name;
39
- type;
40
- config;
41
- // 是否支持在订阅中获取用户流量信息
42
- supportGetSubscriptionUserInfo;
43
- // 是否传递 Gateway 请求的 User-Agent
44
- passGatewayRequestUserAgent;
45
- constructor(name, config) {
46
- this.name = name;
47
- const result = validators_1.ProviderValidator.safeParse(config);
48
- // istanbul ignore next
49
- if (!result.success) {
50
- throw new utils_1.SurgioError('Provider 配置校验失败', {
51
- cause: result.error,
52
- providerName: name,
53
- });
54
- }
55
- this.supportGetSubscriptionUserInfo = false;
56
- this.config = result.data;
57
- this.type = result.data.type;
58
- this.passGatewayRequestUserAgent =
59
- (0, config_1.getConfig)()?.gateway?.passRequestUserAgent ?? false;
60
- }
61
- static async requestCacheableResource(url, options = {}) {
62
- const cacheKey = `${constant_1.CACHE_KEYS.Provider}:${(0, utils_1.toMD5)((0, http_client_1.getUserAgent)(options.requestUserAgent) + url)}`;
63
- const requestResource = async () => {
64
- const headers = {};
65
- if (options.requestUserAgent) {
66
- headers['user-agent'] = (0, http_client_1.getUserAgent)(options.requestUserAgent);
67
- }
68
- const res = await http_client_1.default.get(url, {
69
- responseType: 'text',
70
- headers,
71
- });
72
- const subsciptionCacheItem = {
73
- body: res.body,
74
- };
75
- if (res.headers['subscription-userinfo']) {
76
- subsciptionCacheItem.subscriptionUserinfo = (0, utils_1.parseSubscriptionUserInfo)(res.headers['subscription-userinfo']);
77
- logger.debug('%s received subscription userinfo - raw: %s | parsed: %j', url, res.headers['subscription-userinfo'], subsciptionCacheItem.subscriptionUserinfo);
78
- }
79
- return subsciptionCacheItem;
80
- };
81
- const cachedValue = await cache_1.unifiedCache.get(cacheKey);
82
- return cachedValue
83
- ? cachedValue
84
- : await (async () => {
85
- const subsciptionCacheItem = await requestResource();
86
- await cache_1.unifiedCache.set(cacheKey, subsciptionCacheItem, (0, env_flag_1.getProviderCacheMaxage)());
87
- return subsciptionCacheItem;
88
- })();
89
- }
90
- determineRequestUserAgent(requestUserAgent) {
91
- return this.passGatewayRequestUserAgent
92
- ? requestUserAgent || this.config.requestUserAgent
93
- : this.config.requestUserAgent;
94
- }
95
- get nextPort() {
96
- if (this.config.startPort) {
97
- return this.config.startPort++;
98
- }
99
- return 0;
100
- }
101
- // istanbul ignore next
102
- getSubscriptionUserInfo = async () => {
103
- throw new Error('此 Provider 不支持该功能');
104
- };
105
- // istanbul ignore next
106
- getNodeList = () => {
107
- return Promise.resolve([]);
108
- };
109
- }
110
- exports.default = Provider;
111
- //# sourceMappingURL=Provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../src/provider/Provider.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { ShadowsocksJsonSubscribeProviderConfig, ShadowsocksNodeConfig } from '../types';
2
- import Provider from './Provider';
3
- import { GetNodeListFunction } from './types';
4
- export default class ShadowsocksJsonSubscribeProvider extends Provider {
5
- #private;
6
- readonly udpRelay?: boolean;
7
- constructor(name: string, config: ShadowsocksJsonSubscribeProviderConfig);
8
- get url(): string;
9
- getNodeList: GetNodeListFunction;
10
- }
11
- export declare const getShadowsocksJSONConfig: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<Array<ShadowsocksNodeConfig>>;
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getShadowsocksJSONConfig = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const zod_1 = require("zod");
9
- const types_1 = require("../types");
10
- const utils_1 = require("../utils");
11
- const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
12
- const Provider_1 = __importDefault(require("./Provider"));
13
- class ShadowsocksJsonSubscribeProvider extends Provider_1.default {
14
- #originalUrl;
15
- udpRelay;
16
- constructor(name, config) {
17
- super(name, config);
18
- const schema = zod_1.z.object({
19
- url: zod_1.z.string().url(),
20
- udpRelay: zod_1.z.boolean().optional(),
21
- });
22
- const result = schema.safeParse(config);
23
- // istanbul ignore next
24
- if (!result.success) {
25
- throw new utils_1.SurgioError('ShadowsocksJsonSubscribeProvider 配置校验失败', {
26
- cause: result.error,
27
- providerName: name,
28
- });
29
- }
30
- this.#originalUrl = result.data.url;
31
- this.udpRelay = result.data.udpRelay;
32
- }
33
- // istanbul ignore next
34
- get url() {
35
- return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
36
- }
37
- getNodeList = async (params = {}) => {
38
- const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
39
- const nodeList = await (0, exports.getShadowsocksJSONConfig)(this.url, this.udpRelay, requestUserAgent);
40
- if (this.config.hooks?.afterNodeListResponse) {
41
- const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
42
- if (newList) {
43
- return newList;
44
- }
45
- }
46
- return nodeList;
47
- };
48
- }
49
- exports.default = ShadowsocksJsonSubscribeProvider;
50
- const getShadowsocksJSONConfig = async (url, udpRelay, requestUserAgent) => {
51
- (0, assert_1.default)(url, '未指定订阅地址 url');
52
- async function requestConfigFromRemote() {
53
- const response = await Provider_1.default.requestCacheableResource(url, {
54
- requestUserAgent: requestUserAgent || 'shadowrocket',
55
- });
56
- const config = JSON.parse(response.body);
57
- if (!config || !config.configs) {
58
- throw new Error('订阅地址返回的数据格式不正确');
59
- }
60
- return config.configs.map((item) => {
61
- const nodeConfig = {
62
- nodeName: item.remarks,
63
- type: types_1.NodeTypeEnum.Shadowsocks,
64
- hostname: item.server,
65
- port: item.server_port,
66
- method: item.method,
67
- password: item.password,
68
- };
69
- if (typeof udpRelay === 'boolean') {
70
- nodeConfig.udpRelay = udpRelay;
71
- }
72
- if (item.plugin === 'obfs-local') {
73
- const obfs = item.plugin_opts.match(/obfs=(\w+)/);
74
- const obfsHost = item.plugin_opts.match(/obfs-host=(.+)$/);
75
- if (obfs) {
76
- nodeConfig.obfs = obfs[1];
77
- nodeConfig.obfsHost = obfsHost ? obfsHost[1] : 'www.bing.com';
78
- }
79
- }
80
- return nodeConfig;
81
- });
82
- }
83
- return await requestConfigFromRemote();
84
- };
85
- exports.getShadowsocksJSONConfig = getShadowsocksJSONConfig;
86
- //# sourceMappingURL=ShadowsocksJsonSubscribeProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShadowsocksJsonSubscribeProvider.js","sourceRoot":"","sources":["../../src/provider/ShadowsocksJsonSubscribeProvider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,6BAAuB;AAEvB,oCAIiB;AACjB,oCAAsC;AACtC,2EAAiD;AAEjD,0DAAiC;AAGjC,MAAqB,gCAAiC,SAAQ,kBAAQ;IAC3D,YAAY,CAAQ;IACb,QAAQ,CAAU;IAElC,YAAY,IAAY,EAAE,MAA8C;QACtE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEnB,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC;YACtB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SACjC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAEvC,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAW,CAAC,yCAAyC,EAAE;gBAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAA;IACtC,CAAC;IAED,uBAAuB;IACvB,IAAW,GAAG;QACZ,OAAO,IAAA,uBAAY,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9D,CAAC;IAEM,WAAW,GAAwB,KAAK,EAC7C,MAAM,GAAG,EAAE,EAC4B,EAAE;QACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CACrD,MAAM,CAAC,gBAAgB,CACxB,CAAA;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAwB,EAC7C,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,EACb,gBAAgB,CACjB,CAAA;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAC3D,QAAQ,EACR,MAAM,CACP,CAAA;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;CACF;AAvDD,mDAuDC;AAEM,MAAM,wBAAwB,GAAG,KAAK,EAC3C,GAAW,EACX,QAAkB,EAClB,gBAAyB,EACc,EAAE;IACzC,IAAA,gBAAM,EAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IAE1B,KAAK,UAAU,uBAAuB;QAGpC,MAAM,QAAQ,GAAG,MAAM,kBAAQ,CAAC,wBAAwB,CAAC,GAAG,EAAE;YAC5D,gBAAgB,EAAE,gBAAgB,IAAI,cAAc;SACrD,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAEtC,CAAA;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACnC,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAyB,EAAE;YACxD,MAAM,UAAU,GAAQ;gBACtB,QAAQ,EAAE,IAAI,CAAC,OAAiB;gBAChC,IAAI,EAAE,oBAAY,CAAC,WAAW;gBAC9B,QAAQ,EAAE,IAAI,CAAC,MAAgB;gBAC/B,IAAI,EAAE,IAAI,CAAC,WAAqB;gBAChC,MAAM,EAAE,IAAI,CAAC,MAAgB;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAkB;aAClC,CAAA;YAED,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAClC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAChC,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBAE1D,IAAI,IAAI,EAAE,CAAC;oBACT,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;oBACzB,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;gBAC/D,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,MAAM,uBAAuB,EAAE,CAAA;AACxC,CAAC,CAAA;AAjDY,QAAA,wBAAwB,4BAiDpC"}
@@ -1,18 +0,0 @@
1
- import { ShadowsocksNodeConfig, ShadowsocksSubscribeProviderConfig, SubscriptionUserinfo } from '../types';
2
- import Provider from './Provider';
3
- import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
4
- export default class ShadowsocksSubscribeProvider extends Provider {
5
- #private;
6
- readonly udpRelay?: boolean;
7
- constructor(name: string, config: ShadowsocksSubscribeProviderConfig);
8
- get url(): string;
9
- getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
10
- getNodeList: GetNodeListFunction;
11
- }
12
- /**
13
- * @see https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html
14
- */
15
- export declare const getShadowsocksSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
16
- readonly nodeList: Array<ShadowsocksNodeConfig>;
17
- readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
18
- }>;
@@ -1,84 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getShadowsocksSubscription = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const zod_1 = require("zod");
9
- const utils_1 = require("../utils");
10
- const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
11
- const ss_1 = require("../utils/ss");
12
- const Provider_1 = __importDefault(require("./Provider"));
13
- class ShadowsocksSubscribeProvider extends Provider_1.default {
14
- udpRelay;
15
- #originalUrl;
16
- constructor(name, config) {
17
- super(name, config);
18
- const schema = zod_1.z.object({
19
- url: zod_1.z.string().url(),
20
- udpRelay: zod_1.z.boolean().optional(),
21
- });
22
- const result = schema.safeParse(config);
23
- // istanbul ignore next
24
- if (!result.success) {
25
- throw new utils_1.SurgioError('ShadowsocksSubscribeProvider 配置校验失败', {
26
- cause: result.error,
27
- providerName: name,
28
- });
29
- }
30
- this.#originalUrl = result.data.url;
31
- this.udpRelay = result.data.udpRelay;
32
- this.supportGetSubscriptionUserInfo = true;
33
- }
34
- // istanbul ignore next
35
- get url() {
36
- return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
37
- }
38
- getSubscriptionUserInfo = async (params = {}) => {
39
- const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
40
- const { subscriptionUserinfo } = await (0, exports.getShadowsocksSubscription)(this.url, this.udpRelay, requestUserAgent);
41
- if (subscriptionUserinfo) {
42
- return subscriptionUserinfo;
43
- }
44
- return undefined;
45
- };
46
- getNodeList = async (params = {}) => {
47
- const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
48
- const { nodeList } = await (0, exports.getShadowsocksSubscription)(this.url, this.udpRelay, requestUserAgent);
49
- if (this.config.hooks?.afterNodeListResponse) {
50
- const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
51
- if (newList) {
52
- return newList;
53
- }
54
- }
55
- return nodeList;
56
- };
57
- }
58
- exports.default = ShadowsocksSubscribeProvider;
59
- /**
60
- * @see https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html
61
- */
62
- const getShadowsocksSubscription = async (url, udpRelay, requestUserAgent) => {
63
- (0, assert_1.default)(url, '未指定订阅地址 url');
64
- const response = await Provider_1.default.requestCacheableResource(url, {
65
- requestUserAgent,
66
- });
67
- const nodeList = (0, utils_1.fromBase64)(response.body)
68
- .split('\n')
69
- .filter((item) => !!item && item.startsWith('ss://'))
70
- .map((item) => {
71
- const nodeConfig = (0, ss_1.parseSSUri)(item);
72
- if (udpRelay !== void 0) {
73
- ;
74
- nodeConfig.udpRelay = udpRelay;
75
- }
76
- return nodeConfig;
77
- });
78
- return {
79
- nodeList,
80
- subscriptionUserinfo: response.subscriptionUserinfo,
81
- };
82
- };
83
- exports.getShadowsocksSubscription = getShadowsocksSubscription;
84
- //# sourceMappingURL=ShadowsocksSubscribeProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShadowsocksSubscribeProvider.js","sourceRoot":"","sources":["../../src/provider/ShadowsocksSubscribeProvider.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { ShadowsocksrNodeConfig, ShadowsocksrSubscribeProviderConfig, SubscriptionUserinfo } from '../types';
2
- import Provider from './Provider';
3
- import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
4
- export default class ShadowsocksrSubscribeProvider extends Provider {
5
- #private;
6
- readonly udpRelay?: boolean;
7
- constructor(name: string, config: ShadowsocksrSubscribeProviderConfig);
8
- get url(): string;
9
- getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
10
- getNodeList: GetNodeListFunction;
11
- }
12
- export declare const getShadowsocksrSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
13
- readonly nodeList: Array<ShadowsocksrNodeConfig>;
14
- readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
15
- }>;
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getShadowsocksrSubscription = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const logger_1 = require("@surgio/logger");
9
- const zod_1 = require("zod");
10
- const utils_1 = require("../utils");
11
- const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
12
- const subscription_1 = require("../utils/subscription");
13
- const ssr_1 = require("../utils/ssr");
14
- const Provider_1 = __importDefault(require("./Provider"));
15
- const logger = (0, logger_1.createLogger)({
16
- service: 'surgio:ShadowsocksrSubscribeProvider',
17
- });
18
- class ShadowsocksrSubscribeProvider extends Provider_1.default {
19
- udpRelay;
20
- #originalUrl;
21
- constructor(name, config) {
22
- super(name, config);
23
- const schema = zod_1.z.object({
24
- url: zod_1.z.string().url(),
25
- udpRelay: zod_1.z.boolean().optional(),
26
- });
27
- const result = schema.safeParse(config);
28
- // istanbul ignore next
29
- if (!result.success) {
30
- throw new utils_1.SurgioError('ShadowsocksrSubscribeProvider 配置校验失败', {
31
- cause: result.error,
32
- providerName: name,
33
- });
34
- }
35
- this.#originalUrl = result.data.url;
36
- this.udpRelay = result.data.udpRelay;
37
- this.supportGetSubscriptionUserInfo = true;
38
- }
39
- // istanbul ignore next
40
- get url() {
41
- return (0, relayable_url_1.default)(this.#originalUrl, this.config.relayUrl);
42
- }
43
- getSubscriptionUserInfo = async (params = {}) => {
44
- const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
45
- const { subscriptionUserinfo } = await (0, exports.getShadowsocksrSubscription)(this.url, this.udpRelay, requestUserAgent);
46
- if (subscriptionUserinfo) {
47
- return subscriptionUserinfo;
48
- }
49
- return undefined;
50
- };
51
- getNodeList = async (params = {}) => {
52
- const requestUserAgent = this.determineRequestUserAgent(params.requestUserAgent);
53
- const { nodeList } = await (0, exports.getShadowsocksrSubscription)(this.url, this.udpRelay, requestUserAgent);
54
- if (this.config.hooks?.afterNodeListResponse) {
55
- const newList = await this.config.hooks.afterNodeListResponse(nodeList, params);
56
- if (newList) {
57
- return newList;
58
- }
59
- }
60
- return nodeList;
61
- };
62
- }
63
- exports.default = ShadowsocksrSubscribeProvider;
64
- const getShadowsocksrSubscription = async (url, udpRelay, requestUserAgent) => {
65
- (0, assert_1.default)(url, '未指定订阅地址 url');
66
- const response = await Provider_1.default.requestCacheableResource(url, {
67
- requestUserAgent,
68
- });
69
- const nodeList = (0, utils_1.fromBase64)(response.body)
70
- .split('\n')
71
- .filter((item) => !!item && item.startsWith('ssr://'))
72
- .map((str) => {
73
- const nodeConfig = (0, ssr_1.parseSSRUri)(str);
74
- if (udpRelay !== void 0) {
75
- ;
76
- nodeConfig.udpRelay = udpRelay;
77
- }
78
- return nodeConfig;
79
- });
80
- if (!response.subscriptionUserinfo &&
81
- nodeList[0].nodeName.includes('剩余流量')) {
82
- const dataNode = nodeList[0];
83
- const expireNode = nodeList[1];
84
- response.subscriptionUserinfo = (0, subscription_1.parseSubscriptionNode)(dataNode.nodeName, expireNode.nodeName);
85
- logger.debug('%s received subscription node - raw: %s %s | parsed: %j', url, dataNode.nodeName, expireNode.nodeName, response.subscriptionUserinfo);
86
- }
87
- return {
88
- nodeList,
89
- subscriptionUserinfo: response.subscriptionUserinfo,
90
- };
91
- };
92
- exports.getShadowsocksrSubscription = getShadowsocksrSubscription;
93
- //# sourceMappingURL=ShadowsocksrSubscribeProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShadowsocksrSubscribeProvider.js","sourceRoot":"","sources":["../../src/provider/ShadowsocksrSubscribeProvider.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { ShadowsocksNodeConfig, SsdProviderConfig, SubscriptionUserinfo } from '../types';
2
- import Provider from './Provider';
3
- import { GetNodeListFunction, GetSubscriptionUserInfoFunction } from './types';
4
- export default class SsdProvider extends Provider {
5
- #private;
6
- readonly udpRelay?: boolean;
7
- constructor(name: string, config: SsdProviderConfig);
8
- get url(): string;
9
- getSubscriptionUserInfo: GetSubscriptionUserInfoFunction;
10
- getNodeList: GetNodeListFunction;
11
- }
12
- export declare const getSsdSubscription: (url: string, udpRelay?: boolean, requestUserAgent?: string) => Promise<{
13
- readonly nodeList: Array<ShadowsocksNodeConfig>;
14
- readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
15
- }>;
16
- export declare const parseSsdConfig: (globalConfig: SsdSubscription, server: SsdServer, udpRelay?: boolean) => ShadowsocksNodeConfig | undefined;
17
- export interface SsdSubscription {
18
- airport: string;
19
- port: number;
20
- encryption: string;
21
- password: string;
22
- servers: ReadonlyArray<SsdServer>;
23
- plugin?: string;
24
- plugin_options?: string;
25
- traffic_used?: number;
26
- traffic_total?: number;
27
- expiry?: string;
28
- }
29
- export interface SsdServer {
30
- server: string;
31
- port?: number;
32
- encryption?: string;
33
- password?: string;
34
- plugin?: string;
35
- plugin_options?: string;
36
- id?: number;
37
- remarks?: string;
38
- ratio?: number;
39
- }