diff --git a/tools/installer/install.html b/tools/installer/install.html
index 6b4903a..a06f85b 100644
--- a/tools/installer/install.html
+++ b/tools/installer/install.html
@@ -141,6 +141,7 @@
@@ -443,8 +444,19 @@ document.addEventListener('click', async e => {
});
$('cfg-next').addEventListener('click', () => {
- S.host = $('cfg-host').value.trim() || 'localhost';
- S.port = $('cfg-port').value.trim() || '3000';
+ const rawHost = $('cfg-host').value.trim() || 'localhost';
+ const rawPort = parseInt($('cfg-port').value.trim(), 10);
+ if (!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/.test(rawHost) && rawHost !== 'localhost') {
+ showErr('cfg-err', 'Invalid hostname. Use only letters, digits, hyphens and dots.');
+ return;
+ }
+ if (isNaN(rawPort) || rawPort < 1 || rawPort > 65535) {
+ showErr('cfg-err', 'Invalid port. Must be a number between 1 and 65535.');
+ return;
+ }
+ showErr('cfg-err', '');
+ S.host = rawHost;
+ S.port = String(rawPort);
S.tz = $('cfg-tz').value.trim() || 'UTC';
showStep(1);
});