New firewall package generates an nftables snippet (INPUT accept for the listen port, FORWARD rules for the WireGuard interface, optional LAN forwarding via a new ServerSetting.LanInterface field). Text only - nothing is applied to the live firewall. Exposed as GET /servers/:id/firewall-preview and a "Firewall Preview" button in the All Servers page. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
34 lines
1.3 KiB
Go
34 lines
1.3 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// GlobalSetting model
|
|
type GlobalSetting struct {
|
|
EndpointAddress string `json:"endpoint_address"`
|
|
DNSServers []string `json:"dns_servers"`
|
|
MTU int `json:"mtu,string"`
|
|
PersistentKeepalive int `json:"persistent_keepalive,string"`
|
|
FirewallMark string `json:"firewall_mark"`
|
|
Table string `json:"table"`
|
|
ConfigFilePath string `json:"config_file_path"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// ServerSetting model holds the per-server-interface subset of settings
|
|
// that used to live in the single global GlobalSetting. Introduced for the
|
|
// multi-server extension; not yet wired into store/handler layers.
|
|
type ServerSetting struct {
|
|
EndpointAddress string `json:"endpoint_address"`
|
|
FirewallMark string `json:"firewall_mark"`
|
|
Table string `json:"table"`
|
|
ConfigFilePath string `json:"config_file_path"`
|
|
// LanInterface is optional: the local interface (e.g. "eth0", "br-lan")
|
|
// this server's WireGuard traffic should be allowed to forward to/from.
|
|
// Only used to generate the nftables ruleset preview; left empty means
|
|
// the preview only covers the WireGuard interface itself.
|
|
LanInterface string `json:"lan_interface,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|