fix(backends): Adress-Validierung für Backend-Server + Quick-Backend (v1.1.140)
Pattern-Validator lehnt offensichtlich ungültige Adressen (Sonderzeichen, Leerzeichen) schon im Frontend ab, bevor sie HAProxy-Config-Generierung zerstören können. Gilt für Backend-Server-Modal und Domain-Quick-Backend. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,7 +60,7 @@ import (
|
|||||||
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
|
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.139"
|
var version = "1.1.140"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
addr := os.Getenv("EDGEGUARD_API_ADDR")
|
addr := os.Getenv("EDGEGUARD_API_ADDR")
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
|
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.139"
|
var version = "1.1.140"
|
||||||
|
|
||||||
const usage = `edgeguard-ctl — EdgeGuard CLI
|
const usage = `edgeguard-ctl — EdgeGuard CLI
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import (
|
|||||||
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
|
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
|
||||||
)
|
)
|
||||||
|
|
||||||
var version = "1.1.139"
|
var version = "1.1.140"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// renewTickInterval — how often we re-evaluate expiring certs.
|
// renewTickInterval — how often we re-evaluate expiring certs.
|
||||||
|
|||||||
@@ -394,6 +394,7 @@
|
|||||||
"edit": "Server bearbeiten",
|
"edit": "Server bearbeiten",
|
||||||
"name": "Server-Name",
|
"name": "Server-Name",
|
||||||
"address": "Adresse",
|
"address": "Adresse",
|
||||||
|
"addressInvalid": "Gültige IPv4/IPv6-Adresse oder Hostname eingeben",
|
||||||
"port": "Port",
|
"port": "Port",
|
||||||
"target": "Endpoint",
|
"target": "Endpoint",
|
||||||
"weight": "Gewicht",
|
"weight": "Gewicht",
|
||||||
|
|||||||
@@ -394,6 +394,7 @@
|
|||||||
"edit": "Edit server",
|
"edit": "Edit server",
|
||||||
"name": "Server name",
|
"name": "Server name",
|
||||||
"address": "Address",
|
"address": "Address",
|
||||||
|
"addressInvalid": "Enter a valid IPv4/IPv6 address or hostname",
|
||||||
"port": "Port",
|
"port": "Port",
|
||||||
"target": "Endpoint",
|
"target": "Endpoint",
|
||||||
"weight": "Weight",
|
"weight": "Weight",
|
||||||
|
|||||||
@@ -387,7 +387,14 @@ function ServerPanel({ backendID, haproxyStats, isViewer }: { backendID: number;
|
|||||||
<Form.Item label={t('backends.server.name')} name="name" rules={[{ required: true }]}>
|
<Form.Item label={t('backends.server.name')} name="name" rules={[{ required: true }]}>
|
||||||
<Input placeholder="vmm-1" />
|
<Input placeholder="vmm-1" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t('backends.server.address')} name="address" rules={[{ required: true }]}>
|
<Form.Item
|
||||||
|
label={t('backends.server.address')}
|
||||||
|
name="address"
|
||||||
|
rules={[
|
||||||
|
{ required: true },
|
||||||
|
{ pattern: /^(\d{1,3}\.){3}\d{1,3}$|^[0-9a-fA-F:]{2,39}$|^[a-zA-Z0-9]([a-zA-Z0-9\-.]{0,61}[a-zA-Z0-9])?$/, message: t('backends.server.addressInvalid') },
|
||||||
|
]}
|
||||||
|
>
|
||||||
<Input placeholder="10.0.0.11" />
|
<Input placeholder="10.0.0.11" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t('backends.server.port')} name="port" rules={[{ required: true }]}>
|
<Form.Item label={t('backends.server.port')} name="port" rules={[{ required: true }]}>
|
||||||
|
|||||||
@@ -413,7 +413,14 @@ export default function DomainsPage() {
|
|||||||
{ value: 'https', label: 'https' },
|
{ value: 'https', label: 'https' },
|
||||||
]} />
|
]} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t('domains.quickBackendAddress')} name="address" rules={[{ required: true }]}>
|
<Form.Item
|
||||||
|
label={t('domains.quickBackendAddress')}
|
||||||
|
name="address"
|
||||||
|
rules={[
|
||||||
|
{ required: true },
|
||||||
|
{ pattern: /^(\d{1,3}\.){3}\d{1,3}$|^[0-9a-fA-F:]{2,39}$|^[a-zA-Z0-9]([a-zA-Z0-9\-.]{0,61}[a-zA-Z0-9])?$/, message: t('backends.server.addressInvalid') },
|
||||||
|
]}
|
||||||
|
>
|
||||||
<Input placeholder="10.0.0.10" />
|
<Input placeholder="10.0.0.10" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label={t('domains.quickBackendPort')} name="port" rules={[{ required: true, type: 'number', min: 1, max: 65535 }]}>
|
<Form.Item label={t('domains.quickBackendPort')} name="port" rules={[{ required: true, type: 'number', min: 1, max: 65535 }]}>
|
||||||
|
|||||||
Reference in New Issue
Block a user