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
aac6ce00
Commit
aac6ce00
authored
Feb 06, 2025
by
qiuqunfeng
Browse files
commit
parent
f2ae41c0
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
185 additions
and
18 deletions
+185
-18
api/waf.go
api/waf.go
+1
-0
config/config.yaml
config/config.yaml
+6
-6
db/migrations/create_waf_tables.sql
db/migrations/create_waf_tables.sql
+43
-0
internal/controller/waf.go
internal/controller/waf.go
+12
-0
internal/model/waf.go
internal/model/waf.go
+22
-12
internal/service/service.go
internal/service/service.go
+1
-0
internal/service/types.go
internal/service/types.go
+28
-0
internal/service/waf.go
internal/service/waf.go
+72
-0
No files found.
api/waf.go
View file @
aac6ce00
...
@@ -14,4 +14,5 @@ func SetWafRouter(e *gin.Engine, client *versioned.Clientset, db *gorm.DB) {
...
@@ -14,4 +14,5 @@ func SetWafRouter(e *gin.Engine, client *versioned.Clientset, db *gorm.DB) {
v1
.
GET
(
"waf/:gateway_name"
,
wafController
.
Waf
)
v1
.
GET
(
"waf/:gateway_name"
,
wafController
.
Waf
)
v1
.
POST
(
"waf"
,
wafController
.
CreateWaf
)
v1
.
POST
(
"waf"
,
wafController
.
CreateWaf
)
v1
.
PUT
(
"mode"
,
wafController
.
UpdateMode
)
v1
.
PUT
(
"mode"
,
wafController
.
UpdateMode
)
v1
.
POST
(
"debug/savecatagory"
,
wafController
.
SaveRuleCategoryToDB
)
}
}
config/config.yaml
View file @
aac6ce00
region_configs
:
region_configs
:
-
region_code
:
cn-east-1
-
region_code
:
cn-east-1
api_server
:
https://1
9
2.
168.3.10
:6443
api_server
:
https://1
7
2.
21.1.191
:6443
ca_data
:
"
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJe
U1EVXhPVEE0TXpjME5sb1hEVE15TURVeE5qQTRNemMw
Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT
nc1CnlLMDJ3UExYcUcrdWFnbk1VclRET28wNDAycjZmcUxMNmlwSHRXZ2wyZ1d1TjJtWUNnZjNqWFh0YXF0MVlra2oKekdWOFJSTFBVVWJRNUN5bUhYbzJ5dEFxb05vT1hYemErQ3RCUTg1NDJJcGlTVW85OVRPOG5ZL0kyQkx3aU1DWApVOGtQU1Y4UGYxUk8ray9aZnI5ZUhjTEh3T0lKdVpvcDAwQmV0VkkrRVJ2OVdMa3NrZnUxU3BFWjdRbENOdmRDCml3SndQZm8reGJrUzg4bEJZdVZCV3R4MUxveW41RmtUZjVqUnJSZkgxMXE2LzcwMXZWdE00SjN6UHYzN2RzV0QKallwaGt0anF5amh5M0ptZFhsOVhETWYzbjBwN25mS0R0UUZVWWthUDBTN2hWcnlHcFVES0RmWldrMEdIeU0wZwpIVjNvT3BFczk4NTlIWUg1UUVj
Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZ
BRlVCK2VvT0Zpc1A2czVVRFA1YTNKdXZlOGp
NQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR
HhIcVJjWDA5d3JEaEdXRXBOdAowQnN1RXp3SHRIYmk0dkpmNWdGTHFFd1ZPREthYVF4aWlaVXg5NmNkUU1IZ1RsOVZweGpDVTdrYnhMUFRiaU1yCmFKd1hWYW5VYmFoYzhuTkVPbVV0RWp5MXdNL012Vm5XQWtwTlNVaHJXWjZ2L1dwS3VvRWNHeVNZUHR5MDdkU1cKS1NsVk8yYytFYTQraUxwdC8relVRL0JiaG9wYk9kRWMreEZJVXlobi9YSzl1NjlDVVloaFhyZjRXR0dXdmU4TApFbXpnWmN4Y1NROERmeHNMQWFSdnpaUW5pY3RoZnFBUXdsbDFkbTlaTWxicWgyMFg4MkhOM3hET0dUcXQvbVpyCmxqcjJGdHNjbkVMOWtEYm85MmFvVkR4c0tBNnF1R0t3eWVuSVh3a0VjV1BmM3lxUmhPK3JKQ3lzWWxueVZzcVMKaVk4
PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
ca_data
:
"
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJe
E1USXlOekExTlRReE5sb1hEVE14TVRJeU5UQTFOVFF4
Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT
C95Cmt1VDNEN3BtZ1h3VGlzcFFZMTFVZVZaanRSZEUzZTRDZWVST3FkUnJYakJvNEp4Z2dDRUVZamo5TWp3NUFMUlQKaDFpazJXWloxd3IzNFA0RzRQTVVWUk8xNVRTR3BsNzNNQi9LejBOK01GcG9rTG9kTkFDQ3djM2FRM3htUU5ZeApXdmlKK1h0clpkS3hYVVZvN0tTYmNKb2x3eWgyaGtBMkJtR0VRNWZoaCtwMWVYV0xDdWFxQUJUZU56VVlrLytiClNZTmpRMlhkUnpxMENDblgzNnpnNkFHbUJnQUJUK0wvMlI1VDJRZzF3VktDTDNqZ1JwQW9DSEt0bXRuejVUcVgKQmNpT2F6ZzJuM3h2amxwdHNTZjBqZDhRSHdXZWd0VnBBTmQ5UVpKc2djdFRNdVB6OENKZjB2d0taZHAzbzh5VApvRHNpR1JmUjhUeUExQXhWOWY4
Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZ
PK2hFdEJYdDBLajlRdHhHR0dqYUhBS2NEUFh
NQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR
WhWcEV1ZW9tZjNTVEw3bDBkSQpLS1Y5VC9qd3NYbFNQZU5INnhNQnMrS3htRi9mS2dmM1dRbnhlVWpLaVJ4S1YwZzhYb0pqd2VvN2RKYzVXRFFrCjV1QzRvTHl2L3VydzRhZCsxdGovVFdXUDIvK0NlWVRIblZxbW5NVzY0azdTaSt3cDBIRDFEYjRXS3FHdEZWV0cKRDNkUXlhNDBoN1krMUcya1FPSklNYVlaNXpCc2FzSzJWSjN4eUFGYTFRM3lFQWpsY1l2SDh6ZWMwNVlNU0phZQppRlc0aTNPK2YveWJwT2VwT2RTSDdUL0tLdWd1b0pTNVFSSjFVT3lWVGg3bmp6NERVUlhxdzdDcWxXc2JONWpCCm1yOE96aXpndVI5WE43NjZYbkthcU9NWXlhcE02RzlWSmVSZHdjaE9aN3hKaHdhWVJncTRWSE4yazJDMyt6UGkKZ3dZ
PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
token
:
"
"
token
:
"
"
client_cert_data
:
"
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJ
QVI3c1lXVjBvREl
3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5T
WpBMU1Ua3dPRE0zTk
RaYUZ3MHlOVE
Ex
TVR
neE16VXpOVEZ
hTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQ
TBKbjMwdzl2SDFNYWZoZ3cKSnA2cnpxWTdUUU02aWI0Qm91RU1uQXdFTFVpeEVTZHZhOFpPeG1LTFYxUHdPZWREbFlUdVM1VVljeENIQUd6TgpMWlV2VVdPd0k1MFNwZmNiTHlPSVdQQjVQODA4MCtUdlJVRFZDWjRGb29nU29jb2VNMDc4cTN4dlNMWStoRnlGCkdnZWdURmJTeFFzMXlMRWc0Um96WkxQZExoOFIvWEVidEZtb2x6UlhrUmc4MStEQUx0ZjVZbkV2akNEMGhWM1kKZ0QvZlpiN21iNEtBcnN3RjBRL2U3VUtoODJYaGxlOVozTllJQlBkTzNqQmFYcThDRnNEcnMvdEpSYllJOFJXdgozYzRJZ281R1BHaGwxUm9QUkc1ZDFaaFRsb216MEdPREtsRWlmejhlcld1TCs3R2xOUmRyTndtY3hZUnZSSkRDClRIcUFPUUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JRQlZBZm5xRGhZckQrck9WQXorV3R5YnIzdgpJekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2s2UU5MMjBwNTN4UVhObjRlczg5blkxMEJadHlVS3pMY1ExCjJoSmpQUjlwTVFFVnRCNnlUeXJGRnJFRUxnR0ttTGF6WDVoV2paS083UW9QVXNGMmcxVHpMUzgvQXR5SGhCVm4KczJZNE1NNllkb2N4S0J5bjVFTHJlRXNNazh2RzdQOHFzbjZ5NVZ1KzhSbDBnWDdib0E5L0NLenRVQWNza3QzSQpMYjN3elpTdDFEREF5a2NyQng2ck9BTGhjN0lhQU5KSHYzNzNNNGFOeks4UlA1TUVYcEZTNjg4M1Zld1ZNYVRwCjNya1p3YW9nUU45NHpMYVM4UklZTVpjQVc4ZnNGN1pWeHV1Ukg5Z1NkdEtpYW5OWHVlSkhwSEtQZVRXRUxld3UKaEdFbW1zbzVtWE9oNHVwOGQyYnFPZDloOTdyblplMnFSdEQwblZIVE5QOTVueXZnZF
E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
client_cert_data
:
"
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJ
RTg0c2l2UmRGaUF
3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5T
VRFeU1qY3dOVFUwTV
RaYUZ3MHlOVE
V5
TVR
jd056TTFNakJ
hTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQ
XVKd0JOS0xVSEhaNFRUa2kKQlJFakVJdk40dndMMWlOWVMxQzdwVFBDUzdhbHp5TFpVZWVFOE9qV2I4OWtXVGpLeStyN2dGeTNucVZsMkdCTgpjU2dUVXA0QUNMeCs3ZVVtbU9UWUtoMG82WXd0MlJ6TmVySHlYSnB3aW0wb1drQnp6eno1YzZ6eW5WQ0Y0QWtICk1IaHBLdXU5RFQ4SkozYVhrdDVZR1NuR0FSS2dVNWEvU0pmelAwanRJV1hmdUtIdlFpdzdmMVNmM1VxSjllVkwKZUk5TjYzcnhHREk4VERaU01kR0hzZjBhVi9KUGRDdmQxUDkxei9ab2wwVU5qejBhNVd3b1g0dXVpelVGMXA1RApxbGtnbndweEU1M21VUzU2bTlIdEk1bStuUjJ4OHFZUGYyb2M5bWZndW1RZDY2eWdoNmV2di9LZzkxWUMxaEtSCnJlWnV1d0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUdm9STFFWN2RDby9VTGNSaGhvMmh3Q25BegoxekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkpDWVQwMkNiMUV2MVVyVzNZcllqSjZ1S2J1L0RRalNxN2xxCktpS2RjajZ4Z1BGYVVRVVo1STlXRmtWNk84clhsK1RHeDZjZGVZd2lPaHhmblRxU1dlME9wSTA4SEk2dlJJUU0KcFFwWmVuUTU3ckNiNUVEc0ZoLzVNdVNvZHFHeHhaR3F5c1RSOU8xUTdyVmlVWmNlbUNITlNLMXQxYlNRa0pTRQpsckpFZlRJa3Z3cFRPSm5PM3lkT1hMbHAzYXpNTlNuVkVJNis5NkcrengxeEF2ZVhlL3pwS0NNUTRpN0RLeUp5ClNYOEgvRU1NZWZwRWRtY0RFUXk2Q1YxM1ZOWlpRVDJGTUVvQ0RFVEt2azlnOFNidVY0cytDRnF2bTZzMm84ZUsKV0lFYlZNUUlQaHVRVS9Sb3FzaUx6MUtJUGpiY3BrZGxFbitOQjZlN2pGM1RPMm92Mk
E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
client_key_data
:
"
LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlF
cEFJQkFBS0NBUUVBMEpuMzB3OXZIMU1hZmhnd0pwNnJ6cVk3VFFNNmliNEJvdUVNbkF3RUxVaXhFU2R2CmE4Wk94bUtMVjFQd09lZERsWVR1UzVVWWN4Q0hBR3pOTFpVdlVXT3dJNTBTcGZjYkx5T0lXUEI1UDgwODArVHYKUlVEVkNaNEZvb2dTb2NvZU0wNzhxM3h2U0xZK2hGeUZHZ2VnVEZiU3hRczF5TEVnNFJvelpMUGRMaDhSL1hFYgp0Rm1vbHpSWGtSZzgxK0RBTHRmNVluRXZqQ0QwaFYzWWdEL2ZaYjdtYjRLQXJzd0YwUS9lN1VLaDgyWGhsZTlaCjNOWUlCUGRPM2pCYVhxOENGc0Rycy90SlJiWUk4Uld2M2M0SWdvNUdQR2hsMVJvUFJHNWQxWmhUbG9tejBHT0QKS2xFaWZ6OGVyV3VMKzdHbE5SZHJOd21jeFlSdlJKRENUSHFBT1FJREFRQUJBb0lCQUgweCt5ZmtHbmc5WXlnTQprbEdMWjJmV0lyOGMwZlE3WWpZRVJaSWVNQitSZ2h2ZWhDTzEyQzkrazB4dEp6OUpTaW1ocDNjYlc1b3JjQ3JVCklleGFuaFNGOVAvYTFJZGhJQ0tSZTlLTk9PZ080SlAzMFpiSnkxSkRVZlJ6SUdPVHI3NXhpSG5QYStiQzRoQ0UKaXFuTnErcEZMYWh2Q3UrUlJ6OXlmeWZRUDAzZTZINVI3R0ZKd3JneHkwVWVjakNCRGJxbVRFWk1rT3FHTlVLawo1eVB3TEluMi9hVlp5VGNrYXpyckpXcDU0QmdKN2FRTDNjR2VscGZpaElObFVMMXZnc1BzWjJ3UFUxaFZqd0JDCkJxazVFY3ZLZUptakZLMEg1RUJKTldEbWxPVHkvM1pzZzFMbHhpdmVyWEpkNnJmaVJZNTJEV2Z2Rjc3UlF3bmMKWlorZFJJRUNnWUVBNCtob0RCdHFRcG5OcjZ4M0pyenowaS9rN3ZQU1lXS09DcHRqNlU4RE9BMWZWRTZHRnVKMwowaVdnd0VwaGhDL1YrY3V3L0o5WVNQb3gvTElWQm1IbmR2aXJoZGJZTDVKZ2lMN0Z6TzF0cy9abjhIVjlING1DClVhT0xtQXNDTHJtakZsbGFLODhBNUJrblVBV0pFTml2aWN4N28rRUV3dWJMNVJnSjU1WFE4aEVDZ1lFQTZsQloKOXNKdEZhWWE4aEpFMXNWZ05RMHJtMXd6eFdvU2xpRnc0UTZOQ1pXRWU3UnFGYmNGdWQrVDlLMmZnQVJwdU5NYQozSW1STVQ2Qm9UTU5ibldRS1RuMVlWU3pVRktEZzQ1ZVY2cjI3bGFpaHoyNy9QTXZCZTQ1UkVPdk9RS0ZWZitqClBsclJjMXhzSERSamNteFNCQlBKRHpKZi82Tzc1OVMwVURMc2c2a0NnWUFXeWRGRmpLUTJYcHlqZVRJOHpGM3cKNFZzWnpZVjJ1VjBNa0hjUUNCZUJUa3orNkE4ZVVLeThkWWk2VVhXb3V3UEJRMjNDQk1qV0d6Wk9WeHdsRkRzSgp1Vm1sTzFOSWhuRmltdmk2UWU5Yk5FTTJWdmtZNHk0RnJiMnlpVDlCbnN4QTJ0UmFWd3QydzFFYi9rR3pUb2RXCjF2eHg2WGtKWi94eFB0TVd0Zk03a1FLQmdRREk1VWVkR0NuckM5WENnd05lbVMvWmpJYzgxeHJVUWhQWmdLYUYKYjdKZzZ6OEJ5VGZEa241b1ZWZEh5NjBiVjYxRmVFcHBsOUZTeFdMalVTQk0rcU0xbGFuYlg0RzJkbWluM09McQppM3pYOEpPOUhLTVhSM0dqeGhKM2d3aXkrb1JUcmJESy81YmhML2JKWCtsNzYzK09XMkJobFRGVnY0NldRSHF3CjRGaUVzUUtCZ1FDNmcwNG9vMUVNbFRPL2svZ3dnSnkwYy84SGZNUlAxc2xzL1VyeCtRVG5jY283T2Z3bnVZNVcKbWM1aENQVVgvT0J4elRla2l3VDZpcUdHeFVPS3h0bkQ4UEVaYUJVK1Z1SkZ0akRSRE94TDMxRThtbHRPS0RSQQpiTUN4cUQxS2F4Rk1YdThqcUVHQTZsTWdvbDdkalRERUUxd090WFgwVHczL04rWGwyM1J6Rmc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo
="
client_key_data
:
"
LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlF
b3dJQkFBS0NBUUVBdUp3Qk5LTFVISFo0VFRraUJSRWpFSXZONHZ3TDFpTllTMUM3cFRQQ1M3YWx6eUxaClVlZUU4T2pXYjg5a1dUakt5K3I3Z0Z5M25xVmwyR0JOY1NnVFVwNEFDTHgrN2VVbW1PVFlLaDBvNll3dDJSek4KZXJIeVhKcHdpbTBvV2tCenp6ejVjNnp5blZDRjRBa0hNSGhwS3V1OURUOEpKM2FYa3Q1WUdTbkdBUktnVTVhLwpTSmZ6UDBqdElXWGZ1S0h2UWl3N2YxU2YzVXFKOWVWTGVJOU42M3J4R0RJOFREWlNNZEdIc2YwYVYvSlBkQ3ZkCjFQOTF6L1pvbDBVTmp6MGE1V3dvWDR1dWl6VUYxcDVEcWxrZ253cHhFNTNtVVM1Nm05SHRJNW0rblIyeDhxWVAKZjJvYzltZmd1bVFkNjZ5Z2g2ZXZ2L0tnOTFZQzFoS1JyZVp1dXdJREFRQUJBb0lCQUd0L1hDeGNUSXN1YVNyKwpnOUxUZ2NtV3Z4TFhsY1RoMi80dlNyVU9DS3V4OWFkQ01hM0IxT1c3ajNLWUgyVGM3eW9DOE9SMEdQQW1lOEdkCmdqck1EVVJrZ0x5Vmxvdk1qY2NtS3NHTExWR2hzT2ptSHJpOWVkVjJrT1hxWGo3L25QQW1IMU8rZDZBblRXMkIKbEZBakxZb3lyMmxSTlhGbld5ZklsU0JCOU95V0FIRWExTlQ5OUV4ckU3TUpla3hXTkN5Y3pSTlhsZm1mTU9qMwpJaFhXcHFKWTVPZ3lEZkxnc291b1MybnpkeW9RT3lyUXplWjJib0p3a3dZRHUyR3lndTRNRXBRdmxKdEd3ZStCCm1TNEhSMlBYbzVNOERCSVV4NHJRNTlzb1cyK3NPZm1kcnV0YnF3RklTMHBoalBzU1pNR253KzZKUUpka1E0Q1gKVU5tOVVIRUNnWUVBelVKaTdmdWdNR1k0MVA2eWpSQTVZMFIwQWI2OXN2OWl1TjBZVGEzYTJENVZWenRUL0RUcgpvcVE1a0VkR1FFaXhjWHROWW52cHZaL3U0QVZ5UTlIQ01xWUMrdVJ5b1pWSEh1UkRaVDdCYWtsTHg1eXhYelYzCitTWVlGYTJuWUtiRGN6Qkl1RWhlL01UVFI3OS9mUmNuZXphQWl4NXJ4eXVDRUdrZFFhdEZLc1VDZ1lFQTVqN1AKVjRpbkNmUHAxOVJkL0MwcFFnSFJpMnJoYm4walZDbFh6Z0phQUthcmZUbUVGekQzY0xpbnFCVmhKemlSR2xOdQpPS1ZvdFJVaXNTbjVob2NDaDhDb2w5dkRPRlNXUG56TmhZTUFWb0hCNHNZZnZqL0l2Y0diU2F6RDNJdnkyTDNIClNYOFNtS2RvcEMya1dxaGlVVllQVVhRVHdhNjFXZlIxay9HOHkzOENnWUEyVEg2UlNFUjdLVCtWa1A4NDgvYksKZk54WGJkY1BHQ0pNbHlpTHZCY3RwMmU2R05iQjNGb05mM1krNWF2KzYzd05jam5wZUxBLzJxUTluUk02UDY0bwo2ZVBWN1VNcDNheWZ6bkRKd3MwMXljZ0RPVDl1MlYwd2l0UktQOU1NYlhFODhxUDZKQ01FcVNqZlRSaHp4Z0ZLCnhnTkJTajNteFdxMTNxaS9xNGd6cFFLQmdRRGRob3NaampvZzRsUVlPNVNkdjVuVmowaGNXbDVCWHhjeHI0RnkKaldLcEE3TTFqYlFnV0JXS2w2OS9rZXBpd1JNakFDaXBTY1JmamRGT0liT1prcWFGbElEaGN5ajJOclJEdFBKTQp4Y2o2Y21mb1YzVk5KN050bHl4Z2kxLzYvNCtNcDdOcGJHQ3BEVkVwdlZ4SGVZRDIvdFZJS21XajBRTmRaRTRJCkpPcmY0d0tCZ0dIRFE1aHF3ak9YNHBxZDZXSVY1M1RZZFZKZ3JodGk1WG1nOHZ0QzR0bDNFL0dNZU9tOG8xTmEKaFBQWDJqTm1mNFFzTUNHNWtteDNJWlFKVGJmU0FJUGNZdWxRZkpIWmZVbmx6ckhHRi9WTXdyejFaS0lpY1JQegpzVDZ2NUpOcDRUdlRGdnVFb2YwRmQ4SC81cW5XcERacFlQRGJ1VjRDRCtDNkZiT0xSUTZaCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg=
="
db_config
:
db_config
:
user
:
ivan
user
:
ivan
password
:
Mysql-ha@123
password
:
Mysql-ha@123
host
:
1
9
2.
168.3.10
host
:
1
7
2.
21.1.191
port
:
3
3
06
port
:
30
03
6
database
:
ivan
database
:
ivan
\ No newline at end of file
db/migrations/create_waf_tables.sql
0 → 100644
View file @
aac6ce00
-- Create waf_services table
CREATE
TABLE
waf_services
(
id
SERIAL
PRIMARY
KEY
,
gateway_name
VARCHAR
(
255
)
NOT
NULL
,
port
INTEGER
NOT
NULL
,
namespace
VARCHAR
(
255
)
NOT
NULL
,
region_code
VARCHAR
(
50
)
NOT
NULL
,
host
TEXT
NOT
NULL
,
-- Stored as comma-separated string
mode
VARCHAR
(
50
)
NOT
NULL
,
rule_num
INTEGER
DEFAULT
0
,
attack_num
INTEGER
DEFAULT
0
,
rule_category_status
JSONB
NOT
NULL
);
-- Create waf_rules table
CREATE
TABLE
waf_rules
(
id
SERIAL
PRIMARY
KEY
,
category_id
VARCHAR
(
255
)
NOT
NULL
,
level
INTEGER
NOT
NULL
,
name
VARCHAR
(
255
)
NOT
NULL
,
type
VARCHAR
(
50
)
NOT
NULL
,
description
TEXT
,
expr
TEXT
NOT
NULL
,
mode
VARCHAR
(
50
)
NOT
NULL
);
-- Create waf_rule_categories table
CREATE
TABLE
waf_rule_categories
(
id
SERIAL
PRIMARY
KEY
,
category_id
VARCHAR
(
255
)
NOT
NULL
,
category_en
VARCHAR
(
255
)
NOT
NULL
,
category_zh
VARCHAR
(
255
)
NOT
NULL
,
description_en
TEXT
,
description_zh
TEXT
,
status
INTEGER
NOT
NULL
,
rules
JSONB
NOT
NULL
);
-- Add indexes for better query performance
CREATE
INDEX
idx_waf_services_gateway_name
ON
waf_services
(
gateway_name
);
CREATE
INDEX
idx_waf_services_namespace
ON
waf_services
(
namespace
);
CREATE
INDEX
idx_waf_rules_category_id
ON
waf_rules
(
category_id
);
CREATE
INDEX
idx_waf_rule_categories_category_id
ON
waf_rule_categories
(
category_id
);
\ No newline at end of file
internal/controller/waf.go
View file @
aac6ce00
...
@@ -88,3 +88,15 @@ func (c *WafController) UpdateMode(ctx *gin.Context) {
...
@@ -88,3 +88,15 @@ func (c *WafController) UpdateMode(ctx *gin.Context) {
}
}
utils
.
AssembleResponse
(
ctx
,
nil
,
nil
)
utils
.
AssembleResponse
(
ctx
,
nil
,
nil
)
}
}
func
(
c
*
WafController
)
SaveRuleCategoryToDB
(
ctx
*
gin
.
Context
)
{
ctx1
,
cancel
:=
context
.
WithTimeout
(
context
.
Background
(),
10
*
time
.
Second
)
defer
cancel
()
err
:=
c
.
service
.
SaveRuleCategoryToDB
(
ctx1
)
if
err
!=
nil
{
utils
.
AssembleResponse
(
ctx
,
nil
,
err
)
return
}
utils
.
AssembleResponse
(
ctx
,
nil
,
nil
)
}
internal/model/waf.go
View file @
aac6ce00
...
@@ -53,7 +53,7 @@ type WafRule struct {
...
@@ -53,7 +53,7 @@ type WafRule struct {
ID
int
`json:"id"`
ID
int
`json:"id"`
CategoryID
string
`gorm:"column:category_id"`
CategoryID
string
`gorm:"column:category_id"`
Level
int
`json:"level"`
Level
int
`json:"level"`
Status
int
`gorm:"column:status"`
//
Status int `gorm:"column:status"`
Name
string
`json:"name"`
Name
string
`json:"name"`
Type
string
`json:"type"`
Type
string
`json:"type"`
Description
string
`json:"description"`
Description
string
`json:"description"`
...
@@ -65,6 +65,16 @@ func (WafRule) TableName() string {
...
@@ -65,6 +65,16 @@ func (WafRule) TableName() string {
return
"waf_rules"
return
"waf_rules"
}
}
type
RuleList
[]
WafRule
func
(
r
RuleList
)
Value
()
(
driver
.
Value
,
error
)
{
return
json
.
Marshal
(
r
)
}
func
(
r
*
RuleList
)
Scan
(
src
interface
{})
error
{
return
json
.
Unmarshal
(
src
.
([]
byte
),
r
)
}
type
WafRuleCategory
struct
{
type
WafRuleCategory
struct
{
ID
int
`gorm:"column:id;primaryKey;autoIncrement"`
ID
int
`gorm:"column:id;primaryKey;autoIncrement"`
CategoryID
string
`gorm:"column:category_id"`
CategoryID
string
`gorm:"column:category_id"`
...
@@ -73,7 +83,7 @@ type WafRuleCategory struct {
...
@@ -73,7 +83,7 @@ type WafRuleCategory struct {
DescriptionEN
string
`gorm:"column:description_en"`
DescriptionEN
string
`gorm:"column:description_en"`
DescriptionZH
string
`gorm:"column:description_zh"`
DescriptionZH
string
`gorm:"column:description_zh"`
Status
int
`gorm:"column:status"`
Status
int
`gorm:"column:status"`
Rules
[]
Waf
Rule
`gorm:"column:rules"`
Rules
Rule
List
`gorm:"column:rules"`
}
}
func
(
WafRuleCategory
)
TableName
()
string
{
func
(
WafRuleCategory
)
TableName
()
string
{
...
...
internal/service/service.go
View file @
aac6ce00
...
@@ -7,4 +7,5 @@ type Service interface {
...
@@ -7,4 +7,5 @@ type Service interface {
GetWaf
(
ctx
context
.
Context
,
gatewayName
string
)
(
*
Waf
,
error
)
GetWaf
(
ctx
context
.
Context
,
gatewayName
string
)
(
*
Waf
,
error
)
CreateWaf
(
ctx
context
.
Context
,
req
*
CreateWafReq
)
(
*
Waf
,
error
)
CreateWaf
(
ctx
context
.
Context
,
req
*
CreateWafReq
)
(
*
Waf
,
error
)
UpdateMode
(
ctx
context
.
Context
,
req
*
UpdateModeReq
)
(
*
Waf
,
error
)
UpdateMode
(
ctx
context
.
Context
,
req
*
UpdateModeReq
)
(
*
Waf
,
error
)
SaveRuleCategoryToDB
(
ctx
context
.
Context
)
error
}
}
internal/service/types.go
View file @
aac6ce00
...
@@ -189,3 +189,31 @@ type UpdateModeReq struct {
...
@@ -189,3 +189,31 @@ type UpdateModeReq struct {
Namespace
string
`json:"namespace"`
Namespace
string
`json:"namespace"`
RegionCode
string
`json:"region_code"`
RegionCode
string
`json:"region_code"`
}
}
type
WafRule
struct
{
ID
int
`json:"id"`
Level
int
`json:"level"`
Name
string
`json:"name"`
Type
string
`json:"type"`
Description
string
`json:"description"`
Expr
string
`json:"expr"`
Mode
string
`json:"mode"`
}
type
Catagory
struct
{
EN
string
`json:"en"`
Zh
string
`json:"zh"`
}
type
Description
struct
{
EN
string
`json:"en"`
Zh
string
`json:"zh"`
}
type
WafRuleCategory
struct
{
CategoryID
string
`json:"category_id"`
Status
int
`json:"status,omitempty"`
Catagory
Catagory
`json:"catagory"`
Description
Description
`json:"description"`
Rules
[]
WafRule
`json:"rules"`
}
internal/service/waf.go
View file @
aac6ce00
...
@@ -2,9 +2,13 @@ package service
...
@@ -2,9 +2,13 @@ package service
import
(
import
(
"context"
"context"
"fmt"
"os"
"gitlab.com/tensorsecurity-rd/waf-console/internal/model"
"gitlab.com/tensorsecurity-rd/waf-console/pkg/apis/waf.security.io/v1alpha1"
"gitlab.com/tensorsecurity-rd/waf-console/pkg/apis/waf.security.io/v1alpha1"
"gitlab.com/tensorsecurity-rd/waf-console/pkg/generated/clientset/versioned"
"gitlab.com/tensorsecurity-rd/waf-console/pkg/generated/clientset/versioned"
"gopkg.in/yaml.v3"
"gorm.io/gorm"
"gorm.io/gorm"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
)
...
@@ -56,3 +60,71 @@ func (s *wafService) CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, er
...
@@ -56,3 +60,71 @@ 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
)
{
return
nil
,
nil
return
nil
,
nil
}
}
func
(
s
*
wafService
)
GetRuleCategories
(
ctx
context
.
Context
)
([]
WafRuleCategory
,
error
)
{
var
categories
[]
WafRuleCategory
err
:=
s
.
db
.
Table
(
"waf_rule_categories"
)
.
Find
(
&
categories
)
.
Error
if
err
!=
nil
{
return
nil
,
err
}
return
categories
,
nil
}
func
(
s
*
wafService
)
GetRules
(
ctx
context
.
Context
,
categoryID
string
)
([]
WafRule
,
error
)
{
var
rules
[]
WafRule
err
:=
s
.
db
.
Table
(
"waf_rules"
)
.
Where
(
"category_id = ?"
,
categoryID
)
.
Find
(
&
rules
)
.
Error
if
err
!=
nil
{
return
nil
,
err
}
return
rules
,
nil
}
func
(
s
*
wafService
)
GetRule
(
ctx
context
.
Context
,
ruleID
int
)
(
*
WafRule
,
error
)
{
var
rule
WafRule
err
:=
s
.
db
.
Table
(
"waf_rules"
)
.
Where
(
"id = ?"
,
ruleID
)
.
First
(
&
rule
)
.
Error
if
err
!=
nil
{
return
nil
,
err
}
return
&
rule
,
nil
}
func
(
s
*
wafService
)
SaveRuleCategoryToDB
(
ctx
context
.
Context
)
error
{
var
categories
[]
WafRuleCategory
yamlFile
,
err
:=
os
.
ReadFile
(
"waf-rules.yaml"
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error reading yaml file: %v"
,
err
)
}
err
=
yaml
.
Unmarshal
(
yamlFile
,
&
categories
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error unmarshaling yaml: %v"
,
err
)
}
for
_
,
category
:=
range
categories
{
rules
:=
[]
model
.
WafRule
{}
for
_
,
rule
:=
range
category
.
Rules
{
rules
=
append
(
rules
,
model
.
WafRule
{
ID
:
rule
.
ID
,
CategoryID
:
category
.
CategoryID
,
Level
:
rule
.
Level
,
Name
:
rule
.
Name
,
Type
:
rule
.
Type
,
Description
:
rule
.
Description
,
Expr
:
rule
.
Expr
,
Mode
:
rule
.
Mode
,
})
}
model
:=
model
.
WafRuleCategory
{
CategoryID
:
category
.
CategoryID
,
Status
:
category
.
Status
,
CategoryEN
:
category
.
Catagory
.
EN
,
CategoryZH
:
category
.
Catagory
.
Zh
,
DescriptionEN
:
category
.
Description
.
EN
,
DescriptionZH
:
category
.
Description
.
Zh
,
Rules
:
model
.
RuleList
(
rules
),
}
s
.
db
.
Table
(
"waf_rule_categories"
)
.
Create
(
&
model
)
}
return
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