mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 19:08:20 +00:00
81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package network
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"nfsense.net/nfsense/internal/definitions"
|
|
"nfsense.net/nfsense/internal/interfaces"
|
|
)
|
|
|
|
type GetInterfacesResult struct {
|
|
Interfaces map[string]definitions.Interface
|
|
}
|
|
|
|
func (f *Network) GetInterfaces(ctx context.Context, params struct{}) (GetInterfacesResult, error) {
|
|
return GetInterfacesResult{
|
|
Interfaces: f.Conf.Network.Interfaces,
|
|
}, nil
|
|
}
|
|
|
|
type CreateInterfaceParameters struct {
|
|
Name string
|
|
Interface definitions.Interface
|
|
}
|
|
|
|
func (f *Network) CreateInterface(ctx context.Context, params CreateInterfaceParameters) (struct{}, error) {
|
|
_, ok := f.Conf.Network.Interfaces[params.Name]
|
|
if ok {
|
|
return struct{}{}, fmt.Errorf("Interface already Exists")
|
|
}
|
|
|
|
f.Conf.Network.Interfaces[params.Name] = params.Interface
|
|
return struct{}{}, nil
|
|
}
|
|
|
|
type UpdateInterfaceParameters struct {
|
|
Name string
|
|
Interface definitions.Interface
|
|
}
|
|
|
|
func (f *Network) UpdateInterface(ctx context.Context, params CreateInterfaceParameters) (struct{}, error) {
|
|
_, ok := f.Conf.Network.Interfaces[params.Name]
|
|
if !ok {
|
|
return struct{}{}, fmt.Errorf("Interface does not Exist")
|
|
}
|
|
|
|
f.Conf.Network.Interfaces[params.Name] = params.Interface
|
|
return struct{}{}, nil
|
|
}
|
|
|
|
type DeleteInterfaceParameters struct {
|
|
Name string
|
|
}
|
|
|
|
func (f *Network) DeleteInterface(ctx context.Context, params DeleteInterfaceParameters) (struct{}, error) {
|
|
_, ok := f.Conf.Network.Interfaces[params.Name]
|
|
if !ok {
|
|
return struct{}{}, fmt.Errorf("Interface does not Exist")
|
|
}
|
|
|
|
delete(f.Conf.Network.Interfaces, params.Name)
|
|
return struct{}{}, nil
|
|
}
|
|
|
|
type ApplyInterfacesResult struct {
|
|
Log string
|
|
}
|
|
|
|
func (f *Network) ApplyInterfaces(ctx context.Context, params struct{}) (ApplyInterfacesResult, error) {
|
|
data, err := interfaces.GenerateInterfacesFile(*f.Conf)
|
|
if err != nil {
|
|
return ApplyInterfacesResult{}, fmt.Errorf("Generating Interfaces File: %w", err)
|
|
}
|
|
log, err := interfaces.ApplyInterfacesFile(data)
|
|
if err != nil {
|
|
return ApplyInterfacesResult{}, fmt.Errorf("Applying Interfaces File: %w", err)
|
|
}
|
|
return ApplyInterfacesResult{
|
|
Log: log,
|
|
}, nil
|
|
}
|