Files
podkop/fe-app-podkop/src/validators/validateProxyUrl.ts
2025-12-01 16:38:26 +02:00

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://',
),
};
}