New model.FirewallRule + jsondb CRUD (GetFirewallRules/CreateFirewallRule/ UpdateFirewallRule/DeleteFirewallRule), scoped per server. firewall package now generates a full ruleset (baseline + enabled custom rules) and can apply it live via `nft -f` (firewall.Apply), scoped to a per-server nftables table (wireguard_ui_<serverID>) so applying one server never touches another server's rules or any pre-existing firewall state. New endpoints: GET/POST /servers/:id/firewall/rules, POST .../rules/:ruleId, POST .../rules/:ruleId/delete, POST .../apply (live, admin-only). UI in the All Servers page: rule table with add/delete, ruleset preview, and an "Apply now (live)" button with an explicit confirm() warning before it touches the running firewall. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
42 lines
1.8 KiB
Go
42 lines
1.8 KiB
Go
package store
|
|
|
|
import (
|
|
"github.com/ngoduykhanh/wireguard-ui/model"
|
|
)
|
|
|
|
type IStore interface {
|
|
Init() error
|
|
GetUsers() ([]model.User, error)
|
|
GetUserByName(username string) (model.User, error)
|
|
SaveUser(user model.User) error
|
|
DeleteUser(username string) error
|
|
GetGlobalSettings() (model.GlobalSetting, error)
|
|
GetClients(hasQRCode bool) ([]model.ClientData, error)
|
|
GetClientByID(clientID string, qrCode model.QRCodeSettings) (model.ClientData, error)
|
|
SaveClient(client model.Client) error
|
|
DeleteClient(clientID string) error
|
|
SaveGlobalSettings(globalSettings model.GlobalSetting) error
|
|
GetWakeOnLanHosts() ([]model.WakeOnLanHost, error)
|
|
GetWakeOnLanHost(macAddress string) (*model.WakeOnLanHost, error)
|
|
DeleteWakeOnHostLanHost(macAddress string) error
|
|
SaveWakeOnLanHost(host model.WakeOnLanHost) error
|
|
DeleteWakeOnHost(host model.WakeOnLanHost) error
|
|
GetPath() string
|
|
SaveHashes(hashes model.ClientServerHashes) error
|
|
GetHashes() (model.ClientServerHashes, error)
|
|
GetServers() ([]model.Server, error)
|
|
GetServerByID(serverID string) (model.Server, error)
|
|
CreateServer(server model.Server) error
|
|
DeleteServer(serverID string) error
|
|
GetServerSettings(serverID string) (model.ServerSetting, error)
|
|
SaveServerSettings(serverID string, settings model.ServerSetting) error
|
|
GetServerHashes(serverID string) (model.ClientServerHashes, error)
|
|
SaveServerHashes(serverID string, hashes model.ClientServerHashes) error
|
|
UpdateServerInterface(serverID string, serverInterface model.ServerInterface) error
|
|
UpdateServerKeyPair(serverID string, serverKeyPair model.ServerKeypair) error
|
|
GetFirewallRules(serverID string) ([]model.FirewallRule, error)
|
|
CreateFirewallRule(rule model.FirewallRule) error
|
|
UpdateFirewallRule(rule model.FirewallRule) error
|
|
DeleteFirewallRule(serverID, ruleID string) error
|
|
}
|