Commit aac6ce00 authored by qiuqunfeng's avatar qiuqunfeng
Browse files

commit

parent f2ae41c0
......@@ -14,4 +14,5 @@ func SetWafRouter(e *gin.Engine, client *versioned.Clientset, db *gorm.DB) {
v1.GET("waf/:gateway_name", wafController.Waf)
v1.POST("waf", wafController.CreateWaf)
v1.PUT("mode", wafController.UpdateMode)
v1.POST("debug/savecatagory", wafController.SaveRuleCategoryToDB)
}
region_configs:
- region_code: cn-east-1
api_server: https://192.168.3.10:6443
ca_data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1EVXhPVEE0TXpjME5sb1hEVE15TURVeE5qQTRNemMwTmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTnc1CnlLMDJ3UExYcUcrdWFnbk1VclRET28wNDAycjZmcUxMNmlwSHRXZ2wyZ1d1TjJtWUNnZjNqWFh0YXF0MVlra2oKekdWOFJSTFBVVWJRNUN5bUhYbzJ5dEFxb05vT1hYemErQ3RCUTg1NDJJcGlTVW85OVRPOG5ZL0kyQkx3aU1DWApVOGtQU1Y4UGYxUk8ray9aZnI5ZUhjTEh3T0lKdVpvcDAwQmV0VkkrRVJ2OVdMa3NrZnUxU3BFWjdRbENOdmRDCml3SndQZm8reGJrUzg4bEJZdVZCV3R4MUxveW41RmtUZjVqUnJSZkgxMXE2LzcwMXZWdE00SjN6UHYzN2RzV0QKallwaGt0anF5amh5M0ptZFhsOVhETWYzbjBwN25mS0R0UUZVWWthUDBTN2hWcnlHcFVES0RmWldrMEdIeU0wZwpIVjNvT3BFczk4NTlIWUg1UUVjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZBRlVCK2VvT0Zpc1A2czVVRFA1YTNKdXZlOGpNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRHhIcVJjWDA5d3JEaEdXRXBOdAowQnN1RXp3SHRIYmk0dkpmNWdGTHFFd1ZPREthYVF4aWlaVXg5NmNkUU1IZ1RsOVZweGpDVTdrYnhMUFRiaU1yCmFKd1hWYW5VYmFoYzhuTkVPbVV0RWp5MXdNL012Vm5XQWtwTlNVaHJXWjZ2L1dwS3VvRWNHeVNZUHR5MDdkU1cKS1NsVk8yYytFYTQraUxwdC8relVRL0JiaG9wYk9kRWMreEZJVXlobi9YSzl1NjlDVVloaFhyZjRXR0dXdmU4TApFbXpnWmN4Y1NROERmeHNMQWFSdnpaUW5pY3RoZnFBUXdsbDFkbTlaTWxicWgyMFg4MkhOM3hET0dUcXQvbVpyCmxqcjJGdHNjbkVMOWtEYm85MmFvVkR4c0tBNnF1R0t3eWVuSVh3a0VjV1BmM3lxUmhPK3JKQ3lzWWxueVZzcVMKaVk4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
api_server: https://172.21.1.191:6443
ca_data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1USXlOekExTlRReE5sb1hEVE14TVRJeU5UQTFOVFF4Tmxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTC95Cmt1VDNEN3BtZ1h3VGlzcFFZMTFVZVZaanRSZEUzZTRDZWVST3FkUnJYakJvNEp4Z2dDRUVZamo5TWp3NUFMUlQKaDFpazJXWloxd3IzNFA0RzRQTVVWUk8xNVRTR3BsNzNNQi9LejBOK01GcG9rTG9kTkFDQ3djM2FRM3htUU5ZeApXdmlKK1h0clpkS3hYVVZvN0tTYmNKb2x3eWgyaGtBMkJtR0VRNWZoaCtwMWVYV0xDdWFxQUJUZU56VVlrLytiClNZTmpRMlhkUnpxMENDblgzNnpnNkFHbUJnQUJUK0wvMlI1VDJRZzF3VktDTDNqZ1JwQW9DSEt0bXRuejVUcVgKQmNpT2F6ZzJuM3h2amxwdHNTZjBqZDhRSHdXZWd0VnBBTmQ5UVpKc2djdFRNdVB6OENKZjB2d0taZHAzbzh5VApvRHNpR1JmUjhUeUExQXhWOWY4Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZPK2hFdEJYdDBLajlRdHhHR0dqYUhBS2NEUFhNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRWhWcEV1ZW9tZjNTVEw3bDBkSQpLS1Y5VC9qd3NYbFNQZU5INnhNQnMrS3htRi9mS2dmM1dRbnhlVWpLaVJ4S1YwZzhYb0pqd2VvN2RKYzVXRFFrCjV1QzRvTHl2L3VydzRhZCsxdGovVFdXUDIvK0NlWVRIblZxbW5NVzY0azdTaSt3cDBIRDFEYjRXS3FHdEZWV0cKRDNkUXlhNDBoN1krMUcya1FPSklNYVlaNXpCc2FzSzJWSjN4eUFGYTFRM3lFQWpsY1l2SDh6ZWMwNVlNU0phZQppRlc0aTNPK2YveWJwT2VwT2RTSDdUL0tLdWd1b0pTNVFSSjFVT3lWVGg3bmp6NERVUlhxdzdDcWxXc2JONWpCCm1yOE96aXpndVI5WE43NjZYbkthcU9NWXlhcE02RzlWSmVSZHdjaE9aN3hKaHdhWVJncTRWSE4yazJDMyt6UGkKZ3dZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
token: ""
client_cert_data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJQVI3c1lXVjBvREl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBMU1Ua3dPRE0zTkRaYUZ3MHlOVEExTVRneE16VXpOVEZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTBKbjMwdzl2SDFNYWZoZ3cKSnA2cnpxWTdUUU02aWI0Qm91RU1uQXdFTFVpeEVTZHZhOFpPeG1LTFYxUHdPZWREbFlUdVM1VVljeENIQUd6TgpMWlV2VVdPd0k1MFNwZmNiTHlPSVdQQjVQODA4MCtUdlJVRFZDWjRGb29nU29jb2VNMDc4cTN4dlNMWStoRnlGCkdnZWdURmJTeFFzMXlMRWc0Um96WkxQZExoOFIvWEVidEZtb2x6UlhrUmc4MStEQUx0ZjVZbkV2akNEMGhWM1kKZ0QvZlpiN21iNEtBcnN3RjBRL2U3VUtoODJYaGxlOVozTllJQlBkTzNqQmFYcThDRnNEcnMvdEpSYllJOFJXdgozYzRJZ281R1BHaGwxUm9QUkc1ZDFaaFRsb216MEdPREtsRWlmejhlcld1TCs3R2xOUmRyTndtY3hZUnZSSkRDClRIcUFPUUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JRQlZBZm5xRGhZckQrck9WQXorV3R5YnIzdgpJekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBQ2s2UU5MMjBwNTN4UVhObjRlczg5blkxMEJadHlVS3pMY1ExCjJoSmpQUjlwTVFFVnRCNnlUeXJGRnJFRUxnR0ttTGF6WDVoV2paS083UW9QVXNGMmcxVHpMUzgvQXR5SGhCVm4KczJZNE1NNllkb2N4S0J5bjVFTHJlRXNNazh2RzdQOHFzbjZ5NVZ1KzhSbDBnWDdib0E5L0NLenRVQWNza3QzSQpMYjN3elpTdDFEREF5a2NyQng2ck9BTGhjN0lhQU5KSHYzNzNNNGFOeks4UlA1TUVYcEZTNjg4M1Zld1ZNYVRwCjNya1p3YW9nUU45NHpMYVM4UklZTVpjQVc4ZnNGN1pWeHV1Ukg5Z1NkdEtpYW5OWHVlSkhwSEtQZVRXRUxld3UKaEdFbW1zbzVtWE9oNHVwOGQyYnFPZDloOTdyblplMnFSdEQwblZIVE5QOTVueXZnZFE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
client_key_data: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBMEpuMzB3OXZIMU1hZmhnd0pwNnJ6cVk3VFFNNmliNEJvdUVNbkF3RUxVaXhFU2R2CmE4Wk94bUtMVjFQd09lZERsWVR1UzVVWWN4Q0hBR3pOTFpVdlVXT3dJNTBTcGZjYkx5T0lXUEI1UDgwODArVHYKUlVEVkNaNEZvb2dTb2NvZU0wNzhxM3h2U0xZK2hGeUZHZ2VnVEZiU3hRczF5TEVnNFJvelpMUGRMaDhSL1hFYgp0Rm1vbHpSWGtSZzgxK0RBTHRmNVluRXZqQ0QwaFYzWWdEL2ZaYjdtYjRLQXJzd0YwUS9lN1VLaDgyWGhsZTlaCjNOWUlCUGRPM2pCYVhxOENGc0Rycy90SlJiWUk4Uld2M2M0SWdvNUdQR2hsMVJvUFJHNWQxWmhUbG9tejBHT0QKS2xFaWZ6OGVyV3VMKzdHbE5SZHJOd21jeFlSdlJKRENUSHFBT1FJREFRQUJBb0lCQUgweCt5ZmtHbmc5WXlnTQprbEdMWjJmV0lyOGMwZlE3WWpZRVJaSWVNQitSZ2h2ZWhDTzEyQzkrazB4dEp6OUpTaW1ocDNjYlc1b3JjQ3JVCklleGFuaFNGOVAvYTFJZGhJQ0tSZTlLTk9PZ080SlAzMFpiSnkxSkRVZlJ6SUdPVHI3NXhpSG5QYStiQzRoQ0UKaXFuTnErcEZMYWh2Q3UrUlJ6OXlmeWZRUDAzZTZINVI3R0ZKd3JneHkwVWVjakNCRGJxbVRFWk1rT3FHTlVLawo1eVB3TEluMi9hVlp5VGNrYXpyckpXcDU0QmdKN2FRTDNjR2VscGZpaElObFVMMXZnc1BzWjJ3UFUxaFZqd0JDCkJxazVFY3ZLZUptakZLMEg1RUJKTldEbWxPVHkvM1pzZzFMbHhpdmVyWEpkNnJmaVJZNTJEV2Z2Rjc3UlF3bmMKWlorZFJJRUNnWUVBNCtob0RCdHFRcG5OcjZ4M0pyenowaS9rN3ZQU1lXS09DcHRqNlU4RE9BMWZWRTZHRnVKMwowaVdnd0VwaGhDL1YrY3V3L0o5WVNQb3gvTElWQm1IbmR2aXJoZGJZTDVKZ2lMN0Z6TzF0cy9abjhIVjlING1DClVhT0xtQXNDTHJtakZsbGFLODhBNUJrblVBV0pFTml2aWN4N28rRUV3dWJMNVJnSjU1WFE4aEVDZ1lFQTZsQloKOXNKdEZhWWE4aEpFMXNWZ05RMHJtMXd6eFdvU2xpRnc0UTZOQ1pXRWU3UnFGYmNGdWQrVDlLMmZnQVJwdU5NYQozSW1STVQ2Qm9UTU5ibldRS1RuMVlWU3pVRktEZzQ1ZVY2cjI3bGFpaHoyNy9QTXZCZTQ1UkVPdk9RS0ZWZitqClBsclJjMXhzSERSamNteFNCQlBKRHpKZi82Tzc1OVMwVURMc2c2a0NnWUFXeWRGRmpLUTJYcHlqZVRJOHpGM3cKNFZzWnpZVjJ1VjBNa0hjUUNCZUJUa3orNkE4ZVVLeThkWWk2VVhXb3V3UEJRMjNDQk1qV0d6Wk9WeHdsRkRzSgp1Vm1sTzFOSWhuRmltdmk2UWU5Yk5FTTJWdmtZNHk0RnJiMnlpVDlCbnN4QTJ0UmFWd3QydzFFYi9rR3pUb2RXCjF2eHg2WGtKWi94eFB0TVd0Zk03a1FLQmdRREk1VWVkR0NuckM5WENnd05lbVMvWmpJYzgxeHJVUWhQWmdLYUYKYjdKZzZ6OEJ5VGZEa241b1ZWZEh5NjBiVjYxRmVFcHBsOUZTeFdMalVTQk0rcU0xbGFuYlg0RzJkbWluM09McQppM3pYOEpPOUhLTVhSM0dqeGhKM2d3aXkrb1JUcmJESy81YmhML2JKWCtsNzYzK09XMkJobFRGVnY0NldRSHF3CjRGaUVzUUtCZ1FDNmcwNG9vMUVNbFRPL2svZ3dnSnkwYy84SGZNUlAxc2xzL1VyeCtRVG5jY283T2Z3bnVZNVcKbWM1aENQVVgvT0J4elRla2l3VDZpcUdHeFVPS3h0bkQ4UEVaYUJVK1Z1SkZ0akRSRE94TDMxRThtbHRPS0RSQQpiTUN4cUQxS2F4Rk1YdThqcUVHQTZsTWdvbDdkalRERUUxd090WFgwVHczL04rWGwyM1J6Rmc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo="
client_cert_data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJRTg0c2l2UmRGaUF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRFeU1qY3dOVFUwTVRaYUZ3MHlOVEV5TVRjd056TTFNakJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXVKd0JOS0xVSEhaNFRUa2kKQlJFakVJdk40dndMMWlOWVMxQzdwVFBDUzdhbHp5TFpVZWVFOE9qV2I4OWtXVGpLeStyN2dGeTNucVZsMkdCTgpjU2dUVXA0QUNMeCs3ZVVtbU9UWUtoMG82WXd0MlJ6TmVySHlYSnB3aW0wb1drQnp6eno1YzZ6eW5WQ0Y0QWtICk1IaHBLdXU5RFQ4SkozYVhrdDVZR1NuR0FSS2dVNWEvU0pmelAwanRJV1hmdUtIdlFpdzdmMVNmM1VxSjllVkwKZUk5TjYzcnhHREk4VERaU01kR0hzZjBhVi9KUGRDdmQxUDkxei9ab2wwVU5qejBhNVd3b1g0dXVpelVGMXA1RApxbGtnbndweEU1M21VUzU2bTlIdEk1bStuUjJ4OHFZUGYyb2M5bWZndW1RZDY2eWdoNmV2di9LZzkxWUMxaEtSCnJlWnV1d0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUdm9STFFWN2RDby9VTGNSaGhvMmh3Q25BegoxekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBRkpDWVQwMkNiMUV2MVVyVzNZcllqSjZ1S2J1L0RRalNxN2xxCktpS2RjajZ4Z1BGYVVRVVo1STlXRmtWNk84clhsK1RHeDZjZGVZd2lPaHhmblRxU1dlME9wSTA4SEk2dlJJUU0KcFFwWmVuUTU3ckNiNUVEc0ZoLzVNdVNvZHFHeHhaR3F5c1RSOU8xUTdyVmlVWmNlbUNITlNLMXQxYlNRa0pTRQpsckpFZlRJa3Z3cFRPSm5PM3lkT1hMbHAzYXpNTlNuVkVJNis5NkcrengxeEF2ZVhlL3pwS0NNUTRpN0RLeUp5ClNYOEgvRU1NZWZwRWRtY0RFUXk2Q1YxM1ZOWlpRVDJGTUVvQ0RFVEt2azlnOFNidVY0cytDRnF2bTZzMm84ZUsKV0lFYlZNUUlQaHVRVS9Sb3FzaUx6MUtJUGpiY3BrZGxFbitOQjZlN2pGM1RPMm92MkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="
client_key_data: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdUp3Qk5LTFVISFo0VFRraUJSRWpFSXZONHZ3TDFpTllTMUM3cFRQQ1M3YWx6eUxaClVlZUU4T2pXYjg5a1dUakt5K3I3Z0Z5M25xVmwyR0JOY1NnVFVwNEFDTHgrN2VVbW1PVFlLaDBvNll3dDJSek4KZXJIeVhKcHdpbTBvV2tCenp6ejVjNnp5blZDRjRBa0hNSGhwS3V1OURUOEpKM2FYa3Q1WUdTbkdBUktnVTVhLwpTSmZ6UDBqdElXWGZ1S0h2UWl3N2YxU2YzVXFKOWVWTGVJOU42M3J4R0RJOFREWlNNZEdIc2YwYVYvSlBkQ3ZkCjFQOTF6L1pvbDBVTmp6MGE1V3dvWDR1dWl6VUYxcDVEcWxrZ253cHhFNTNtVVM1Nm05SHRJNW0rblIyeDhxWVAKZjJvYzltZmd1bVFkNjZ5Z2g2ZXZ2L0tnOTFZQzFoS1JyZVp1dXdJREFRQUJBb0lCQUd0L1hDeGNUSXN1YVNyKwpnOUxUZ2NtV3Z4TFhsY1RoMi80dlNyVU9DS3V4OWFkQ01hM0IxT1c3ajNLWUgyVGM3eW9DOE9SMEdQQW1lOEdkCmdqck1EVVJrZ0x5Vmxvdk1qY2NtS3NHTExWR2hzT2ptSHJpOWVkVjJrT1hxWGo3L25QQW1IMU8rZDZBblRXMkIKbEZBakxZb3lyMmxSTlhGbld5ZklsU0JCOU95V0FIRWExTlQ5OUV4ckU3TUpla3hXTkN5Y3pSTlhsZm1mTU9qMwpJaFhXcHFKWTVPZ3lEZkxnc291b1MybnpkeW9RT3lyUXplWjJib0p3a3dZRHUyR3lndTRNRXBRdmxKdEd3ZStCCm1TNEhSMlBYbzVNOERCSVV4NHJRNTlzb1cyK3NPZm1kcnV0YnF3RklTMHBoalBzU1pNR253KzZKUUpka1E0Q1gKVU5tOVVIRUNnWUVBelVKaTdmdWdNR1k0MVA2eWpSQTVZMFIwQWI2OXN2OWl1TjBZVGEzYTJENVZWenRUL0RUcgpvcVE1a0VkR1FFaXhjWHROWW52cHZaL3U0QVZ5UTlIQ01xWUMrdVJ5b1pWSEh1UkRaVDdCYWtsTHg1eXhYelYzCitTWVlGYTJuWUtiRGN6Qkl1RWhlL01UVFI3OS9mUmNuZXphQWl4NXJ4eXVDRUdrZFFhdEZLc1VDZ1lFQTVqN1AKVjRpbkNmUHAxOVJkL0MwcFFnSFJpMnJoYm4walZDbFh6Z0phQUthcmZUbUVGekQzY0xpbnFCVmhKemlSR2xOdQpPS1ZvdFJVaXNTbjVob2NDaDhDb2w5dkRPRlNXUG56TmhZTUFWb0hCNHNZZnZqL0l2Y0diU2F6RDNJdnkyTDNIClNYOFNtS2RvcEMya1dxaGlVVllQVVhRVHdhNjFXZlIxay9HOHkzOENnWUEyVEg2UlNFUjdLVCtWa1A4NDgvYksKZk54WGJkY1BHQ0pNbHlpTHZCY3RwMmU2R05iQjNGb05mM1krNWF2KzYzd05jam5wZUxBLzJxUTluUk02UDY0bwo2ZVBWN1VNcDNheWZ6bkRKd3MwMXljZ0RPVDl1MlYwd2l0UktQOU1NYlhFODhxUDZKQ01FcVNqZlRSaHp4Z0ZLCnhnTkJTajNteFdxMTNxaS9xNGd6cFFLQmdRRGRob3NaampvZzRsUVlPNVNkdjVuVmowaGNXbDVCWHhjeHI0RnkKaldLcEE3TTFqYlFnV0JXS2w2OS9rZXBpd1JNakFDaXBTY1JmamRGT0liT1prcWFGbElEaGN5ajJOclJEdFBKTQp4Y2o2Y21mb1YzVk5KN050bHl4Z2kxLzYvNCtNcDdOcGJHQ3BEVkVwdlZ4SGVZRDIvdFZJS21XajBRTmRaRTRJCkpPcmY0d0tCZ0dIRFE1aHF3ak9YNHBxZDZXSVY1M1RZZFZKZ3JodGk1WG1nOHZ0QzR0bDNFL0dNZU9tOG8xTmEKaFBQWDJqTm1mNFFzTUNHNWtteDNJWlFKVGJmU0FJUGNZdWxRZkpIWmZVbmx6ckhHRi9WTXdyejFaS0lpY1JQegpzVDZ2NUpOcDRUdlRGdnVFb2YwRmQ4SC81cW5XcERacFlQRGJ1VjRDRCtDNkZiT0xSUTZaCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg=="
db_config:
user: ivan
password: Mysql-ha@123
host: 192.168.3.10
port: 3306
host: 172.21.1.191
port: 30036
database: ivan
\ No newline at end of file
-- 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
......@@ -88,3 +88,15 @@ func (c *WafController) UpdateMode(ctx *gin.Context) {
}
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)
}
......@@ -50,10 +50,10 @@ func (WafService) TableName() string {
}
type WafRule struct {
ID int `json:"id"`
CategoryID string `gorm:"column:category_id"`
Level int `json:"level"`
Status int `gorm:"column:status"`
ID int `json:"id"`
CategoryID string `gorm:"column:category_id"`
Level int `json:"level"`
// Status int `gorm:"column:status"`
Name string `json:"name"`
Type string `json:"type"`
Description string `json:"description"`
......@@ -65,15 +65,25 @@ func (WafRule) TableName() string {
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 {
ID int `gorm:"column:id;primaryKey;autoIncrement"`
CategoryID string `gorm:"column:category_id"`
CategoryEN string `gorm:"column:category_en"`
CategoryZH string `gorm:"column:category_zh"`
DescriptionEN string `gorm:"column:description_en"`
DescriptionZH string `gorm:"column:description_zh"`
Status int `gorm:"column:status"`
Rules []WafRule `gorm:"column:rules"`
ID int `gorm:"column:id;primaryKey;autoIncrement"`
CategoryID string `gorm:"column:category_id"`
CategoryEN string `gorm:"column:category_en"`
CategoryZH string `gorm:"column:category_zh"`
DescriptionEN string `gorm:"column:description_en"`
DescriptionZH string `gorm:"column:description_zh"`
Status int `gorm:"column:status"`
Rules RuleList `gorm:"column:rules"`
}
func (WafRuleCategory) TableName() string {
......
......@@ -7,4 +7,5 @@ type Service interface {
GetWaf(ctx context.Context, gatewayName string) (*Waf, error)
CreateWaf(ctx context.Context, req *CreateWafReq) (*Waf, error)
UpdateMode(ctx context.Context, req *UpdateModeReq) (*Waf, error)
SaveRuleCategoryToDB(ctx context.Context) error
}
......@@ -189,3 +189,31 @@ type UpdateModeReq struct {
Namespace string `json:"namespace"`
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"`
}
......@@ -2,9 +2,13 @@ package service
import (
"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/generated/clientset/versioned"
"gopkg.in/yaml.v3"
"gorm.io/gorm"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
......@@ -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) {
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
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment