* Migration 0011: members JSONB für network_interfaces. Bridge/bond brauchen ≥1 Member (NOT VALID-Constraint, schont bestehende Rows). vlan/wireguard/ethernet ignorieren das Feld. * Backend-Validation pro Typ: vlan→parent+vlan_id, bridge/bond→members, ethernet/wireguard→keins. Repo serialisiert via JSONB. * Form Networks: Members-Multi-Select für bridge/bond, Composition- Spalte zeigt vlan-tag bzw. Member-Liste. * Firewall-Rules-Tab zeigt jetzt SystemRulesCard ganz oben — Anti- Lockout (SSH/443), stateful baseline, default-deny-Erklärung. * Theme-Tokens 1:1 mail-gateway: fontSize 13, controlHeight 34 (vorher zu dichtes 12/28). Density kommt vom DataTable size="small". * Makefile publish-amd64 lädt jetzt auch edgeguard-ui_*_all.deb und edgeguard_*_all.deb hoch (vorher nur api). * Version 1.0.0 → 1.0.3. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
21 lines
1.0 KiB
Go
21 lines
1.0 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
type NetworkInterface struct {
|
|
ID int64 `gorm:"primaryKey" json:"id"`
|
|
Name string `gorm:"column:name;uniqueIndex" json:"name"`
|
|
Type string `gorm:"column:type" json:"type"`
|
|
Parent *string `gorm:"column:parent" json:"parent,omitempty"`
|
|
VLANID *int `gorm:"column:vlan_id" json:"vlan_id,omitempty"`
|
|
Members []string `gorm:"column:members;type:jsonb" json:"members"`
|
|
Role string `gorm:"column:role" json:"role"`
|
|
MTU *int `gorm:"column:mtu" json:"mtu,omitempty"`
|
|
Active bool `gorm:"column:active" json:"active"`
|
|
Description *string `gorm:"column:description" json:"description,omitempty"`
|
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
|
}
|
|
|
|
func (NetworkInterface) TableName() string { return "network_interfaces" }
|