feat: cmd命令封装
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"ems.agt/features/firewall/model"
|
||||
"ems.agt/features/firewall/repo"
|
||||
"ems.agt/lib/core/cmd"
|
||||
"ems.agt/lib/core/utils/firewall"
|
||||
fireClient "ems.agt/lib/core/utils/firewall/client"
|
||||
@@ -14,10 +15,13 @@ import (
|
||||
)
|
||||
|
||||
// 实例化服务层 ServiceFirewall 结构体
|
||||
var NewServiceFirewall = &ServiceFirewall{}
|
||||
var NewServiceFirewall = &ServiceFirewall{
|
||||
repoFirewall: *repo.NewRepoFirewall,
|
||||
}
|
||||
|
||||
// ServiceFirewall 防火墙 服务层处理
|
||||
type ServiceFirewall struct {
|
||||
repoFirewall repo.RepoFirewall
|
||||
}
|
||||
|
||||
// LoadBaseInfo 获取防火墙基础信息
|
||||
@@ -130,44 +134,37 @@ func (s *ServiceFirewall) RulePage(querys model.RuleQuerys) (map[string]any, err
|
||||
backDatas = datasFilterStrategy[start:end]
|
||||
}
|
||||
|
||||
// datasFromDB, _ := hostRepo.ListFirewallRecord()
|
||||
datasFromDB := s.repoFirewall.List(model.Firewall{})
|
||||
for i := 0; i < len(backDatas); i++ {
|
||||
// for _, des := range datasFromDB {
|
||||
// if querys.Type != des.Type {
|
||||
// continue
|
||||
// }
|
||||
// if backDatas[i].Port == des.Port && querys.Type == "port" &&
|
||||
// backDatas[i].Protocol == des.Protocol &&
|
||||
// backDatas[i].Strategy == des.Strategy &&
|
||||
// backDatas[i].Address == des.Address {
|
||||
// backDatas[i].Description = des.Description
|
||||
// break
|
||||
// }
|
||||
// if querys.Type == "address" && backDatas[i].Strategy == des.Strategy && backDatas[i].Address == des.Address {
|
||||
// backDatas[i].Description = des.Description
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
for _, des := range datasFromDB {
|
||||
if querys.Type != des.Type {
|
||||
continue
|
||||
}
|
||||
if backDatas[i].Port == des.Port && querys.Type == "port" &&
|
||||
backDatas[i].Protocol == des.Protocol &&
|
||||
backDatas[i].Strategy == des.Strategy &&
|
||||
backDatas[i].Address == des.Address {
|
||||
backDatas[i].Description = des.Description
|
||||
break
|
||||
}
|
||||
if querys.Type == "address" && backDatas[i].Strategy == des.Strategy && backDatas[i].Address == des.Address {
|
||||
backDatas[i].Description = des.Description
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if req.Type == "port" {
|
||||
// apps := u.loadPortByApp()
|
||||
// for i := 0; i < len(backDatas); i++ {
|
||||
// port, _ := strconv.Atoi(backDatas[i].Port)
|
||||
// backDatas[i].IsUsed = common.ScanPort(port)
|
||||
// if backDatas[i].Protocol == "udp" {
|
||||
// backDatas[i].IsUsed = common.ScanUDPPort(port)
|
||||
// continue
|
||||
// }
|
||||
// for _, app := range apps {
|
||||
// if app.HttpPort == backDatas[i].Port || app.HttpsPort == backDatas[i].Port {
|
||||
// backDatas[i].APPName = app.AppName
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// go u.cleanUnUsedData(client)
|
||||
if querys.Type == "port" {
|
||||
for i := 0; i < len(backDatas); i++ {
|
||||
port, _ := strconv.Atoi(backDatas[i].Port)
|
||||
backDatas[i].IsUsed = scan.ScanPort(port)
|
||||
if backDatas[i].Protocol == "udp" {
|
||||
backDatas[i].IsUsed = scan.ScanUDPPort(port)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
go s.cleanUnUsedData(client)
|
||||
|
||||
return data, nil
|
||||
}
|
||||
@@ -184,3 +181,27 @@ func (s *ServiceFirewall) pingStatus() string {
|
||||
}
|
||||
return "Disable"
|
||||
}
|
||||
|
||||
func (s *ServiceFirewall) cleanUnUsedData(client firewall.FirewallClient) {
|
||||
list, _ := client.ListPort()
|
||||
addressList, _ := client.ListAddress()
|
||||
list = append(list, addressList...)
|
||||
if len(list) == 0 {
|
||||
return
|
||||
}
|
||||
records := s.repoFirewall.List(model.Firewall{})
|
||||
if len(records) == 0 {
|
||||
return
|
||||
}
|
||||
for _, item := range list {
|
||||
for i := 0; i < len(records); i++ {
|
||||
if records[i].Port == item.Port && records[i].Protocol == item.Protocol && records[i].Strategy == item.Strategy && records[i].Address == item.Address {
|
||||
records = append(records[:i], records[i+1:]...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, record := range records {
|
||||
_ = s.repoFirewall.Delete(record.ID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user