Files
EdgeAdmin/internal/web/actions/default/servers/components/waf/import.go

60 lines
1.4 KiB
Go
Raw Normal View History

2020-10-06 21:02:37 +08:00
package waf
2020-12-02 16:09:23 +08:00
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
"github.com/iwind/TeaGo/actions"
)
2020-10-06 21:02:37 +08:00
type ImportAction struct {
actionutils.ParentAction
}
func (this *ImportAction) Init() {
2020-10-07 11:18:07 +08:00
this.Nav("", "", "import")
2020-10-06 21:02:37 +08:00
}
func (this *ImportAction) RunGet(params struct{}) {
this.Show()
}
2020-12-02 16:09:23 +08:00
func (this *ImportAction) RunPost(params struct {
FirewallPolicyId int64
File *actions.File
Must *actions.Must
CSRF *actionutils.CSRF
}) {
defer this.CreateLogInfo("从文件中导入规则到WAF策略 %d", params.FirewallPolicyId)
if params.File == nil {
this.Fail("请上传要导入的文件")
}
if params.File.Ext != ".json" {
this.Fail("规则文件的扩展名只能是.json")
}
data, err := params.File.Read()
if err != nil {
this.Fail("读取文件时发生错误:" + err.Error())
}
config := &firewallconfigs.HTTPFirewallPolicy{}
err = json.Unmarshal(data, config)
if err != nil {
this.Fail("解析文件时发生错误:" + err.Error())
}
_, err = this.RPC().HTTPFirewallPolicyRPC().ImportHTTPFirewallPolicy(this.AdminContext(), &pb.ImportHTTPFirewallPolicyRequest{
HttpFirewallPolicyId: params.FirewallPolicyId,
HttpFirewallPolicyJSON: data,
2020-12-02 16:09:23 +08:00
})
if err != nil {
this.Fail("导入失败:" + err.Error())
}
this.Success()
}