feat: add trojan link support to Proxy Configuration URL validation

This commit is contained in:
divocat
2025-10-03 14:32:17 +03:00
parent 96bcc36cf1
commit 7b06f422af
4 changed files with 62 additions and 2 deletions

View File

@@ -8,3 +8,4 @@ export * from './bulkValidate';
export * from './validateShadowsocksUrl';
export * from './validateVlessUrl';
export * from './validateOutboundJson';
export * from './validateTrojanUrl';

View File

@@ -0,0 +1,26 @@
import { ValidationResult } from './types';
// TODO refactor current validation and add tests
export function validateTrojanUrl(url: string): ValidationResult {
if (!url.startsWith('trojan://')) {
return {
valid: false,
message: 'Invalid Trojan URL: must start with trojan://',
};
}
try {
const parsedUrl = new URL(url);
if (!parsedUrl.username || !parsedUrl.hostname || !parsedUrl.port) {
return {
valid: false,
message: 'Invalid Trojan URL: must contain username, hostname and port',
};
}
} catch (e) {
return { valid: false, message: 'Invalid Trojan URL: parsing failed' };
}
return { valid: true, message: 'Valid' };
}