mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-10 18:38:22 +00:00
Add DHCP API
This commit is contained in:
parent
1cf1fe7a2e
commit
23dcf81690
4 changed files with 175 additions and 0 deletions
81
internal/api/service/dhcp_v4_server.go
Normal file
81
internal/api/service/dhcp_v4_server.go
Normal file
|
@ -0,0 +1,81 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"nfsense.net/nfsense/internal/definitions/service"
|
||||
)
|
||||
|
||||
type GetDHCPv4ServerParameters struct {
|
||||
Index uint
|
||||
}
|
||||
|
||||
type GetDHCPv4ServerResult struct {
|
||||
service.DHCPv4Server
|
||||
}
|
||||
|
||||
func (f *Service) GetDHCPv4Server(ctx context.Context, params GetDHCPv4ServerParameters) (GetDHCPv4ServerResult, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv4Servers) {
|
||||
return GetDHCPv4ServerResult{}, fmt.Errorf("DHCPv4Server does not Exist")
|
||||
}
|
||||
|
||||
return GetDHCPv4ServerResult{
|
||||
DHCPv4Server: f.ConfigManager.GetPendingConfig().Service.DHCPv4Servers[params.Index],
|
||||
}, nil
|
||||
}
|
||||
|
||||
type GetDHCPv4ServersResult struct {
|
||||
DHCPv4Servers []service.DHCPv4Server `json:"dhcp_v4_servers"`
|
||||
}
|
||||
|
||||
func (f *Service) GetDHCPv4Servers(ctx context.Context, params struct{}) (GetDHCPv4ServersResult, error) {
|
||||
return GetDHCPv4ServersResult{
|
||||
DHCPv4Servers: f.ConfigManager.GetPendingConfig().Service.DHCPv4Servers,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type CreateDHCPv4ServerParameters struct {
|
||||
DHCPv4Server service.DHCPv4Server `json:"dhcp_v4_server"`
|
||||
}
|
||||
|
||||
func (f *Service) CreateDHCPv4Server(ctx context.Context, params CreateDHCPv4ServerParameters) (struct{}, error) {
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv4Servers = append(conf.Service.DHCPv4Servers, params.DHCPv4Server)
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
||||
|
||||
type UpdateDHCPv4ServerParameters struct {
|
||||
Index uint64 `json:"index"`
|
||||
DHCPv4Server service.DHCPv4Server `json:"dhcp_v4_server"`
|
||||
}
|
||||
|
||||
func (f *Service) UpdateDHCPv4Server(ctx context.Context, params UpdateDHCPv4ServerParameters) (struct{}, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv4Servers) {
|
||||
return struct{}{}, fmt.Errorf("DHCPv4Server does not Exist")
|
||||
}
|
||||
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv4Servers[params.Index] = params.DHCPv4Server
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
||||
|
||||
type DeleteDHCPv4ServerParameters struct {
|
||||
Index uint64 `json:"index"`
|
||||
}
|
||||
|
||||
func (f *Service) DeleteDHCPv4Server(ctx context.Context, params DeleteDHCPv4ServerParameters) (struct{}, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv4Servers) {
|
||||
return struct{}{}, fmt.Errorf("DHCPv4Server does not Exist")
|
||||
}
|
||||
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv4Servers = append(conf.Service.DHCPv4Servers[:params.Index], conf.Service.DHCPv4Servers[params.Index+1:]...)
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
81
internal/api/service/dhcp_v6_server.go
Normal file
81
internal/api/service/dhcp_v6_server.go
Normal file
|
@ -0,0 +1,81 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"nfsense.net/nfsense/internal/definitions/service"
|
||||
)
|
||||
|
||||
type GetDHCPv6ServerParameters struct {
|
||||
Index uint
|
||||
}
|
||||
|
||||
type GetDHCPv6ServerResult struct {
|
||||
service.DHCPv6Server
|
||||
}
|
||||
|
||||
func (f *Service) GetDHCPv6Server(ctx context.Context, params GetDHCPv6ServerParameters) (GetDHCPv6ServerResult, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv6Servers) {
|
||||
return GetDHCPv6ServerResult{}, fmt.Errorf("DHCPv6Server does not Exist")
|
||||
}
|
||||
|
||||
return GetDHCPv6ServerResult{
|
||||
DHCPv6Server: f.ConfigManager.GetPendingConfig().Service.DHCPv6Servers[params.Index],
|
||||
}, nil
|
||||
}
|
||||
|
||||
type GetDHCPv6ServersResult struct {
|
||||
DHCPv6Servers []service.DHCPv6Server `json:"dhcp_v6_servers"`
|
||||
}
|
||||
|
||||
func (f *Service) GetDHCPv6Servers(ctx context.Context, params struct{}) (GetDHCPv6ServersResult, error) {
|
||||
return GetDHCPv6ServersResult{
|
||||
DHCPv6Servers: f.ConfigManager.GetPendingConfig().Service.DHCPv6Servers,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type CreateDHCPv6ServerParameters struct {
|
||||
DHCPv6Server service.DHCPv6Server `json:"dhcp_v6_server"`
|
||||
}
|
||||
|
||||
func (f *Service) CreateDHCPv6Server(ctx context.Context, params CreateDHCPv6ServerParameters) (struct{}, error) {
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv6Servers = append(conf.Service.DHCPv6Servers, params.DHCPv6Server)
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
||||
|
||||
type UpdateDHCPv6ServerParameters struct {
|
||||
Index uint64 `json:"index"`
|
||||
DHCPv6Server service.DHCPv6Server `json:"dhcp_v6_server"`
|
||||
}
|
||||
|
||||
func (f *Service) UpdateDHCPv6Server(ctx context.Context, params UpdateDHCPv6ServerParameters) (struct{}, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv6Servers) {
|
||||
return struct{}{}, fmt.Errorf("DHCPv6Server does not Exist")
|
||||
}
|
||||
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv6Servers[params.Index] = params.DHCPv6Server
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
||||
|
||||
type DeleteDHCPv6ServerParameters struct {
|
||||
Index uint64 `json:"index"`
|
||||
}
|
||||
|
||||
func (f *Service) DeleteDHCPv6Server(ctx context.Context, params DeleteDHCPv6ServerParameters) (struct{}, error) {
|
||||
if int(params.Index) >= len(f.ConfigManager.GetPendingConfig().Service.DHCPv6Servers) {
|
||||
return struct{}{}, fmt.Errorf("DHCPv6Server does not Exist")
|
||||
}
|
||||
|
||||
t, conf := f.ConfigManager.StartTransaction()
|
||||
defer t.Discard()
|
||||
|
||||
conf.Service.DHCPv6Servers = append(conf.Service.DHCPv6Servers[:params.Index], conf.Service.DHCPv6Servers[params.Index+1:]...)
|
||||
return struct{}{}, t.Commit()
|
||||
}
|
11
internal/api/service/service.go
Normal file
11
internal/api/service/service.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"github.com/godbus/dbus/v5"
|
||||
"nfsense.net/nfsense/internal/config"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
ConfigManager *config.ConfigManager
|
||||
DbusConn *dbus.Conn
|
||||
}
|
2
main.go
2
main.go
|
@ -15,6 +15,7 @@ import (
|
|||
"nfsense.net/nfsense/internal/api/firewall"
|
||||
"nfsense.net/nfsense/internal/api/network"
|
||||
"nfsense.net/nfsense/internal/api/object"
|
||||
"nfsense.net/nfsense/internal/api/service"
|
||||
"nfsense.net/nfsense/internal/config"
|
||||
"nfsense.net/nfsense/internal/jsonrpc"
|
||||
"nfsense.net/nfsense/internal/networkd"
|
||||
|
@ -96,4 +97,5 @@ func RegisterAPIMethods(apiHandler *jsonrpc.Handler, configManager *config.Confi
|
|||
apiHandler.Register("Firewall", &firewall.Firewall{ConfigManager: configManager})
|
||||
apiHandler.Register("Network", &network.Network{ConfigManager: configManager, DbusConn: dbusConn})
|
||||
apiHandler.Register("Object", &object.Object{ConfigManager: configManager})
|
||||
apiHandler.Register("Service", &service.Service{ConfigManager: configManager, DbusConn: dbusConn})
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue