From 4ab4ab37d58a8e5ea29df0b20d3a596d9191c267 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 13 May 2023 22:48:13 +0200 Subject: [PATCH] Add Rule Get API Methods, fix Create and Update --- .../api/firewall/destination_nat_rules.go | 24 ++++++++++++++++--- internal/api/firewall/forward_rules.go | 24 ++++++++++++++++--- internal/api/firewall/source_nat_rules.go | 24 ++++++++++++++++--- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/internal/api/firewall/destination_nat_rules.go b/internal/api/firewall/destination_nat_rules.go index 1741753..2222fe8 100644 --- a/internal/api/firewall/destination_nat_rules.go +++ b/internal/api/firewall/destination_nat_rules.go @@ -7,6 +7,24 @@ import ( "nfsense.net/nfsense/internal/definitions/firewall" ) +type GetDestinationNATRuleParameters struct { + ID uint +} + +type GetDestinationNATRuleResult struct { + firewall.DestinationNATRule +} + +func (f *Firewall) GetDestinationNATRule(ctx context.Context, params GetDestinationNATRuleParameters) (GetDestinationNATRuleResult, error) { + if int(params.ID) >= len(f.ConfigManager.GetPendingConfig().Firewall.DestinationNATRules) { + return GetDestinationNATRuleResult{}, fmt.Errorf("DestinationNATRule does not Exist") + } + + return GetDestinationNATRuleResult{ + DestinationNATRule: f.ConfigManager.GetPendingConfig().Firewall.DestinationNATRules[params.ID], + }, nil +} + type GetDestinationNATRulesResult struct { DestinationNATRules []firewall.DestinationNATRule `json:"destination_nat_rules"` } @@ -18,7 +36,7 @@ func (f *Firewall) GetDestinationNATRules(ctx context.Context, params struct{}) } type CreateDestinationNATRuleParameters struct { - DestinationNATRule firewall.DestinationNATRule `json:"destination_nat_rule"` + firewall.DestinationNATRule } func (f *Firewall) CreateDestinationNATRule(ctx context.Context, params CreateDestinationNATRuleParameters) (struct{}, error) { @@ -30,8 +48,8 @@ func (f *Firewall) CreateDestinationNATRule(ctx context.Context, params CreateDe } type UpdateDestinationNATRuleParameters struct { - Index uint64 `json:"index"` - DestinationNATRule firewall.DestinationNATRule `json:"destination_nat_rule"` + Index uint64 `json:"index"` + firewall.DestinationNATRule } func (f *Firewall) UpdateDestinationNATRule(ctx context.Context, params UpdateDestinationNATRuleParameters) (struct{}, error) { diff --git a/internal/api/firewall/forward_rules.go b/internal/api/firewall/forward_rules.go index f1b734c..cd2d0a1 100644 --- a/internal/api/firewall/forward_rules.go +++ b/internal/api/firewall/forward_rules.go @@ -7,6 +7,24 @@ import ( "nfsense.net/nfsense/internal/definitions/firewall" ) +type GetForwardRuleParameters struct { + ID uint +} + +type GetForwardRuleResult struct { + firewall.ForwardRule +} + +func (f *Firewall) GetForwardRule(ctx context.Context, params GetForwardRuleParameters) (GetForwardRuleResult, error) { + if int(params.ID) >= len(f.ConfigManager.GetPendingConfig().Firewall.ForwardRules) { + return GetForwardRuleResult{}, fmt.Errorf("ForwardRule does not Exist") + } + + return GetForwardRuleResult{ + ForwardRule: f.ConfigManager.GetPendingConfig().Firewall.ForwardRules[params.ID], + }, nil +} + type GetForwardRulesResult struct { ForwardRules []firewall.ForwardRule `json:"forward_rules"` } @@ -18,7 +36,7 @@ func (f *Firewall) GetForwardRules(ctx context.Context, params struct{}) (GetFor } type CreateForwardRuleParameters struct { - ForwardRule firewall.ForwardRule `json:"forward_rule"` + firewall.ForwardRule } func (f *Firewall) CreateForwardRule(ctx context.Context, params CreateForwardRuleParameters) (struct{}, error) { @@ -30,8 +48,8 @@ func (f *Firewall) CreateForwardRule(ctx context.Context, params CreateForwardRu } type UpdateForwardRuleParameters struct { - Index uint64 `json:"index"` - ForwardRule firewall.ForwardRule `json:"forward_rule"` + Index uint64 `json:"index"` + firewall.ForwardRule } func (f *Firewall) UpdateForwardRule(ctx context.Context, params UpdateForwardRuleParameters) (struct{}, error) { diff --git a/internal/api/firewall/source_nat_rules.go b/internal/api/firewall/source_nat_rules.go index d5a503f..3c687a0 100644 --- a/internal/api/firewall/source_nat_rules.go +++ b/internal/api/firewall/source_nat_rules.go @@ -7,6 +7,24 @@ import ( "nfsense.net/nfsense/internal/definitions/firewall" ) +type GetSourceNATRuleParameters struct { + ID uint +} + +type GetSourceNATRuleResult struct { + firewall.SourceNATRule +} + +func (f *Firewall) GetSourceNATRule(ctx context.Context, params GetSourceNATRuleParameters) (GetSourceNATRuleResult, error) { + if int(params.ID) >= len(f.ConfigManager.GetPendingConfig().Firewall.SourceNATRules) { + return GetSourceNATRuleResult{}, fmt.Errorf("SourceNATRule does not Exist") + } + + return GetSourceNATRuleResult{ + SourceNATRule: f.ConfigManager.GetPendingConfig().Firewall.SourceNATRules[params.ID], + }, nil +} + type GetSourceNATRulesResult struct { SourceNATRules []firewall.SourceNATRule `json:"source_nat_rules"` } @@ -18,7 +36,7 @@ func (f *Firewall) GetSourceNATRules(ctx context.Context, params struct{}) (GetS } type CreateSourceNATRuleParameters struct { - SourceNATRule firewall.SourceNATRule `json:"source_nat_rule"` + firewall.SourceNATRule } func (f *Firewall) CreateSourceNATRule(ctx context.Context, params CreateSourceNATRuleParameters) (struct{}, error) { @@ -30,8 +48,8 @@ func (f *Firewall) CreateSourceNATRule(ctx context.Context, params CreateSourceN } type UpdateSourceNATRuleParameters struct { - Index uint64 `json:"index"` - SourceNATRule firewall.SourceNATRule `json:"source_nat_rule"` + Index uint64 `json:"index"` + firewall.SourceNATRule } func (f *Firewall) UpdateSourceNATRule(ctx context.Context, params UpdateSourceNATRuleParameters) (struct{}, error) {