mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 10:58:21 +00:00
update dhcp implementation for use with rocky
This commit is contained in:
parent
a9a0bebc2f
commit
4bd5fba0de
3 changed files with 8 additions and 63 deletions
|
@ -9,15 +9,10 @@ import (
|
||||||
"nfsense.net/nfsense/internal/definitions/config"
|
"nfsense.net/nfsense/internal/definitions/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
const defaultsFile = "/etc/default/isc-dhcp-server"
|
|
||||||
const dhcpv4File = "/etc/dhcp/dhcpd.conf"
|
const dhcpv4File = "/etc/dhcp/dhcpd.conf"
|
||||||
const dhcpv6File = "/etc/dhcp/dhcpd6.conf"
|
const dhcpv6File = "/etc/dhcp/dhcpd6.conf"
|
||||||
|
|
||||||
func ApplyDHCPServerConfiguration(currentConfig config.Config, pendingConfig config.Config) error {
|
func ApplyDHCPServerConfiguration(currentConfig config.Config, pendingConfig config.Config) error {
|
||||||
defaultsConfig, err := GenerateDHCPServerDefaultsConfiguration(pendingConfig)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Generating DHCPServer Defaults Configuration: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
v4Conf, err := GenerateDHCPServerV4Configuration(pendingConfig)
|
v4Conf, err := GenerateDHCPServerV4Configuration(pendingConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -29,11 +24,6 @@ func ApplyDHCPServerConfiguration(currentConfig config.Config, pendingConfig con
|
||||||
return fmt.Errorf("Generating DHCPServerV6 Configuration: %w", err)
|
return fmt.Errorf("Generating DHCPServerV6 Configuration: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = OverwriteFile(defaultsFile, defaultsConfig)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Writing defaults Configuration: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = OverwriteFile(dhcpv4File, v4Conf)
|
err = OverwriteFile(dhcpv4File, v4Conf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Writing v4 Configuration: %w", err)
|
return fmt.Errorf("Writing v4 Configuration: %w", err)
|
||||||
|
@ -51,24 +41,24 @@ func ApplyDHCPServerConfiguration(currentConfig config.Config, pendingConfig con
|
||||||
|
|
||||||
if len(pendingConfig.Service.DHCPv4Servers) == 0 && len(pendingConfig.Service.DHCPv6Servers) == 0 {
|
if len(pendingConfig.Service.DHCPv4Servers) == 0 && len(pendingConfig.Service.DHCPv6Servers) == 0 {
|
||||||
// if there are no servers stop the service instead
|
// if there are no servers stop the service instead
|
||||||
_, err := conn.StopUnitContext(context.Background(), "isc-dhcp-server.service", "replace", nil)
|
_, err := conn.StopUnitContext(context.Background(), "dhcpd.service", "replace", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("stopping isc-dhcp-server.service: %w", err)
|
return fmt.Errorf("stopping dhcpd.service: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = conn.DisableUnitFilesContext(context.Background(), []string{"isc-dhcp-server.service"}, false)
|
_, err = conn.DisableUnitFilesContext(context.Background(), []string{"dhcpd.service"}, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("disableing isc-dhcp-server.service: %w", err)
|
return fmt.Errorf("disableing dhcpd.service: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := conn.ReloadOrRestartUnitContext(context.Background(), "isc-dhcp-server.service", "replace", nil)
|
_, err := conn.ReloadOrRestartUnitContext(context.Background(), "dhcpd.service", "replace", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("restarting isc-dhcp-server.service: %w", err)
|
return fmt.Errorf("restarting dhcpd.service: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = conn.EnableUnitFilesContext(context.Background(), []string{"isc-dhcp-server.service"}, false, true)
|
_, _, err = conn.EnableUnitFilesContext(context.Background(), []string{"dhcpd.service"}, false, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("enableing isc-dhcp-server.service: %w", err)
|
return fmt.Errorf("enableing dhcpd.service: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
package dhcp
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"nfsense.net/nfsense/internal/definitions/config"
|
|
||||||
"nfsense.net/nfsense/internal/definitions/network"
|
|
||||||
)
|
|
||||||
|
|
||||||
type DHCPServerInterfaces struct {
|
|
||||||
V4 []string
|
|
||||||
V6 []string
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenerateDHCPServerDefaultsConfiguration(conf config.Config) (string, error) {
|
|
||||||
v4 := []string{}
|
|
||||||
for _, s := range conf.Service.DHCPv4Servers {
|
|
||||||
if conf.Network.Interfaces[s.Interface].Type == network.Hardware {
|
|
||||||
v4 = append(v4, *conf.Network.Interfaces[s.Interface].HardwareDevice)
|
|
||||||
} else {
|
|
||||||
v4 = append(v4, s.Interface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
v6 := []string{}
|
|
||||||
for _, s := range conf.Service.DHCPv6Servers {
|
|
||||||
if conf.Network.Interfaces[s.Interface].Type == network.Hardware {
|
|
||||||
v6 = append(v6, *conf.Network.Interfaces[s.Interface].HardwareDevice)
|
|
||||||
} else {
|
|
||||||
v6 = append(v6, s.Interface)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
interfaces := DHCPServerInterfaces{
|
|
||||||
V4: v4,
|
|
||||||
V6: v6,
|
|
||||||
}
|
|
||||||
buf := new(bytes.Buffer)
|
|
||||||
err := templates.ExecuteTemplate(buf, "default.tmpl", interfaces)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("executing default.tmpl template: %w", err)
|
|
||||||
}
|
|
||||||
return buf.String(), nil
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
INTERFACESv4="{{range .V4}}{{.}} {{end}}"
|
|
||||||
INTERFACESv6="{{range .V6}}{{.}} {{end}}"
|
|
Loading…
Add table
Reference in a new issue