carbon-proxy 0.14.2 → 0.14.3
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/dist/package.json +1 -1
- package/dist/src/plugins/sharding/ShardingPlugin.d.ts +6 -0
- package/dist/src/plugins/sharding/ShardingPlugin.d.ts.map +1 -1
- package/dist/src/plugins/sharding/ShardingPlugin.js +27 -2
- package/dist/src/plugins/sharding/ShardingPlugin.js.map +1 -1
- package/dist/src/utils/proxy.d.ts +10 -2
- package/dist/src/utils/proxy.d.ts.map +1 -1
- package/dist/src/utils/proxy.js +31 -7
- package/dist/src/utils/proxy.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/package.json
CHANGED
|
@@ -16,6 +16,12 @@ export interface ShardingPluginOptions extends Omit<GatewayPluginOptions, "shard
|
|
|
16
16
|
* Maximum number of shards to spawn concurrently
|
|
17
17
|
*/
|
|
18
18
|
maxConcurrency?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Proxy URL for both WebSocket connections and REST API calls.
|
|
21
|
+
* If not specified, will check DISCORD_SOCKS_PROXY, DISCORD_HTTP_PROXY,
|
|
22
|
+
* then HTTP_PROXY/HTTPS_PROXY environment variables.
|
|
23
|
+
*/
|
|
24
|
+
proxyUrl?: string;
|
|
19
25
|
}
|
|
20
26
|
export declare class ShardingPlugin extends Plugin {
|
|
21
27
|
readonly id = "sharding";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShardingPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"ShardingPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,WAAW,qBAChB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC3C;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,cAAe,SAAQ,MAAM;IACzC,QAAQ,CAAC,EAAE,cAAa;IACxB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY;IACvD,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAA;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAK;IACnC,SAAS,CAAC,QAAQ,UAAQ;IAC1B,SAAS,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAEzC,mBAAmB,uBAAgB;gBAEvB,OAAO,EAAE,qBAAqB;IAM1C,IAAI,IAAI,kCAMP;IAEY,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAsE1C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD3C,UAAU,IAAI,IAAI;IAQzB;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAUnE;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAMrE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Plugin } from "../../abstracts/Plugin.js";
|
|
2
|
+
import { createProxyAgent, getProxyUrl } from "../../utils/proxy.js";
|
|
2
3
|
import { GatewayPlugin } from "../gateway/GatewayPlugin.js";
|
|
3
4
|
export class ShardingPlugin extends Plugin {
|
|
4
5
|
id = "sharding";
|
|
@@ -27,11 +28,35 @@ export class ShardingPlugin extends Plugin {
|
|
|
27
28
|
// If totalShards not provided, get recommended amount from Discord
|
|
28
29
|
if (!this.config.totalShards) {
|
|
29
30
|
try {
|
|
30
|
-
|
|
31
|
+
// Import proxy utilities for REST API calls
|
|
32
|
+
const proxyUrl = getProxyUrl(this.config.proxyUrl);
|
|
33
|
+
const fetchOptions = {
|
|
31
34
|
headers: {
|
|
32
35
|
Authorization: `Bot ${client.options.token}`
|
|
33
36
|
}
|
|
34
|
-
}
|
|
37
|
+
};
|
|
38
|
+
// Add dispatcher if proxy is configured
|
|
39
|
+
// For SOCKS proxies, try to use HTTP_PROXY for REST API calls
|
|
40
|
+
let effectiveProxyUrl = proxyUrl;
|
|
41
|
+
if (proxyUrl?.startsWith("socks")) {
|
|
42
|
+
// SOCKS doesn't work with fetch, try HTTP_PROXY fallback
|
|
43
|
+
const httpProxy = process.env.DISCORD_HTTP_PROXY ||
|
|
44
|
+
process.env.HTTP_PROXY ||
|
|
45
|
+
process.env.HTTPS_PROXY ||
|
|
46
|
+
process.env.http_proxy ||
|
|
47
|
+
process.env.https_proxy;
|
|
48
|
+
if (httpProxy && !httpProxy.startsWith("socks")) {
|
|
49
|
+
effectiveProxyUrl = httpProxy;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (effectiveProxyUrl && !effectiveProxyUrl.startsWith("socks")) {
|
|
53
|
+
const proxyAgent = await createProxyAgent(effectiveProxyUrl);
|
|
54
|
+
if (proxyAgent?.dispatcher) {
|
|
55
|
+
// @ts-expect-error - dispatcher is not in standard RequestInit but supported by undici
|
|
56
|
+
fetchOptions.dispatcher = proxyAgent.dispatcher;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const response = await fetch("https://discord.com/api/v10/gateway/bot", fetchOptions);
|
|
35
60
|
const gatewayInfo = (await response.json());
|
|
36
61
|
this.config.totalShards = gatewayInfo.shards;
|
|
37
62
|
if (!this.config.url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShardingPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"ShardingPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/sharding/ShardingPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAyB3D,MAAM,OAAO,cAAe,SAAQ,MAAM;IAChC,EAAE,GAAG,UAAU,CAAA;IACd,MAAM,CAAS;IAChB,MAAM,GAA+B,IAAI,GAAG,EAAE,CAAA;IAC9C,MAAM,CAAuB;IAC5B,cAAc,CAAQ;IACtB,UAAU,GAAa,EAAE,CAAA;IACzB,QAAQ,GAAG,KAAK,CAAA;IAChB,WAAW,CAAoB;IAEzC,mBAAmB,GAAG,aAAa,CAAA;IAEnC,YAAY,OAA8B;QACzC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QACrB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,IAAI;QACP,MAAM,KAAK,GAAkC,EAAE,CAAA;QAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAc;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,mEAAmE;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACJ,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAClD,MAAM,YAAY,GAAgB;oBACjC,OAAO,EAAE;wBACR,aAAa,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;qBAC5C;iBACD,CAAA;gBAED,wCAAwC;gBACxC,8DAA8D;gBAC9D,IAAI,iBAAiB,GAAG,QAAQ,CAAA;gBAChC,IAAI,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnC,yDAAyD;oBACzD,MAAM,SAAS,GACd,OAAO,CAAC,GAAG,CAAC,kBAAkB;wBAC9B,OAAO,CAAC,GAAG,CAAC,UAAU;wBACtB,OAAO,CAAC,GAAG,CAAC,WAAW;wBACvB,OAAO,CAAC,GAAG,CAAC,UAAU;wBACtB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;oBACxB,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjD,iBAAiB,GAAG,SAAS,CAAA;oBAC9B,CAAC;gBACF,CAAC;gBAED,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjE,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;oBAC5D,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;wBAC5B,uFAAuF;wBACvF,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;oBAChD,CAAC;gBACF,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC3B,yCAAyC,EACzC,YAAY,CACZ,CAAA;gBACD,MAAM,WAAW,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsB,CAAA;gBAChE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAA;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAA;gBAClC,CAAC;gBACD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAA;gBACrE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;YACtE,CAAC;QACF,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,4DAA4D,CAC5D,CAAA;QACF,CAAC;QAED,kCAAkC;QAClC,MAAM,aAAa,GAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;QAEzE,gCAAgC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,CAAA;QACpC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC/B,CAAC;IAES,KAAK,CAAC,iBAAiB;QAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAEzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,MAAM,YAAY,GAAa,EAAE,CAAA;QAEjC,oDAAoD;QACpD,OACC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;YACzC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QAC3C,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,oCAAoC;QACpC,MAAM,OAAO,CAAC,GAAG,CAChB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,mBAAmB,CACzC;gBACC,GAAG,IAAI,CAAC,MAAM;gBACd,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;aAC7B,EACD,IAAI,CAAC,WAAW,CAChB,CAAA;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClC,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC,CAAC,CACF,CAAA;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,wDAAwD;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,uDAAuD;YACvD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC;IACF,CAAC;IAEM,UAAU;QAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACrB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,OAAe;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,OAAe,EAAE,WAAmB;QAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACpC,CAAC;QACD,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9D,CAAC;CACD"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Priority:
|
|
5
5
|
* 1. configuredProxy (passed directly)
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
6
|
+
* 2. DISCORD_SOCKS_PROXY environment variable (for SOCKS proxies)
|
|
7
|
+
* 3. DISCORD_HTTP_PROXY environment variable (for HTTP/HTTPS proxies)
|
|
8
|
+
* 4. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
|
|
8
9
|
*
|
|
9
10
|
* @param configuredProxy - Proxy URL from options
|
|
10
11
|
* @returns Proxy URL string or null if no proxy is configured
|
|
@@ -16,6 +17,13 @@ export declare function getProxyUrl(configuredProxy?: string): string | null;
|
|
|
16
17
|
* Supports:
|
|
17
18
|
* - HTTP/HTTPS proxies via undici's ProxyAgent
|
|
18
19
|
* - SOCKS4/5 proxies via socks-proxy-agent (for WebSocket)
|
|
20
|
+
* - SOCKS5H/SOCKS4A proxies with remote DNS resolution (avoids DNS pollution)
|
|
21
|
+
*
|
|
22
|
+
* Protocol suffixes:
|
|
23
|
+
* - socks5:// - Local DNS resolution (default)
|
|
24
|
+
* - socks5h:// - Remote DNS resolution via proxy (recommended for DNS pollution issues)
|
|
25
|
+
* - socks4:// - SOCKS4 with local DNS
|
|
26
|
+
* - socks4a:// - SOCKS4A with remote DNS
|
|
19
27
|
*
|
|
20
28
|
* @param proxyUrl - The proxy URL to create an agent for
|
|
21
29
|
* @returns Proxy agent instance or null if not supported
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AA2CA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoCnE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CA4EzD"}
|
package/dist/src/utils/proxy.js
CHANGED
|
@@ -2,7 +2,15 @@ function parseProxyUrl(proxyUrl) {
|
|
|
2
2
|
try {
|
|
3
3
|
const url = new URL(proxyUrl);
|
|
4
4
|
const protocol = url.protocol.replace(":", "");
|
|
5
|
-
if ([
|
|
5
|
+
if ([
|
|
6
|
+
"http",
|
|
7
|
+
"https",
|
|
8
|
+
"socks",
|
|
9
|
+
"socks5",
|
|
10
|
+
"socks5h",
|
|
11
|
+
"socks4",
|
|
12
|
+
"socks4a"
|
|
13
|
+
].includes(protocol)) {
|
|
6
14
|
return {
|
|
7
15
|
url: proxyUrl,
|
|
8
16
|
type: protocol
|
|
@@ -19,8 +27,9 @@ function parseProxyUrl(proxyUrl) {
|
|
|
19
27
|
*
|
|
20
28
|
* Priority:
|
|
21
29
|
* 1. configuredProxy (passed directly)
|
|
22
|
-
* 2.
|
|
23
|
-
* 3.
|
|
30
|
+
* 2. DISCORD_SOCKS_PROXY environment variable (for SOCKS proxies)
|
|
31
|
+
* 3. DISCORD_HTTP_PROXY environment variable (for HTTP/HTTPS proxies)
|
|
32
|
+
* 4. HTTP_PROXY / HTTPS_PROXY environment variables (fallback)
|
|
24
33
|
*
|
|
25
34
|
* @param configuredProxy - Proxy URL from options
|
|
26
35
|
* @returns Proxy URL string or null if no proxy is configured
|
|
@@ -30,12 +39,17 @@ export function getProxyUrl(configuredProxy) {
|
|
|
30
39
|
if (configuredProxy) {
|
|
31
40
|
return configuredProxy;
|
|
32
41
|
}
|
|
33
|
-
// 2. Check Discord-specific proxy environment variable
|
|
42
|
+
// 2. Check Discord-specific SOCKS proxy environment variable
|
|
43
|
+
const discordSocksProxy = process.env.DISCORD_SOCKS_PROXY;
|
|
44
|
+
if (discordSocksProxy) {
|
|
45
|
+
return discordSocksProxy;
|
|
46
|
+
}
|
|
47
|
+
// 3. Check Discord-specific HTTP proxy environment variable
|
|
34
48
|
const discordProxy = process.env.DISCORD_HTTP_PROXY;
|
|
35
49
|
if (discordProxy) {
|
|
36
50
|
return discordProxy;
|
|
37
51
|
}
|
|
38
|
-
//
|
|
52
|
+
// 4. Fall back to generic proxy variables
|
|
39
53
|
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
|
|
40
54
|
if (httpsProxy) {
|
|
41
55
|
return httpsProxy;
|
|
@@ -44,7 +58,7 @@ export function getProxyUrl(configuredProxy) {
|
|
|
44
58
|
if (httpProxy) {
|
|
45
59
|
return httpProxy;
|
|
46
60
|
}
|
|
47
|
-
//
|
|
61
|
+
// 5. Check ALL_PROXY (supports SOCKS)
|
|
48
62
|
const allProxy = process.env.ALL_PROXY || process.env.all_proxy;
|
|
49
63
|
if (allProxy) {
|
|
50
64
|
return allProxy;
|
|
@@ -57,6 +71,13 @@ export function getProxyUrl(configuredProxy) {
|
|
|
57
71
|
* Supports:
|
|
58
72
|
* - HTTP/HTTPS proxies via undici's ProxyAgent
|
|
59
73
|
* - SOCKS4/5 proxies via socks-proxy-agent (for WebSocket)
|
|
74
|
+
* - SOCKS5H/SOCKS4A proxies with remote DNS resolution (avoids DNS pollution)
|
|
75
|
+
*
|
|
76
|
+
* Protocol suffixes:
|
|
77
|
+
* - socks5:// - Local DNS resolution (default)
|
|
78
|
+
* - socks5h:// - Remote DNS resolution via proxy (recommended for DNS pollution issues)
|
|
79
|
+
* - socks4:// - SOCKS4 with local DNS
|
|
80
|
+
* - socks4a:// - SOCKS4A with remote DNS
|
|
60
81
|
*
|
|
61
82
|
* @param proxyUrl - The proxy URL to create an agent for
|
|
62
83
|
* @returns Proxy agent instance or null if not supported
|
|
@@ -96,7 +117,10 @@ export async function createProxyAgent(proxyUrl) {
|
|
|
96
117
|
// Use SOCKS proxy agent
|
|
97
118
|
try {
|
|
98
119
|
const { SocksProxyAgent } = await import("socks-proxy-agent");
|
|
99
|
-
|
|
120
|
+
// Add timeout configuration to prevent hanging connections
|
|
121
|
+
const agent = new SocksProxyAgent(parsed.url, {
|
|
122
|
+
timeout: 30000 // 30 second timeout
|
|
123
|
+
});
|
|
100
124
|
console.log(`[Carbon] Using SOCKS proxy: ${parsed.url}`);
|
|
101
125
|
// Return both agent and dispatcher for compatibility
|
|
102
126
|
// - agent: for ws library (WebSocket)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"AAQA,SAAS,aAAa,CAAC,QAAgB;IACtC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAE9C,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/utils/proxy.ts"],"names":[],"mappings":"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"}
|