diff --git a/internal/api/firewall/addresses.go b/internal/api/object/addresses.go similarity index 56% rename from internal/api/firewall/addresses.go rename to internal/api/object/addresses.go index 70f0e85..971e940 100644 --- a/internal/api/firewall/addresses.go +++ b/internal/api/object/addresses.go @@ -1,4 +1,4 @@ -package firewall +package object import ( "context" @@ -13,8 +13,8 @@ type GetAddressesResult struct { Addresses map[string]definitions.Address } -func (f *Firewall) GetAddresses(ctx context.Context, params GetForwardRulesParameters) (GetAddressesResult, error) { +func (f *Object) GetAddresses(ctx context.Context, params GetAddressesParameters) (GetAddressesResult, error) { return GetAddressesResult{ - Addresses: f.Conf.Firewall.Addresses, + Addresses: f.Conf.Object.Addresses, }, nil } diff --git a/internal/api/object/object.go b/internal/api/object/object.go new file mode 100644 index 0000000..3324fca --- /dev/null +++ b/internal/api/object/object.go @@ -0,0 +1,7 @@ +package object + +import "nfsense.net/nfsense/internal/definitions" + +type Object struct { + Conf *definitions.Config +} diff --git a/internal/api/firewall/services.go b/internal/api/object/services.go similarity index 56% rename from internal/api/firewall/services.go rename to internal/api/object/services.go index d8dff31..44a2343 100644 --- a/internal/api/firewall/services.go +++ b/internal/api/object/services.go @@ -1,4 +1,4 @@ -package firewall +package object import ( "context" @@ -13,8 +13,8 @@ type GetServicesResult struct { Services map[string]definitions.Service } -func (f *Firewall) GetServices(ctx context.Context, params GetForwardRulesParameters) (GetServicesResult, error) { +func (f *Object) GetServices(ctx context.Context, params GetServicesParameters) (GetServicesResult, error) { return GetServicesResult{ - Services: f.Conf.Firewall.Services, + Services: f.Conf.Object.Services, }, nil } diff --git a/internal/definitions/config.go b/internal/definitions/config.go index 8061a42..8669570 100644 --- a/internal/definitions/config.go +++ b/internal/definitions/config.go @@ -10,6 +10,7 @@ import ( type Config struct { ConfigVersion uint64 `json:"config_version" validate:"required,eq=1"` Firewall Firewall `json:"firewall" validate:"required,dive"` + Object Object `json:"object" validate:"required,dive"` } func ValidateConfig(conf *Config) error { diff --git a/internal/definitions/firewall.go b/internal/definitions/firewall.go index c5c695d..ba67118 100644 --- a/internal/definitions/firewall.go +++ b/internal/definitions/firewall.go @@ -4,6 +4,4 @@ type Firewall struct { ForwardRules []ForwardRule `json:"forward_rules" validate:"required,dive"` DestinationNATRules []DestinationNATRule `json:"destination_nat_rules" validate:"required,dive"` SourceNATRules []SourceNATRule `json:"source_nat_rules" validate:"required,dive"` - Addresses map[string]Address `json:"addresses" validate:"required,dive"` - Services map[string]Service `json:"services" validate:"required,dive"` } diff --git a/internal/definitions/object.go b/internal/definitions/object.go new file mode 100644 index 0000000..9413b71 --- /dev/null +++ b/internal/definitions/object.go @@ -0,0 +1,6 @@ +package definitions + +type Object struct { + Addresses map[string]Address `json:"addresses" validate:"required,dive"` + Services map[string]Service `json:"services" validate:"required,dive"` +} diff --git a/main.go b/main.go index a677b60..939865c 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "golang.org/x/exp/slog" "nfsense.net/nfsense/internal/api/firewall" + "nfsense.net/nfsense/internal/api/object" "nfsense.net/nfsense/internal/definitions" "nfsense.net/nfsense/internal/jsonrpc" "nfsense.net/nfsense/internal/nftables" @@ -93,6 +94,7 @@ func LoadConfiguration(file string) (*definitions.Config, error) { func RegisterAPIMethods(apiHandler *jsonrpc.Handler, conf *definitions.Config) { apiHandler.Register("Firewall", &firewall.Firewall{Conf: conf}) + apiHandler.Register("Object", &object.Object{Conf: conf}) } func apply(conf *definitions.Config) error {