Add multi-server data model + legacy DB migration (step 0)
Adds Server.ID/Name, ServerInterface.Name, Client.ServerID, and a new ServerSetting type as additive fields so existing single-server code paths keep working unchanged. jsondb.Init() now detects a pre-existing single-server db/server/ layout and mirrors it into new servers/, server_settings/, server_hashes/ collections plus backfills ServerID on existing clients, without touching/removing the legacy files yet.
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
// Client model
|
||||
type Client struct {
|
||||
ID string `json:"id"`
|
||||
ServerID string `json:"server_id,omitempty"`
|
||||
PrivateKey string `json:"private_key"`
|
||||
PublicKey string `json:"public_key"`
|
||||
PresharedKey string `json:"preshared_key"`
|
||||
|
||||
@@ -6,6 +6,8 @@ import (
|
||||
|
||||
// Server model
|
||||
type Server struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
KeyPair *ServerKeypair
|
||||
Interface *ServerInterface
|
||||
}
|
||||
@@ -19,6 +21,7 @@ type ServerKeypair struct {
|
||||
|
||||
// ServerInterface model
|
||||
type ServerInterface struct {
|
||||
Name string `json:"name,omitempty"` // OS interface name, e.g. wg0
|
||||
Addresses []string `json:"addresses"`
|
||||
ListenPort int `json:"listen_port,string"` // ,string to get listen_port string input as int
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
|
||||
@@ -15,3 +15,14 @@ type GlobalSetting struct {
|
||||
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"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user