Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
qiuqunfeng
waf-console
Commits
3a60031f
Commit
3a60031f
authored
Feb 07, 2025
by
qiuqunfeng
Browse files
commit
parent
2cbd500e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
47 additions
and
6 deletions
+47
-6
internal/service/types.go
internal/service/types.go
+12
-4
internal/service/waf.go
internal/service/waf.go
+35
-2
No files found.
internal/service/types.go
View file @
3a60031f
...
@@ -183,8 +183,16 @@ type RuleRequest struct {
...
@@ -183,8 +183,16 @@ type RuleRequest struct {
Status
int
`json:"status"`
Status
int
`json:"status"`
}
}
type
WafMode
string
const
(
WafModeProtect
WafMode
=
"protect"
WafModeAlert
WafMode
=
"alert"
WafModePassthrough
WafMode
=
"passthrough"
)
type
UpdateModeReq
struct
{
type
UpdateModeReq
struct
{
Mode
string
`json:"mode"`
Mode
WafMode
`json:"mode"`
GatewayName
string
`json:"gateway_name"`
GatewayName
string
`json:"gateway_name"`
Namespace
string
`json:"namespace"`
Namespace
string
`json:"namespace"`
RegionCode
string
`json:"region_code"`
RegionCode
string
`json:"region_code"`
...
...
internal/service/waf.go
View file @
3a60031f
...
@@ -69,8 +69,19 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, er
...
@@ -69,8 +69,19 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, er
// Get existing WAF service config if any
// Get existing WAF service config if any
wafService
:=
&
model
.
WafService
{}
wafService
:=
&
model
.
WafService
{}
err
:=
s
.
db
.
Model
(
&
model
.
WafService
{})
.
Where
(
"gateway_name = ?"
,
req
.
GatewayName
)
.
First
(
wafService
)
.
Error
err
:=
s
.
db
.
Model
(
&
model
.
WafService
{})
.
Where
(
"gateway_name = ?"
,
req
.
GatewayName
)
.
First
(
wafService
)
.
Error
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to get WAF service: %v"
,
err
)
if
err
==
gorm
.
ErrRecordNotFound
{
// Create new WAF service record if not found
wafService
=
&
model
.
WafService
{
GatewayName
:
req
.
GatewayName
,
Mode
:
string
(
WafModeAlert
),
}
if
err
:=
s
.
db
.
Create
(
wafService
)
.
Error
;
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create WAF service: %v"
,
err
)
}
}
else
{
return
nil
,
fmt
.
Errorf
(
"failed to query WAF service: %v"
,
err
)
}
}
}
// Determine which rule categories to enable
// Determine which rule categories to enable
...
@@ -112,6 +123,28 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, er
...
@@ -112,6 +123,28 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, er
}
}
func
(
s
*
wafService
)
UpdateMode
(
ctx
context
.
Context
,
req
*
UpdateModeReq
)
(
*
Waf
,
error
)
{
func
(
s
*
wafService
)
UpdateMode
(
ctx
context
.
Context
,
req
*
UpdateModeReq
)
(
*
Waf
,
error
)
{
// Check if WAF service exists
wafService
:=
&
model
.
WafService
{}
err
:=
s
.
db
.
Model
(
&
model
.
WafService
{})
.
Where
(
"gateway_name = ?"
,
req
.
GatewayName
)
.
First
(
wafService
)
.
Error
if
err
!=
nil
{
if
err
==
gorm
.
ErrRecordNotFound
{
// Create new WAF service record if not found
wafService
=
&
model
.
WafService
{
GatewayName
:
req
.
GatewayName
,
Mode
:
string
(
req
.
Mode
),
}
if
err
:=
s
.
db
.
Create
(
wafService
)
.
Error
;
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to create WAF service: %v"
,
err
)
}
}
else
{
return
nil
,
fmt
.
Errorf
(
"failed to query WAF service: %v"
,
err
)
}
}
else
{
// Update mode if service exists
if
err
:=
s
.
db
.
Model
(
wafService
)
.
Update
(
"mode"
,
string
(
req
.
Mode
))
.
Error
;
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"failed to update WAF service mode: %v"
,
err
)
}
}
return
nil
,
nil
return
nil
,
nil
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment