mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-17 13:08:36 +03:00
feat: add validations & translations
This commit is contained in:
@@ -58,18 +58,22 @@ function validateDNS(value) {
|
||||
|
||||
// src/validators/validateUrl.ts
|
||||
function validateUrl(url, protocols = ["http:", "https:"]) {
|
||||
try {
|
||||
const parsedUrl = new URL(url);
|
||||
if (!protocols.includes(parsedUrl.protocol)) {
|
||||
return {
|
||||
valid: false,
|
||||
message: `${_("URL must use one of the following protocols:")} ${protocols.join(", ")}`
|
||||
};
|
||||
}
|
||||
return { valid: true, message: _("Valid") };
|
||||
} catch (_e) {
|
||||
if (!url.length) {
|
||||
return { valid: false, message: _("Invalid URL format") };
|
||||
}
|
||||
const hasValidProtocol = protocols.some((p) => url.indexOf(p + "//") === 0);
|
||||
if (!hasValidProtocol)
|
||||
return {
|
||||
valid: false,
|
||||
message: _("URL must use one of the following protocols:") + " " + protocols.join(", ")
|
||||
};
|
||||
const regex = new RegExp(
|
||||
`^(?:${protocols.map((p) => p.replace(":", "")).join("|")})://(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d+)?(?:/[^\\s]*)?$`
|
||||
);
|
||||
if (regex.test(url)) {
|
||||
return { valid: true, message: _("Valid") };
|
||||
}
|
||||
return { valid: false, message: _("Invalid URL format") };
|
||||
}
|
||||
|
||||
// src/validators/validatePath.ts
|
||||
|
||||
@@ -126,6 +126,19 @@ function createSectionContent(section) {
|
||||
o.default = "50"
|
||||
o.rmempty = false;
|
||||
o.depends("proxy_config_type", "urltest");
|
||||
o.validate = function (section_id, value) {
|
||||
if (!value || value.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const parsed = parseFloat(value);
|
||||
|
||||
if (/^[0-9]+$/.test(value) && !isNaN(parsed) && isFinite(parsed) && parsed >= 50 && parsed <= 1000) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return _('Must be a number in the range of 50 - 1000');
|
||||
};
|
||||
|
||||
o = section.option(
|
||||
form.Value,
|
||||
@@ -141,6 +154,20 @@ function createSectionContent(section) {
|
||||
o.rmempty = false;
|
||||
o.depends("proxy_config_type", "urltest");
|
||||
|
||||
o.validate = function (section_id, value) {
|
||||
if (!value || value.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const validation = main.validateUrl(value);
|
||||
|
||||
if (validation.valid) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return validation.message;
|
||||
};
|
||||
|
||||
o = section.option(
|
||||
form.Flag,
|
||||
"enable_udp_over_tcp",
|
||||
|
||||
Reference in New Issue
Block a user