surgio 2.16.0 → 2.17.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.
- package/CHANGELOG.md +9 -0
- package/build/generator/artifact.d.ts +3 -1
- package/build/generator/artifact.js +7 -5
- package/build/index.d.ts +2 -1
- package/build/index.js +6 -3
- package/build/provider/ClashProvider.d.ts +9 -2
- package/build/provider/ClashProvider.js +15 -7
- package/build/provider/Provider.d.ts +3 -1
- package/build/provider/Provider.js +31 -6
- package/build/provider/ShadowsocksJsonSubscribeProvider.d.ts +5 -3
- package/build/provider/ShadowsocksJsonSubscribeProvider.js +42 -4
- package/build/provider/ShadowsocksSubscribeProvider.d.ts +4 -2
- package/build/provider/ShadowsocksSubscribeProvider.js +7 -5
- package/build/provider/ShadowsocksrSubscribeProvider.d.ts +4 -2
- package/build/provider/ShadowsocksrSubscribeProvider.js +7 -5
- package/build/provider/SsdProvider.d.ts +4 -2
- package/build/provider/SsdProvider.js +7 -5
- package/build/provider/TrojanProvider.d.ts +9 -2
- package/build/provider/TrojanProvider.js +15 -6
- package/build/provider/V2rayNSubscribeProvider.d.ts +11 -2
- package/build/provider/V2rayNSubscribeProvider.js +16 -14
- package/build/utils/cache.d.ts +4 -3
- package/build/utils/cache.js +17 -9
- package/build/utils/clash.d.ts +1 -1
- package/build/utils/dns.js +5 -5
- package/build/utils/env-flag.js +1 -1
- package/build/utils/index.d.ts +3 -2
- package/build/utils/index.js +7 -41
- package/build/utils/patch-proxy.js +7 -2
- package/build/utils/surge.d.ts +1 -1
- package/package.json +2 -3
|
@@ -6,9 +6,11 @@ export default class SsdProvider extends Provider {
|
|
|
6
6
|
constructor(name: string, config: SsdProviderConfig);
|
|
7
7
|
get url(): string;
|
|
8
8
|
getSubscriptionUserInfo(): Promise<SubscriptionUserinfo | undefined>;
|
|
9
|
-
getNodeList(
|
|
9
|
+
getNodeList({ requestUserAgent, }?: {
|
|
10
|
+
requestUserAgent?: string;
|
|
11
|
+
}): Promise<ReadonlyArray<ShadowsocksNodeConfig>>;
|
|
10
12
|
}
|
|
11
|
-
export declare const getSsdSubscription: (url: string, udpRelay?: boolean | undefined) => Promise<{
|
|
13
|
+
export declare const getSsdSubscription: (url: string, udpRelay?: boolean | undefined, requestUserAgent?: string | undefined) => Promise<{
|
|
12
14
|
readonly nodeList: ReadonlyArray<ShadowsocksNodeConfig>;
|
|
13
15
|
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
14
16
|
}>;
|
|
@@ -46,16 +46,18 @@ class SsdProvider extends Provider_1.default {
|
|
|
46
46
|
}
|
|
47
47
|
return void 0;
|
|
48
48
|
}
|
|
49
|
-
async getNodeList() {
|
|
50
|
-
const { nodeList } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay);
|
|
49
|
+
async getNodeList({ requestUserAgent, } = {}) {
|
|
50
|
+
const { nodeList } = await (0, exports.getSsdSubscription)(this.url, this.udpRelay, requestUserAgent);
|
|
51
51
|
return nodeList;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.default = SsdProvider;
|
|
55
55
|
// 协议定义:https://github.com/TheCGDF/SSD-Windows/wiki/HTTP%E8%AE%A2%E9%98%85%E5%8D%8F%E5%AE%9A
|
|
56
|
-
const getSsdSubscription = async (url, udpRelay) => {
|
|
56
|
+
const getSsdSubscription = async (url, udpRelay, requestUserAgent) => {
|
|
57
57
|
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
58
|
-
const response = await Provider_1.default.requestCacheableResource(url
|
|
58
|
+
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
59
|
+
requestUserAgent,
|
|
60
|
+
});
|
|
59
61
|
// istanbul ignore next
|
|
60
62
|
if (!response.body.startsWith('ssd://')) {
|
|
61
63
|
throw new Error(`暂仅支持 ssd:// 开头的订阅地址,${url} 无法处理`);
|
|
@@ -113,4 +115,4 @@ const parseSsdConfig = (globalConfig, server, udpRelay) => {
|
|
|
113
115
|
: null));
|
|
114
116
|
};
|
|
115
117
|
exports.parseSsdConfig = parseSsdConfig;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3NkUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvU3NkUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLDJDQUE4QztBQUM5QyxvREFBNEI7QUFDNUIsa0RBQTBCO0FBRTFCLG9DQUtrQjtBQUNsQixvQ0FBd0Q7QUFDeEQsMkVBQWtEO0FBQ2xELDBEQUFrQztBQUVsQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUM7SUFDMUIsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDLENBQUM7QUFFSCxNQUFxQixXQUFZLFNBQVEsa0JBQVE7SUFJL0MsWUFBWSxJQUFZLEVBQUUsTUFBeUI7UUFDakQsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVwQixNQUFNLE1BQU0sR0FBRyxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3hCLEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2lCQUNkLEdBQUcsQ0FBQztnQkFDSCxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDbkIsQ0FBQztpQkFDRCxRQUFRLEVBQUU7WUFDYixRQUFRLEVBQUUsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRTtTQUNqQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQyx1QkFBdUI7UUFDdkIsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLEtBQUssQ0FBQztTQUNiO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7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
|
|
@@ -7,12 +7,19 @@ export default class TrojanProvider extends Provider {
|
|
|
7
7
|
constructor(name: string, config: TrojanProviderConfig);
|
|
8
8
|
get url(): string;
|
|
9
9
|
getSubscriptionUserInfo(): Promise<SubscriptionUserinfo | undefined>;
|
|
10
|
-
getNodeList(
|
|
10
|
+
getNodeList({ requestUserAgent, }?: {
|
|
11
|
+
requestUserAgent?: string;
|
|
12
|
+
}): Promise<ReadonlyArray<TrojanNodeConfig>>;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
|
|
14
16
|
*/
|
|
15
|
-
export declare const getTrojanSubscription: (url
|
|
17
|
+
export declare const getTrojanSubscription: ({ url, udpRelay, tls13, requestUserAgent, }: {
|
|
18
|
+
url: string;
|
|
19
|
+
udpRelay?: boolean | undefined;
|
|
20
|
+
tls13?: boolean | undefined;
|
|
21
|
+
requestUserAgent?: string | undefined;
|
|
22
|
+
}) => Promise<{
|
|
16
23
|
readonly nodeList: ReadonlyArray<TrojanNodeConfig>;
|
|
17
24
|
readonly subscriptionUserinfo?: SubscriptionUserinfo | undefined;
|
|
18
25
|
}>;
|
|
@@ -41,14 +41,23 @@ class TrojanProvider extends Provider_1.default {
|
|
|
41
41
|
return (0, relayable_url_1.default)(this._url, this.relayUrl);
|
|
42
42
|
}
|
|
43
43
|
async getSubscriptionUserInfo() {
|
|
44
|
-
const { subscriptionUserinfo } = await (0, exports.getTrojanSubscription)(
|
|
44
|
+
const { subscriptionUserinfo } = await (0, exports.getTrojanSubscription)({
|
|
45
|
+
url: this.url,
|
|
46
|
+
udpRelay: this.udpRelay,
|
|
47
|
+
tls13: this.tls13,
|
|
48
|
+
});
|
|
45
49
|
if (subscriptionUserinfo) {
|
|
46
50
|
return subscriptionUserinfo;
|
|
47
51
|
}
|
|
48
52
|
return void 0;
|
|
49
53
|
}
|
|
50
|
-
async getNodeList() {
|
|
51
|
-
const { nodeList } = await (0, exports.getTrojanSubscription)(
|
|
54
|
+
async getNodeList({ requestUserAgent, } = {}) {
|
|
55
|
+
const { nodeList } = await (0, exports.getTrojanSubscription)({
|
|
56
|
+
url: this.url,
|
|
57
|
+
udpRelay: this.udpRelay,
|
|
58
|
+
tls13: this.tls13,
|
|
59
|
+
requestUserAgent,
|
|
60
|
+
});
|
|
52
61
|
return nodeList;
|
|
53
62
|
}
|
|
54
63
|
}
|
|
@@ -56,10 +65,10 @@ exports.default = TrojanProvider;
|
|
|
56
65
|
/**
|
|
57
66
|
* @see https://github.com/trojan-gfw/trojan-url/blob/master/trojan-url.py
|
|
58
67
|
*/
|
|
59
|
-
const getTrojanSubscription = async (url, udpRelay, tls13) => {
|
|
68
|
+
const getTrojanSubscription = async ({ url, udpRelay, tls13, requestUserAgent, }) => {
|
|
60
69
|
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
61
70
|
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
62
|
-
requestUserAgent: 'shadowrocket',
|
|
71
|
+
requestUserAgent: requestUserAgent || 'shadowrocket',
|
|
63
72
|
});
|
|
64
73
|
const config = (0, utils_1.fromBase64)(response.body);
|
|
65
74
|
const nodeList = config
|
|
@@ -75,4 +84,4 @@ const getTrojanSubscription = async (url, udpRelay, tls13) => {
|
|
|
75
84
|
};
|
|
76
85
|
};
|
|
77
86
|
exports.getTrojanSubscription = getTrojanSubscription;
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJvamFuUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvVHJvamFuUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLG9EQUE0QjtBQUM1QiwyQ0FBOEM7QUFPOUMsb0NBQXNDO0FBQ3RDLDJFQUFrRDtBQUNsRCw0Q0FBaUQ7QUFDakQsMERBQWtDO0FBRWxDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQztJQUMxQixPQUFPLEVBQUUsdUJBQXVCO0NBQ2pDLENBQUMsQ0FBQztBQUVILE1BQXFCLGNBQWUsU0FBUSxrQkFBUTtJQUtsRCxZQUFZLElBQVksRUFBRSxNQUE0QjtRQUNwRCxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLE1BQU0sTUFBTSxHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDeEIsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7aUJBQ2QsR0FBRyxDQUFDO2dCQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNuQixDQUFDO2lCQUNELFFBQVEsRUFBRTtZQUNiLFFBQVEsRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQzdCLEtBQUssRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1NBQzNCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLHVCQUF1QjtRQUN2QixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFBLHVCQUFZLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFHbEMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFBLDZCQUFxQixFQUFDO1lBQzNELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixPQUFPLG9CQUFvQixDQUFDO1NBQzdCO1FBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUN2QixnQkFBZ0IsTUFDaUIsRUFBRTtRQUduQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFBLDZCQUFxQixFQUFDO1lBQy9DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQWpFRCxpQ0FpRUM7QUFFRDs7R0FFRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUFFLEVBQzFDLEdBQUcsRUFDSCxRQUFRLEVBQ1IsS0FBSyxFQUNMLGdCQUFnQixHQU1qQixFQUdFLEVBQUU7SUFDSCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sa0JBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUU7UUFDNUQsZ0JBQWdCLEVBQUUsZ0JBQWdCLElBQUksY0FBYztLQUNyRCxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtCQUFVLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU07U0FDcEIsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3hELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBb0IsRUFBRTtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFBLHVCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsdUNBQ0ssVUFBVSxLQUNiLFdBQVcsRUFBRSxRQUFRLEVBQ3JCLEtBQUssSUFDTDtJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTztRQUNMLFFBQVE7UUFDUixvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO0tBQ3BELENBQUM7QUFDSixDQUFDLENBQUM7QUFyQ1csUUFBQSxxQkFBcUIseUJBcUNoQyJ9
|
|
@@ -8,10 +8,19 @@ export default class V2rayNSubscribeProvider extends Provider {
|
|
|
8
8
|
private readonly _url;
|
|
9
9
|
constructor(name: string, config: V2rayNSubscribeProviderConfig);
|
|
10
10
|
get url(): string;
|
|
11
|
-
getNodeList(
|
|
11
|
+
getNodeList({ requestUserAgent, }?: {
|
|
12
|
+
requestUserAgent?: string;
|
|
13
|
+
}): ReturnType<typeof getV2rayNSubscription>;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* @see https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
|
|
15
17
|
*/
|
|
16
|
-
export declare const getV2rayNSubscription: (url
|
|
18
|
+
export declare const getV2rayNSubscription: ({ url, isCompatibleMode, skipCertVerify, tls13, udpRelay, requestUserAgent, }: {
|
|
19
|
+
url: string;
|
|
20
|
+
isCompatibleMode?: boolean | undefined;
|
|
21
|
+
skipCertVerify?: boolean | undefined;
|
|
22
|
+
udpRelay?: boolean | undefined;
|
|
23
|
+
tls13?: boolean | undefined;
|
|
24
|
+
requestUserAgent?: string | undefined;
|
|
25
|
+
}) => Promise<ReadonlyArray<VmessNodeConfig | ShadowsocksNodeConfig>>;
|
|
17
26
|
export declare const parseJSONConfig: (json: string, isCompatibleMode: boolean | undefined, skipCertVerify?: boolean | undefined, udpRelay?: boolean | undefined, tls13?: boolean | undefined) => VmessNodeConfig | undefined;
|
|
@@ -9,8 +9,6 @@ const logger_1 = require("@surgio/logger");
|
|
|
9
9
|
const assert_1 = __importDefault(require("assert"));
|
|
10
10
|
const types_1 = require("../types");
|
|
11
11
|
const utils_1 = require("../utils");
|
|
12
|
-
const cache_1 = require("../utils/cache");
|
|
13
|
-
const http_client_1 = __importDefault(require("../utils/http-client"));
|
|
14
12
|
const relayable_url_1 = __importDefault(require("../utils/relayable-url"));
|
|
15
13
|
const ss_1 = require("../utils/ss");
|
|
16
14
|
const Provider_1 = __importDefault(require("./Provider"));
|
|
@@ -43,28 +41,32 @@ class V2rayNSubscribeProvider extends Provider_1.default {
|
|
|
43
41
|
get url() {
|
|
44
42
|
return (0, relayable_url_1.default)(this._url, this.relayUrl);
|
|
45
43
|
}
|
|
46
|
-
getNodeList() {
|
|
47
|
-
return (0, exports.getV2rayNSubscription)(
|
|
44
|
+
getNodeList({ requestUserAgent, } = {}) {
|
|
45
|
+
return (0, exports.getV2rayNSubscription)({
|
|
46
|
+
url: this.url,
|
|
47
|
+
skipCertVerify: this.skipCertVerify,
|
|
48
|
+
tls13: this.tls13,
|
|
49
|
+
udpRelay: this.udpRelay,
|
|
50
|
+
isCompatibleMode: this.compatibleMode,
|
|
51
|
+
requestUserAgent,
|
|
52
|
+
});
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
55
|
exports.default = V2rayNSubscribeProvider;
|
|
51
56
|
/**
|
|
52
57
|
* @see https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
|
|
53
58
|
*/
|
|
54
|
-
const getV2rayNSubscription = async (url, isCompatibleMode, skipCertVerify, udpRelay,
|
|
59
|
+
const getV2rayNSubscription = async ({ url, isCompatibleMode, skipCertVerify, tls13, udpRelay, requestUserAgent, }) => {
|
|
55
60
|
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
56
61
|
if (isCompatibleMode) {
|
|
57
62
|
logger_1.logger.warn('运行在兼容模式,请注意生成的节点是否正确。');
|
|
58
63
|
}
|
|
59
64
|
async function requestConfigFromRemote() {
|
|
60
|
-
const response =
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return res.body;
|
|
66
|
-
})();
|
|
67
|
-
const configList = (0, utils_1.fromBase64)(response)
|
|
65
|
+
const response = await Provider_1.default.requestCacheableResource(url, {
|
|
66
|
+
requestUserAgent,
|
|
67
|
+
});
|
|
68
|
+
const configString = response.body;
|
|
69
|
+
const configList = (0, utils_1.fromBase64)(configString)
|
|
68
70
|
.split('\n')
|
|
69
71
|
.filter((item) => !!item)
|
|
70
72
|
.filter((item) => {
|
|
@@ -108,4 +110,4 @@ const parseJSONConfig = (json, isCompatibleMode, skipCertVerify, udpRelay, tls13
|
|
|
108
110
|
: null));
|
|
109
111
|
};
|
|
110
112
|
exports.parseJSONConfig = parseJSONConfig;
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcHJvdmlkZXIvVjJyYXlOU3Vic2NyaWJlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXNCO0FBQ3RCLDJDQUF3QztBQUN4QyxvREFBNEI7QUFFNUIsb0NBS2tCO0FBQ2xCLG9DQUFzQztBQUN0QywyRUFBa0Q7QUFDbEQsb0NBQXlDO0FBQ3pDLDBEQUFrQztBQUVsQyxNQUFxQix1QkFBd0IsU0FBUSxrQkFBUTtJQVEzRCxZQUFZLElBQVksRUFBRSxNQUFxQztRQUM3RCxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBCLE1BQU0sTUFBTSxHQUFHLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDeEIsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7aUJBQ2QsR0FBRyxDQUFDO2dCQUNILE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUNuQixDQUFDO2lCQUNELFFBQVEsRUFBRTtZQUNiLFFBQVEsRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQzdCLEtBQUssRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQzFCLGNBQWMsRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ25DLGNBQWMsRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1NBQ3BDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLHVCQUF1QjtRQUN2QixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sS0FBSyxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxH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
|
package/build/utils/cache.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import NodeCache from 'node-cache';
|
|
2
2
|
import { SubscriptionUserinfo } from '../types';
|
|
3
3
|
export interface SubsciptionCacheItem {
|
|
4
4
|
readonly body: string;
|
|
5
5
|
subscriptionUserinfo?: SubscriptionUserinfo;
|
|
6
6
|
}
|
|
7
|
-
export declare const ConfigCache:
|
|
8
|
-
export declare const SubscriptionCache:
|
|
7
|
+
export declare const ConfigCache: NodeCache;
|
|
8
|
+
export declare const SubscriptionCache: NodeCache;
|
|
9
|
+
export declare const cleanCaches: () => void;
|
package/build/utils/cache.js
CHANGED
|
@@ -3,15 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SubscriptionCache = exports.ConfigCache = void 0;
|
|
7
|
-
const
|
|
6
|
+
exports.cleanCaches = exports.SubscriptionCache = exports.ConfigCache = void 0;
|
|
7
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
8
8
|
const env_flag_1 = require("./env-flag");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const index_1 = require("./index");
|
|
10
|
+
exports.ConfigCache = new node_cache_1.default({
|
|
11
|
+
stdTTL: (0, index_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
12
|
+
maxKeys: 300,
|
|
13
|
+
useClones: false,
|
|
12
14
|
});
|
|
13
|
-
exports.SubscriptionCache = new
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
exports.SubscriptionCache = new node_cache_1.default({
|
|
16
|
+
stdTTL: (0, index_1.msToSeconds)((0, env_flag_1.getProviderCacheMaxage)()),
|
|
17
|
+
maxKeys: 300,
|
|
18
|
+
useClones: false,
|
|
16
19
|
});
|
|
17
|
-
|
|
20
|
+
const cleanCaches = () => {
|
|
21
|
+
exports.ConfigCache.flushAll();
|
|
22
|
+
exports.SubscriptionCache.flushAll();
|
|
23
|
+
};
|
|
24
|
+
exports.cleanCaches = cleanCaches;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNERBQW1DO0FBR25DLHlDQUFvRDtBQUNwRCxtQ0FBc0M7QUFPekIsUUFBQSxXQUFXLEdBQUcsSUFBSSxvQkFBUyxDQUFDO0lBQ3ZDLE1BQU0sRUFBRSxJQUFBLG1CQUFXLEVBQUMsSUFBQSxpQ0FBc0IsR0FBRSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxHQUFHO0lBQ1osU0FBUyxFQUFFLEtBQUs7Q0FDakIsQ0FBQyxDQUFDO0FBRVUsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLG9CQUFTLENBQUM7SUFDN0MsTUFBTSxFQUFFLElBQUEsbUJBQVcsRUFBQyxJQUFBLGlDQUFzQixHQUFFLENBQUM7SUFDN0MsT0FBTyxFQUFFLEdBQUc7SUFDWixTQUFTLEVBQUUsS0FBSztDQUNqQixDQUFDLENBQUM7QUFFSSxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDOUIsbUJBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2Qix5QkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFIVyxRQUFBLFdBQVcsZUFHdEIifQ==
|
package/build/utils/clash.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { NodeFilterType, NodeNameFilterType, PossibleNodeConfigType, SimpleNodeConfig, SortedNodeNameFilterType } from '../types';
|
|
2
|
-
export declare const getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
2
|
+
export declare const getClashNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: SortedNodeNameFilterType | NodeFilterType | undefined) => ReadonlyArray<any>;
|
|
3
3
|
export declare const getClashNodeNames: (list: ReadonlyArray<SimpleNodeConfig>, filter?: SortedNodeNameFilterType | NodeNameFilterType | undefined, existingProxies?: readonly string[] | undefined) => ReadonlyArray<string>;
|
package/build/utils/dns.js
CHANGED
|
@@ -5,12 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.resolve4And6 = exports.resolveDomain = void 0;
|
|
7
7
|
const dns_1 = require("dns");
|
|
8
|
-
const lru_cache_1 = __importDefault(require("lru-cache"));
|
|
9
8
|
const logger_1 = require("@surgio/logger");
|
|
10
9
|
const bluebird_1 = __importDefault(require("bluebird"));
|
|
10
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
|
11
11
|
const env_flag_1 = require("./env-flag");
|
|
12
|
-
const DomainCache = new
|
|
13
|
-
|
|
12
|
+
const DomainCache = new node_cache_1.default({
|
|
13
|
+
useClones: false,
|
|
14
14
|
});
|
|
15
15
|
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:dns' });
|
|
16
16
|
const resolveDomain = async (domain, timeout = (0, env_flag_1.getNetworkResolveTimeout)()) => {
|
|
@@ -26,7 +26,7 @@ const resolveDomain = async (domain, timeout = (0, env_flag_1.getNetworkResolveT
|
|
|
26
26
|
logger.debug(`resolved domain ${domain}: ${JSON.stringify(records)} ${Date.now() - now}ms`);
|
|
27
27
|
if (records.length) {
|
|
28
28
|
const address = records.map((item) => item.address);
|
|
29
|
-
DomainCache.set(domain, address, records[0].ttl
|
|
29
|
+
DomainCache.set(domain, address, records[0].ttl); // ttl is in seconds
|
|
30
30
|
return address;
|
|
31
31
|
}
|
|
32
32
|
// istanbul ignore next
|
|
@@ -45,4 +45,4 @@ const resolve4And6 = async (domain) => {
|
|
|
45
45
|
return [...ipv4, ...ipv6];
|
|
46
46
|
};
|
|
47
47
|
exports.resolve4And6 = resolve4And6;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2Rucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2QkFBcUQ7QUFDckQsMkNBQThDO0FBQzlDLHdEQUFnQztBQUNoQyw0REFBbUM7QUFFbkMseUNBQXNEO0FBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQVMsQ0FBQztJQUNoQyxTQUFTLEVBQUUsS0FBSztDQUNqQixDQUFDLENBQUM7QUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEVBQUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBRXRELE1BQU0sYUFBYSxHQUFHLEtBQUssRUFDaEMsTUFBYyxFQUNkLFVBQWtCLElBQUEsbUNBQXdCLEdBQUUsRUFDWixFQUFFO0lBQ2xDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzQixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUEwQixDQUFDO0tBQ3pEO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBUSxDQUFDLElBQUksQ0FBK0I7UUFDaEUsSUFBQSxvQkFBWSxFQUFDLE1BQU0sQ0FBQztRQUNwQixrQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQ3ZDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQ1YsbUJBQW1CLE1BQU0sS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FDZixJQUFJLENBQ0wsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUN0RSxPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVELHVCQUF1QjtJQUN2QixPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQztBQTVCVyxRQUFBLGFBQWEsaUJBNEJ4QjtBQUVLLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDL0IsTUFBYyxFQUN5QixFQUFFO0lBQ3pDLHVCQUF1QjtJQUN2QixTQUFTLEtBQUs7UUFDWixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxjQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDaEQsY0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0tBQ2pELENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQztBQWRXLFFBQUEsWUFBWSxnQkFjdkIifQ==
|
package/build/utils/env-flag.js
CHANGED
|
@@ -20,7 +20,7 @@ const getNetworkConcurrency = () => process.env[constant_1.ENV_SURGIO_NETWORK_CO
|
|
|
20
20
|
exports.getNetworkConcurrency = getNetworkConcurrency;
|
|
21
21
|
const getNetworkRetry = () => process.env[constant_1.ENV_SURGIO_NETWORK_RETRY]
|
|
22
22
|
? Number(process.env[constant_1.ENV_SURGIO_NETWORK_RETRY])
|
|
23
|
-
:
|
|
23
|
+
: 0;
|
|
24
24
|
exports.getNetworkRetry = getNetworkRetry;
|
|
25
25
|
const getNetworkClashUA = () => { var _a; return (_a = process.env[constant_1.ENV_SURGIO_NETWORK_CLASH_UA]) !== null && _a !== void 0 ? _a : 'clash'; };
|
|
26
26
|
exports.getNetworkClashUA = getNetworkClashUA;
|
package/build/utils/index.d.ts
CHANGED
|
@@ -5,8 +5,7 @@ export * from './clash';
|
|
|
5
5
|
export * from './quantumult';
|
|
6
6
|
export declare const getDownloadUrl: (baseUrl: string | undefined, artifactName: string, inline?: boolean, accessToken?: string | undefined) => string;
|
|
7
7
|
export declare const getUrl: (baseUrl: string, path: string, accessToken?: string | undefined) => string;
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const getMellowNodes: (list: ReadonlyArray<VmessNodeConfig | ShadowsocksNodeConfig>, filter?: NodeFilterType | SortedNodeNameFilterType | undefined) => string;
|
|
8
|
+
export declare const getMellowNodes: (list: ReadonlyArray<VmessNodeConfig | ShadowsocksNodeConfig>, filter?: SortedNodeNameFilterType | NodeFilterType | undefined) => string;
|
|
10
9
|
export declare const toUrlSafeBase64: (str: string) => string;
|
|
11
10
|
export declare const fromUrlSafeBase64: (str: string) => string;
|
|
12
11
|
export declare const toBase64: (str: string) => string;
|
|
@@ -41,6 +40,7 @@ export declare const normalizeClashProxyGroupConfig: (nodeList: ReadonlyArray<Po
|
|
|
41
40
|
export declare const ensureConfigFolder: (dir?: string) => string;
|
|
42
41
|
export declare const formatV2rayConfig: (localPort: number, nodeConfig: VmessNodeConfig) => JsonObject;
|
|
43
42
|
export declare const lowercaseHeaderKeys: (headers: Record<string, string>) => Record<string, string>;
|
|
43
|
+
export declare const msToSeconds: (ms: number) => number;
|
|
44
44
|
export declare const isIp: (str: string) => boolean;
|
|
45
45
|
export declare const isNow: () => boolean;
|
|
46
46
|
export declare const isVercel: () => boolean;
|
|
@@ -49,3 +49,4 @@ export declare const isGitHubActions: () => boolean;
|
|
|
49
49
|
export declare const isGitLabCI: () => boolean;
|
|
50
50
|
export declare const isPkgBundle: () => boolean;
|
|
51
51
|
export declare const isRailway: () => boolean;
|
|
52
|
+
export declare const isNetlify: () => boolean;
|
package/build/utils/index.js
CHANGED
|
@@ -17,9 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.isRailway = exports.isPkgBundle = exports.isGitLabCI = exports.isGitHubActions = exports.isHeroku = exports.isVercel = exports.isNow = exports.isIp = exports.lowercaseHeaderKeys = exports.formatV2rayConfig = exports.ensureConfigFolder = exports.normalizeClashProxyGroupConfig = exports.decodeStringList = exports.pickAndFormatStringList = exports.toYaml = exports.generateClashProxyGroup = exports.getNodeNames = exports.getShadowsocksNodesJSON = exports.getV2rayNNodes = exports.getShadowsocksrNodes = exports.getShadowsocksNodes = exports.fromBase64 = exports.toBase64 = exports.fromUrlSafeBase64 = exports.toUrlSafeBase64 = exports.getMellowNodes = exports.
|
|
20
|
+
exports.isNetlify = exports.isRailway = exports.isPkgBundle = exports.isGitLabCI = exports.isGitHubActions = exports.isHeroku = exports.isVercel = exports.isNow = exports.isIp = exports.msToSeconds = exports.lowercaseHeaderKeys = exports.formatV2rayConfig = exports.ensureConfigFolder = exports.normalizeClashProxyGroupConfig = exports.decodeStringList = exports.pickAndFormatStringList = exports.toYaml = exports.generateClashProxyGroup = exports.getNodeNames = exports.getShadowsocksNodesJSON = exports.getV2rayNNodes = exports.getShadowsocksrNodes = exports.getShadowsocksNodes = exports.fromBase64 = exports.toBase64 = exports.fromUrlSafeBase64 = exports.toUrlSafeBase64 = exports.getMellowNodes = exports.getUrl = exports.getDownloadUrl = void 0;
|
|
21
21
|
const logger_1 = require("@surgio/logger");
|
|
22
|
-
const assert_1 = __importDefault(require("assert"));
|
|
23
22
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
24
23
|
const lodash_1 = __importDefault(require("lodash"));
|
|
25
24
|
const os_1 = __importDefault(require("os"));
|
|
@@ -30,10 +29,8 @@ const urlsafe_base64_1 = __importDefault(require("urlsafe-base64"));
|
|
|
30
29
|
const yaml_1 = __importDefault(require("yaml"));
|
|
31
30
|
const net_1 = __importDefault(require("net"));
|
|
32
31
|
const types_1 = require("../types");
|
|
33
|
-
const cache_1 = require("./cache");
|
|
34
32
|
const constant_1 = require("../constant");
|
|
35
33
|
const filter_1 = require("./filter");
|
|
36
|
-
const http_client_1 = __importDefault(require("./http-client"));
|
|
37
34
|
const v2ray_1 = require("./v2ray");
|
|
38
35
|
__exportStar(require("./surge"), exports);
|
|
39
36
|
__exportStar(require("./clash"), exports);
|
|
@@ -69,42 +66,6 @@ const getUrl = (baseUrl, path, accessToken) => {
|
|
|
69
66
|
return url.toString();
|
|
70
67
|
};
|
|
71
68
|
exports.getUrl = getUrl;
|
|
72
|
-
const getShadowsocksJSONConfig = async (url, udpRelay) => {
|
|
73
|
-
(0, assert_1.default)(url, '未指定订阅地址 url');
|
|
74
|
-
async function requestConfigFromRemote() {
|
|
75
|
-
const response = cache_1.ConfigCache.has(url)
|
|
76
|
-
? JSON.parse(cache_1.ConfigCache.get(url))
|
|
77
|
-
: await (async () => {
|
|
78
|
-
const res = await http_client_1.default.get(url);
|
|
79
|
-
cache_1.ConfigCache.set(url, res.body);
|
|
80
|
-
return JSON.parse(res.body);
|
|
81
|
-
})();
|
|
82
|
-
return response.configs.map((item) => {
|
|
83
|
-
const nodeConfig = {
|
|
84
|
-
nodeName: item.remarks,
|
|
85
|
-
type: types_1.NodeTypeEnum.Shadowsocks,
|
|
86
|
-
hostname: item.server,
|
|
87
|
-
port: item.server_port,
|
|
88
|
-
method: item.method,
|
|
89
|
-
password: item.password,
|
|
90
|
-
};
|
|
91
|
-
if (typeof udpRelay === 'boolean') {
|
|
92
|
-
nodeConfig['udp-relay'] = udpRelay;
|
|
93
|
-
}
|
|
94
|
-
if (item.plugin === 'obfs-local') {
|
|
95
|
-
const obfs = item.plugin_opts.match(/obfs=(\w+)/);
|
|
96
|
-
const obfsHost = item.plugin_opts.match(/obfs-host=(.+)$/);
|
|
97
|
-
if (obfs) {
|
|
98
|
-
nodeConfig.obfs = obfs[1];
|
|
99
|
-
nodeConfig['obfs-host'] = obfsHost ? obfsHost[1] : 'www.bing.com';
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return nodeConfig;
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
return await requestConfigFromRemote();
|
|
106
|
-
};
|
|
107
|
-
exports.getShadowsocksJSONConfig = getShadowsocksJSONConfig;
|
|
108
69
|
const getMellowNodes = function (list, filter) {
|
|
109
70
|
// istanbul ignore next
|
|
110
71
|
if (arguments.length === 2 && typeof filter === 'undefined') {
|
|
@@ -471,6 +432,8 @@ const lowercaseHeaderKeys = (headers) => {
|
|
|
471
432
|
return wsHeaders;
|
|
472
433
|
};
|
|
473
434
|
exports.lowercaseHeaderKeys = lowercaseHeaderKeys;
|
|
435
|
+
const msToSeconds = (ms) => Math.floor(ms / 1000);
|
|
436
|
+
exports.msToSeconds = msToSeconds;
|
|
474
437
|
// istanbul ignore next
|
|
475
438
|
const isIp = (str) => net_1.default.isIPv4(str) || net_1.default.isIPv6(str);
|
|
476
439
|
exports.isIp = isIp;
|
|
@@ -496,4 +459,7 @@ exports.isPkgBundle = isPkgBundle;
|
|
|
496
459
|
// istanbul ignore next
|
|
497
460
|
const isRailway = () => typeof process.env.RAILWAY_STATIC_URL !== 'undefined';
|
|
498
461
|
exports.isRailway = isRailway;
|
|
499
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBOEM7QUFDOUMsb0RBQTRCO0FBQzVCLHdEQUEwQjtBQUMxQixvREFBdUI7QUFDdkIsNENBQW9CO0FBQ3BCLCtCQUE0QjtBQUM1QixnRUFBdUM7QUFFdkMsNkJBQTJDO0FBQzNDLG9FQUEyQztBQUMzQyxnREFBd0I7QUFDeEIsOENBQXNCO0FBRXRCLG9DQVlrQjtBQUNsQixtQ0FBc0M7QUFDdEMsMENBQTBEO0FBQzFELHFDQUF1RDtBQUN2RCxnRUFBdUM7QUFDdkMsbUNBQXlDO0FBRXpDLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBRTdCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBRWxELE1BQU0sY0FBYyxHQUFHLENBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQ2IsWUFBb0IsRUFDcEIsTUFBTSxHQUFHLElBQUksRUFDYixXQUFvQixFQUNaLEVBQUU7SUFDVixJQUFJLGVBQWdDLENBQUM7SUFDckMsSUFBSSxJQUFZLENBQUM7SUFFakIsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzlCLGVBQWUsR0FBRyxJQUFJLHFCQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25DO1NBQU07UUFDTCxlQUFlLEdBQUcsSUFBSSxxQkFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxHQUFHLFlBQVksQ0FBQztLQUNyQjtJQUVELElBQUksV0FBVyxFQUFFO1FBQ2Ys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
|
|
462
|
+
// istanbul ignore next
|
|
463
|
+
const isNetlify = () => typeof process.env.NETLIFY !== 'undefined';
|
|
464
|
+
exports.isNetlify = isNetlify;
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBOEM7QUFFOUMsd0RBQTBCO0FBQzFCLG9EQUF1QjtBQUN2Qiw0Q0FBb0I7QUFDcEIsK0JBQTRCO0FBQzVCLGdFQUF1QztBQUV2Qyw2QkFBMkM7QUFDM0Msb0VBQTJDO0FBQzNDLGdEQUF3QjtBQUN4Qiw4Q0FBc0I7QUFFdEIsb0NBWWtCO0FBQ2xCLDBDQUEwRDtBQUMxRCxxQ0FBdUQ7QUFDdkQsbUNBQXlDO0FBRXpDLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFDeEIsK0NBQTZCO0FBRTdCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksRUFBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0FBRWxELE1BQU0sY0FBYyxHQUFHLENBQzVCLE9BQU8sR0FBRyxHQUFHLEVBQ2IsWUFBb0IsRUFDcEIsTUFBTSxHQUFHLElBQUksRUFDYixXQUFvQixFQUNaLEVBQUU7SUFDVixJQUFJLGVBQWdDLENBQUM7SUFDckMsSUFBSSxJQUFZLENBQUM7SUFFakIsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQzlCLGVBQWUsR0FBRyxJQUFJLHFCQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25DO1NBQU07UUFDTCxlQUFlLEdBQUcsSUFBSSxxQkFBZSxFQUFFLENBQUM7UUFDeEMsSUFBSSxHQUFHLFlBQVksQ0FBQztLQUNyQjtJQUVELElBQUksV0FBVyxFQUFFO1FBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFD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
|
|
@@ -5,7 +5,12 @@ const logger_1 = require("@surgio/logger");
|
|
|
5
5
|
const _1 = require("./");
|
|
6
6
|
const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:patch-proxy' });
|
|
7
7
|
const keys = ['http_proxy', 'https_proxy', 'all_proxy'];
|
|
8
|
-
if (!(0, _1.
|
|
8
|
+
if (!(0, _1.isNow)() &&
|
|
9
|
+
!(0, _1.isHeroku)() &&
|
|
10
|
+
!(0, _1.isGitHubActions)() &&
|
|
11
|
+
!(0, _1.isGitLabCI)() &&
|
|
12
|
+
!(0, _1.isRailway)() &&
|
|
13
|
+
!(0, _1.isNetlify)()) {
|
|
9
14
|
process.env.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE = '';
|
|
10
15
|
keys.forEach((key) => {
|
|
11
16
|
if (key in process.env) {
|
|
@@ -16,4 +21,4 @@ if (!(0, _1.isHeroku)() && !(0, _1.isNow)() && !(0, _1.isGitHubActions)() && !(0
|
|
|
16
21
|
}
|
|
17
22
|
});
|
|
18
23
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvcGF0Y2gtcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHVCQUF1Qjs7QUFFdkIsMkNBQThDO0FBQzlDLHlCQU9ZO0FBRVosTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxFQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztBQUNyRSxNQUFNLElBQUksR0FBMEIsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRS9FLElBQ0UsQ0FBQyxJQUFBLFFBQUssR0FBRTtJQUNSLENBQUMsSUFBQSxXQUFRLEdBQUU7SUFDWCxDQUFDLElBQUEsa0JBQWUsR0FBRTtJQUNsQixDQUFDLElBQUEsYUFBVSxHQUFFO0lBQ2IsQ0FBQyxJQUFBLFlBQVMsR0FBRTtJQUNaLENBQUMsSUFBQSxZQUFTLEdBQUUsRUFDWjtJQUNBLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLEdBQUcsRUFBRSxDQUFDO0lBRTdELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNuQixJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7Q0FDSiJ9
|
package/build/utils/surge.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export declare const getSurgeExtendHeaders: (wsHeaders: Record<string, string>)
|
|
|
3
3
|
/**
|
|
4
4
|
* @see https://manual.nssurge.com/policy/proxy.html
|
|
5
5
|
*/
|
|
6
|
-
export declare const getSurgeNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?:
|
|
6
|
+
export declare const getSurgeNodes: (list: ReadonlyArray<PossibleNodeConfigType>, filter?: SortedNodeNameFilterType | NodeFilterType | undefined) => string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "surgio",
|
|
3
3
|
"description": "Generating rules for Surge, Clash, Quantumult like a PRO",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.17.0",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"typings": "build/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"joi": "^17.1.1",
|
|
66
66
|
"listr": "^0.14.3",
|
|
67
67
|
"lodash": "^4.17.19",
|
|
68
|
-
"lru-cache": "^6.0.0",
|
|
69
68
|
"merge-stream": "^2.0.0",
|
|
70
69
|
"ms": "^2.1.3",
|
|
70
|
+
"node-cache": "^5.1.2",
|
|
71
71
|
"node-dir": "^0.1.17",
|
|
72
72
|
"nunjucks": "^3.2.1",
|
|
73
73
|
"ora": "^5.1.0",
|
|
@@ -92,7 +92,6 @@
|
|
|
92
92
|
"@types/inquirer": "^7.3.0",
|
|
93
93
|
"@types/listr": "^0.14.2",
|
|
94
94
|
"@types/lodash": "^4.14.174",
|
|
95
|
-
"@types/lru-cache": "^5.1.0",
|
|
96
95
|
"@types/node": "^16",
|
|
97
96
|
"@types/nunjucks": "^3.2.0",
|
|
98
97
|
"@types/sinon": "^10.0.6",
|