mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-11 02:44:57 +08:00
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { PROXY_TYPE } from "../../../enum/hijpass";
|
|
import {
|
|
CustomProxyNode,
|
|
Hysteria2Config,
|
|
LoadBalanceProxyNode,
|
|
ProxyNode,
|
|
ShadowsocksConfig,
|
|
ShadowTLSConfig,
|
|
TuicConfig,
|
|
VlessConfig
|
|
} from "../../../module/luci";
|
|
|
|
const ProxyUtils = {
|
|
|
|
/**
|
|
* 从 UCI 配置段创建对应的 ProxyNode 配置类
|
|
*/
|
|
createProxyConfigFromSection: function (section: any): ProxyNode | null {
|
|
const type = section.type;
|
|
let config: ProxyNode;
|
|
|
|
switch (type) {
|
|
case PROXY_TYPE.LOAD_BALANCE:
|
|
config = new LoadBalanceProxyNode();
|
|
break;
|
|
case PROXY_TYPE.HYSTERIA2:
|
|
config = new Hysteria2Config();
|
|
break;
|
|
case PROXY_TYPE.SHADOWSOCKS:
|
|
config = new ShadowsocksConfig();
|
|
break;
|
|
case PROXY_TYPE.TUIC:
|
|
config = new TuicConfig();
|
|
break;
|
|
case PROXY_TYPE.SHADOWTLS:
|
|
config = new ShadowTLSConfig();
|
|
break;
|
|
case PROXY_TYPE.VLESS:
|
|
config = new VlessConfig();
|
|
break;
|
|
case PROXY_TYPE.CUSTOM:
|
|
config = new CustomProxyNode();
|
|
break;
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
// 从 UCI 配置复制所有字段
|
|
Object.keys(section).forEach((key) => {
|
|
if (key !== '.type' && key !== '.name' && key !== '.anonymous') {
|
|
Reflect.set(config, key, section[key]);
|
|
}
|
|
});
|
|
config.cfgid = section['.name'];
|
|
|
|
return config;
|
|
}
|
|
}
|
|
|
|
export { ProxyUtils }
|