mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-16 16:36:56 +03:00
36 lines
879 B
TypeScript
36 lines
879 B
TypeScript
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://'),
|
|
};
|
|
}
|
|
|
|
if (!url || /\s/.test(url)) {
|
|
return {
|
|
valid: false,
|
|
message: _('Invalid Trojan URL: must not contain spaces'),
|
|
};
|
|
}
|
|
|
|
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') };
|
|
}
|