mirror of
https://github.com/itdoginfo/podkop.git
synced 2026-01-28 21:30:41 +03:00
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { ValidationResult } from './types';
|
|
import { validateShadowsocksUrl } from './validateShadowsocksUrl';
|
|
import { validateVlessUrl } from './validateVlessUrl';
|
|
import { validateTrojanUrl } from './validateTrojanUrl';
|
|
import { validateSocksUrl } from './validateSocksUrl';
|
|
import { validateHysteria2Url } from './validateHysteriaUrl';
|
|
|
|
// TODO refactor current validation and add tests
|
|
export function validateProxyUrl(url: string): ValidationResult {
|
|
const trimmedUrl = url.trim();
|
|
|
|
if (trimmedUrl.startsWith('ss://')) {
|
|
return validateShadowsocksUrl(trimmedUrl);
|
|
}
|
|
|
|
if (trimmedUrl.startsWith('vless://')) {
|
|
return validateVlessUrl(trimmedUrl);
|
|
}
|
|
|
|
if (trimmedUrl.startsWith('trojan://')) {
|
|
return validateTrojanUrl(trimmedUrl);
|
|
}
|
|
|
|
if (/^socks(4|4a|5):\/\//.test(trimmedUrl)) {
|
|
return validateSocksUrl(trimmedUrl);
|
|
}
|
|
|
|
if (
|
|
trimmedUrl.startsWith('hysteria2://') ||
|
|
trimmedUrl.startsWith('hy2://')
|
|
) {
|
|
return validateHysteria2Url(trimmedUrl);
|
|
}
|
|
|
|
return {
|
|
valid: false,
|
|
message: _(
|
|
'URL must start with vless://, ss://, trojan://, socks4/5://, or hysteria2://hy2://',
|
|
),
|
|
};
|
|
}
|