fix(setup): TLS-Prüfungs-Checkbox aus Cluster-Join-GUI entfernt

Sicherheit des Joins kommt vom HMAC-Token, nicht von TLS-Cert-Trust.
Insecure=true wird jetzt immer im Handler gesetzt — GUI-Nutzer müssen
das nicht kennen oder konfigurieren.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-29 17:18:33 +02:00
parent 60e2aec5d9
commit 2e84268f61
6 changed files with 6 additions and 13 deletions

View File

@@ -1 +1 @@
1.1.150
1.1.151

View File

@@ -60,7 +60,7 @@ import (
usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users"
)
var version = "1.1.150"
var version = "1.1.151"
func main() {
addr := os.Getenv("EDGEGUARD_API_ADDR")

View File

@@ -11,7 +11,7 @@ import (
"git.netcell-it.de/projekte/edgeguard-native/internal/services/setup"
)
var version = "1.1.150"
var version = "1.1.151"
const usage = `edgeguard-ctl — EdgeGuard CLI

View File

@@ -41,7 +41,7 @@ import (
"git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts"
)
var version = "1.1.150"
var version = "1.1.151"
const (
// renewTickInterval — how often we re-evaluate expiring certs.

View File

@@ -151,7 +151,6 @@ func (h *SetupHandler) JoinCluster(c *gin.Context) {
ACMEEmail string `json:"acme_email" binding:"required,email"`
PrimaryFQDN string `json:"primary_fqdn" binding:"required"`
Token string `json:"token" binding:"required"`
Insecure bool `json:"insecure"`
}
if err := c.ShouldBindJSON(&body); err != nil {
response.BadRequest(c, err)
@@ -164,7 +163,7 @@ func (h *SetupHandler) JoinCluster(c *gin.Context) {
PrimaryFQDN: body.PrimaryFQDN,
Token: strings.TrimSpace(body.Token),
CommonName: fqdn,
Insecure: body.Insecure,
Insecure: true, // security comes from the HMAC token, not TLS cert trust
Force: true, // bootstrap self-signed cert must be replaced
Version: h.Version,
NodeID: h.NodeID,

View File

@@ -1,5 +1,5 @@
import { useState } from 'react'
import { Alert, Button, Card, Checkbox, Form, Input, Space, Typography, message } from 'antd'
import { Alert, Button, Card, Form, Input, Space, Typography, message } from 'antd'
import { ArrowLeftOutlined, CheckCircleOutlined, ClusterOutlined, DesktopOutlined } from '@ant-design/icons'
import { useNavigate } from 'react-router-dom'
import { useTranslation } from 'react-i18next'
@@ -24,7 +24,6 @@ interface JoinValues {
acme_email: string
primary_fqdn: string
token: string
insecure?: boolean
}
const FQDN_RE = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/
@@ -78,7 +77,6 @@ export default function SetupPage({ onComplete: _onComplete }: Props) {
acme_email: vals.acme_email.trim().toLowerCase(),
primary_fqdn: vals.primary_fqdn.trim().toLowerCase(),
token: vals.token.trim(),
insecure: vals.insecure ?? false,
})
setJoinDone(true)
} catch (e: unknown) {
@@ -281,10 +279,6 @@ export default function SetupPage({ onComplete: _onComplete }: Props) {
/>
</Form.Item>
<Form.Item name="insecure" valuePropName="checked">
<Checkbox>{t('setup.joinInsecure')}</Checkbox>
</Form.Item>
<Form.Item style={{ marginBottom: 0 }}>
<Button type="primary" htmlType="submit" block loading={loading}>
{t('setup.nodeSubmit')}