1 | import Provider from './provider/Provider';
|
2 | export declare enum NodeTypeEnum {
|
3 | HTTPS = "https",
|
4 | HTTP = "http",
|
5 | Shadowsocks = "shadowsocks",
|
6 | Shadowsocksr = "shadowsocksr",
|
7 | Snell = "snell",
|
8 | Vmess = "vmess",
|
9 | Trojan = "trojan",
|
10 | Socks5 = "socks5",
|
11 | Tuic = "tuic"
|
12 | }
|
13 | export declare enum SupportProviderEnum {
|
14 | Clash = "clash",
|
15 | Custom = "custom",
|
16 | ShadowsocksSubscribe = "shadowsocks_subscribe",
|
17 | ShadowsocksrSubscribe = "shadowsocksr_subscribe",
|
18 | ShadowsocksJsonSubscribe = "shadowsocks_json_subscribe",
|
19 | V2rayNSubscribe = "v2rayn_subscribe",
|
20 | BlackSSL = "blackssl",
|
21 | Ssd = "ssd",
|
22 | Trojan = "trojan"
|
23 | }
|
24 | export interface CommandConfig {
|
25 | publicUrl: string;
|
26 | readonly output: string;
|
27 | readonly artifacts: ReadonlyArray<ArtifactConfig>;
|
28 | readonly remoteSnippets?: ReadonlyArray<RemoteSnippetConfig>;
|
29 | readonly urlBase: string;
|
30 | readonly providerDir: string;
|
31 | readonly templateDir: string;
|
32 | readonly configDir: string;
|
33 | readonly analytics?: boolean;
|
34 | readonly checkHostname?: boolean;
|
35 | readonly upload?: {
|
36 | readonly prefix?: string;
|
37 | readonly region?: string;
|
38 | readonly endpoint?: string;
|
39 | readonly bucket: string;
|
40 | readonly accessKeyId: string;
|
41 | readonly accessKeySecret: string;
|
42 | };
|
43 | readonly binPath?: {
|
44 | readonly shadowsocksr?: string;
|
45 | readonly v2ray?: string;
|
46 | vmess?: string;
|
47 | };
|
48 | readonly flags?: {
|
49 | [name: string]: ReadonlyArray<string | RegExp> | string | RegExp;
|
50 | };
|
51 | readonly surgeConfig?: {
|
52 | readonly shadowsocksFormat?: 'ss' | 'custom';
|
53 | readonly v2ray?: 'native' | 'external';
|
54 | readonly resolveHostname?: boolean;
|
55 | readonly vmessAEAD?: boolean;
|
56 | };
|
57 | readonly quantumultXConfig?: {
|
58 | readonly vmessAEAD?: boolean;
|
59 | };
|
60 | readonly clashConfig?: {
|
61 | readonly ssrFormat?: 'native' | 'legacy';
|
62 | readonly enableTuic?: boolean;
|
63 | };
|
64 | readonly surfboardConfig?: {
|
65 | readonly vmessAEAD?: boolean;
|
66 | };
|
67 | readonly gateway?: {
|
68 | readonly accessToken?: string;
|
69 | readonly viewerToken?: string;
|
70 | readonly auth?: boolean;
|
71 | readonly cookieMaxAge?: number;
|
72 | readonly useCacheOnError?: boolean;
|
73 | };
|
74 | readonly proxyTestUrl?: string;
|
75 | readonly proxyTestInterval?: number;
|
76 | readonly customFilters?: {
|
77 | readonly [name: string]: NodeNameFilterType | SortedNodeNameFilterType;
|
78 | };
|
79 | readonly customParams?: PlainObjectOf<string | boolean | number>;
|
80 | readonly cache?: {
|
81 | readonly type?: 'redis' | 'default';
|
82 | readonly redisUrl?: string;
|
83 | };
|
84 | }
|
85 | export interface RemoteSnippetConfig {
|
86 | readonly url: string;
|
87 | readonly name: string;
|
88 | readonly surgioSnippet?: boolean;
|
89 | }
|
90 | export interface RemoteSnippet extends RemoteSnippetConfig {
|
91 | readonly main: (...args: string[]) => string;
|
92 | readonly text: string;
|
93 | }
|
94 | export interface ArtifactConfig {
|
95 | readonly name: string;
|
96 | readonly template: string | undefined;
|
97 | readonly provider: string;
|
98 | readonly combineProviders?: ReadonlyArray<string>;
|
99 | readonly categories?: ReadonlyArray<string>;
|
100 | readonly customParams?: PlainObjectOf<string | boolean | number>;
|
101 | readonly proxyGroupModifier?: ProxyGroupModifier;
|
102 | readonly destDir?: string;
|
103 | readonly templateString?: string;
|
104 | readonly downloadUrl?: string;
|
105 | }
|
106 | export interface ProviderConfig {
|
107 | readonly type: SupportProviderEnum;
|
108 | readonly nodeFilter?: NodeFilterType | SortedNodeNameFilterType;
|
109 | readonly netflixFilter?: NodeNameFilterType | SortedNodeNameFilterType;
|
110 | readonly youtubePremiumFilter?: NodeNameFilterType | SortedNodeNameFilterType;
|
111 | readonly startPort?: number;
|
112 | readonly customFilters?: {
|
113 | readonly [name: string]: NodeNameFilterType | SortedNodeNameFilterType;
|
114 | };
|
115 | readonly addFlag?: boolean;
|
116 | readonly removeExistingFlag?: boolean;
|
117 | readonly tfo?: boolean;
|
118 | readonly mptcp?: boolean;
|
119 | readonly renameNode?: (name: string) => string;
|
120 | readonly relayUrl?: boolean | string;
|
121 | readonly requestUserAgent?: string;
|
122 | readonly cache?: {
|
123 | readonly type?: 'redis' | 'default';
|
124 | };
|
125 | readonly underlyingProxy?: string;
|
126 | }
|
127 | export interface BlackSSLProviderConfig extends ProviderConfig {
|
128 | readonly username: string;
|
129 | readonly password: string;
|
130 | }
|
131 | export interface ShadowsocksJsonSubscribeProviderConfig extends ProviderConfig {
|
132 | readonly url: string;
|
133 | readonly udpRelay?: boolean;
|
134 | }
|
135 | export interface ShadowsocksSubscribeProviderConfig extends ProviderConfig {
|
136 | readonly url: string;
|
137 | readonly udpRelay?: boolean;
|
138 | }
|
139 | export interface ShadowsocksrSubscribeProviderConfig extends ProviderConfig {
|
140 | readonly url: string;
|
141 | readonly udpRelay?: boolean;
|
142 | }
|
143 | export interface V2rayNSubscribeProviderConfig extends ProviderConfig {
|
144 | readonly url: string;
|
145 | readonly compatibleMode?: boolean;
|
146 | readonly skipCertVerify?: boolean;
|
147 | readonly udpRelay?: boolean;
|
148 | readonly tls13?: boolean;
|
149 | }
|
150 | export interface ClashProviderConfig extends ProviderConfig {
|
151 | readonly url: string;
|
152 | readonly udpRelay?: boolean;
|
153 | readonly tls13?: boolean;
|
154 | }
|
155 | export interface SsdProviderConfig extends ProviderConfig {
|
156 | readonly url: string;
|
157 | readonly udpRelay?: boolean;
|
158 | }
|
159 | export interface CustomProviderConfig extends ProviderConfig {
|
160 | readonly nodeList: ReadonlyArray<any>;
|
161 | }
|
162 | export interface TrojanProviderConfig extends ProviderConfig {
|
163 | readonly url: string;
|
164 | readonly udpRelay?: boolean;
|
165 | readonly tls13?: boolean;
|
166 | }
|
167 | export interface HttpNodeConfig extends SimpleNodeConfig {
|
168 | readonly type: NodeTypeEnum.HTTP;
|
169 | readonly hostname: string;
|
170 | readonly port: number | string;
|
171 | readonly username: string;
|
172 | readonly password: string;
|
173 | }
|
174 | export interface HttpsNodeConfig extends TlsNodeConfig {
|
175 | readonly type: NodeTypeEnum.HTTPS;
|
176 | readonly username: string;
|
177 | readonly password: string;
|
178 | }
|
179 | export interface ShadowsocksNodeConfig extends SimpleNodeConfig {
|
180 | readonly type: NodeTypeEnum.Shadowsocks;
|
181 | readonly hostname: string;
|
182 | readonly port: number | string;
|
183 | readonly method: string;
|
184 | readonly password: string;
|
185 | readonly 'udp-relay'?: boolean;
|
186 | readonly obfs?: 'tls' | 'http' | 'ws' | 'wss';
|
187 | readonly 'obfs-host'?: string;
|
188 | readonly 'obfs-uri'?: string;
|
189 | readonly skipCertVerify?: boolean;
|
190 | readonly wsHeaders?: Record<string, string>;
|
191 | readonly tls13?: boolean;
|
192 | readonly mux?: boolean;
|
193 | }
|
194 | export interface SnellNodeConfig extends SimpleNodeConfig {
|
195 | readonly type: NodeTypeEnum.Snell;
|
196 | readonly hostname: string;
|
197 | readonly port: number | string;
|
198 | readonly psk: string;
|
199 | readonly obfs?: string;
|
200 | readonly 'obfs-host'?: string;
|
201 | readonly version?: string;
|
202 | readonly reuse?: boolean;
|
203 | }
|
204 | export interface ShadowsocksrNodeConfig extends SimpleNodeConfig {
|
205 | readonly type: NodeTypeEnum.Shadowsocksr;
|
206 | readonly hostname: string;
|
207 | readonly port: number | string;
|
208 | readonly method: string;
|
209 | readonly protocol: string;
|
210 | readonly obfs: string;
|
211 | readonly password: string;
|
212 | readonly obfsparam: string;
|
213 | readonly protoparam: string;
|
214 | readonly 'udp-relay'?: boolean;
|
215 | }
|
216 | export interface VmessNodeConfig extends SimpleNodeConfig {
|
217 | readonly type: NodeTypeEnum.Vmess;
|
218 | readonly hostname: string;
|
219 | readonly port: number | string;
|
220 | readonly method: 'auto' | 'aes-128-gcm' | 'chacha20-ietf-poly1305' | 'none';
|
221 | readonly uuid: string;
|
222 | readonly alterId: string;
|
223 | readonly network: 'tcp' | 'ws';
|
224 | readonly tls: boolean;
|
225 | readonly host?: string;
|
226 | readonly path?: string;
|
227 | readonly 'udp-relay'?: boolean;
|
228 | readonly tls13?: boolean;
|
229 | readonly skipCertVerify?: boolean;
|
230 | readonly wsHeaders?: Record<string, string>;
|
231 | readonly serverCertFingerprintSha256?: string;
|
232 | }
|
233 | export interface TrojanNodeConfig extends TlsNodeConfig {
|
234 | readonly type: NodeTypeEnum.Trojan;
|
235 | readonly password: string;
|
236 | readonly 'udp-relay'?: boolean;
|
237 | readonly network?: 'tcp' | 'ws';
|
238 | readonly wsPath?: string;
|
239 | readonly wsHeaders?: Record<string, string>;
|
240 | }
|
241 | export interface TuicNodeConfig extends TlsNodeConfig {
|
242 | readonly type: NodeTypeEnum.Tuic;
|
243 | readonly token: string;
|
244 | readonly 'udp-relay'?: boolean;
|
245 | }
|
246 | export interface Socks5NodeConfig extends SimpleNodeConfig {
|
247 | readonly type: NodeTypeEnum.Socks5;
|
248 | readonly hostname: string;
|
249 | readonly port: number | string;
|
250 | readonly username?: string;
|
251 | readonly password?: string;
|
252 | readonly tls?: boolean;
|
253 | readonly skipCertVerify?: boolean;
|
254 | readonly udpRelay?: boolean;
|
255 | readonly sni?: string;
|
256 | readonly clientCert?: string;
|
257 | }
|
258 | export interface SimpleNodeConfig {
|
259 | readonly type: NodeTypeEnum;
|
260 | nodeName: string;
|
261 | enable?: boolean;
|
262 | tfo?: boolean;
|
263 | mptcp?: boolean;
|
264 | shadowTls?: {
|
265 | password: string;
|
266 | sni?: string;
|
267 | };
|
268 | binPath?: string;
|
269 | localPort?: number;
|
270 | surgeConfig?: CommandConfig['surgeConfig'];
|
271 | clashConfig?: CommandConfig['clashConfig'];
|
272 | quantumultXConfig?: CommandConfig['quantumultXConfig'];
|
273 | surfboardConfig?: CommandConfig['surfboardConfig'];
|
274 | hostnameIp?: ReadonlyArray<string>;
|
275 | provider?: Provider;
|
276 | underlyingProxy?: string;
|
277 | testUrl?: string;
|
278 | }
|
279 | export interface TlsNodeConfig extends SimpleNodeConfig {
|
280 | readonly hostname: string;
|
281 | readonly port: number | string;
|
282 | readonly tls13?: boolean;
|
283 | readonly skipCertVerify?: boolean;
|
284 | readonly sni?: string;
|
285 | readonly alpn?: ReadonlyArray<string>;
|
286 | readonly serverCertFingerprintSha256?: string;
|
287 | }
|
288 | export interface PlainObject {
|
289 | readonly [name: string]: any;
|
290 | }
|
291 | export interface PlainObjectOf<T> {
|
292 | readonly [name: string]: T;
|
293 | }
|
294 | export interface CreateServerOptions {
|
295 | readonly cwd?: string;
|
296 | }
|
297 | export interface SubscriptionUserinfo {
|
298 | readonly upload: number;
|
299 | readonly download: number;
|
300 | readonly total: number;
|
301 | readonly expire: number;
|
302 | }
|
303 | export declare type NodeFilterType = (nodeConfig: PossibleNodeConfigType) => boolean;
|
304 | export declare type NodeNameFilterType = (simpleNodeConfig: SimpleNodeConfig) => boolean;
|
305 | export interface SortedNodeNameFilterType {
|
306 | readonly filter: <T>(nodeList: ReadonlyArray<T & SimpleNodeConfig>) => ReadonlyArray<T & SimpleNodeConfig>;
|
307 | readonly supportSort?: boolean;
|
308 | }
|
309 | export declare type PossibleNodeConfigType = HttpsNodeConfig | HttpNodeConfig | ShadowsocksNodeConfig | ShadowsocksrNodeConfig | SnellNodeConfig | VmessNodeConfig | TrojanNodeConfig | Socks5NodeConfig | TuicNodeConfig;
|
310 | export declare type ProxyGroupModifier = (nodeList: ReadonlyArray<PossibleNodeConfigType>, filters: PlainObjectOf<NodeNameFilterType | SortedNodeNameFilterType>) => ReadonlyArray<{
|
311 | readonly name: string;
|
312 | readonly type: 'select' | 'url-test' | 'fallback' | 'load-balance';
|
313 | readonly proxies?: ReadonlyArray<string>;
|
314 | readonly filter?: NodeNameFilterType;
|
315 | }>;
|