mirror of
https://github.com/speatzle/nfsense.git
synced 2025-09-13 15:19:08 +00:00
add setup subcommand, make apply subcommand
This commit is contained in:
parent
a7bab15b1b
commit
dd23131976
6 changed files with 323 additions and 5 deletions
56
internal/config/default.go
Normal file
56
internal/config/default.go
Normal file
|
@ -0,0 +1,56 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"nfsense.net/nfsense/internal/definitions/config"
|
||||
"nfsense.net/nfsense/internal/definitions/firewall"
|
||||
"nfsense.net/nfsense/internal/definitions/network"
|
||||
"nfsense.net/nfsense/internal/definitions/object"
|
||||
"nfsense.net/nfsense/internal/definitions/service"
|
||||
"nfsense.net/nfsense/internal/definitions/system"
|
||||
"nfsense.net/nfsense/internal/definitions/vpn"
|
||||
)
|
||||
|
||||
func (m *ConfigManager) LoadDefaultConfig() error {
|
||||
conf := config.Config{
|
||||
ConfigVersion: 1,
|
||||
Firewall: firewall.Firewall{
|
||||
ForwardRules: []firewall.ForwardRule{},
|
||||
DestinationNATRules: []firewall.DestinationNATRule{},
|
||||
SourceNATRules: []firewall.SourceNATRule{},
|
||||
},
|
||||
Object: object.Object{
|
||||
Addresses: map[string]object.Address{},
|
||||
Services: map[string]object.Service{},
|
||||
},
|
||||
Network: network.Network{
|
||||
Interfaces: map[string]network.Interface{},
|
||||
StaticRoutes: []network.StaticRoute{},
|
||||
},
|
||||
Service: service.Service{
|
||||
DHCPv4Servers: []service.DHCPv4Server{},
|
||||
DHCPv6Servers: []service.DHCPv6Server{},
|
||||
DNSServers: []service.DNSServer{},
|
||||
NTPServers: []service.NTPServer{},
|
||||
},
|
||||
VPN: vpn.VPN{
|
||||
Wireguard: vpn.Wireguard{
|
||||
Interfaces: map[string]vpn.WireguardInterface{},
|
||||
Peers: map[string]vpn.WireguardPeer{},
|
||||
},
|
||||
},
|
||||
System: system.System{
|
||||
Users: map[string]system.User{},
|
||||
},
|
||||
}
|
||||
|
||||
err := config.ValidateConfig(&conf)
|
||||
if err != nil {
|
||||
return fmt.Errorf("validating Config: %w", err)
|
||||
}
|
||||
|
||||
m.currentConfig = &conf
|
||||
m.pendingConfig = &conf
|
||||
return nil
|
||||
}
|
|
@ -21,3 +21,15 @@ func (m *ConfigManager) saveConfig(path string, conf *config.Config) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *ConfigManager) SaveWithoutApplying() error {
|
||||
m.currentConfig = m.pendingConfig.Clone()
|
||||
|
||||
err := m.saveConfig(m.currentConfigFilePath, m.pendingConfig)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Save Current Config: %w", err)
|
||||
}
|
||||
|
||||
os.Remove(m.pendingConfigFilePath)
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue