Initial commit (code only without large binaries)
This commit is contained in:
112
EdgeCommon/pkg/serverconfigs/firewallconfigs/firewall_actions.go
Normal file
112
EdgeCommon/pkg/serverconfigs/firewallconfigs/firewall_actions.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package firewallconfigs
|
||||
|
||||
type FirewallActionType = string
|
||||
|
||||
const (
|
||||
FirewallActionTypeIPSet FirewallActionType = "ipset"
|
||||
FirewallActionTypeFirewalld FirewallActionType = "firewalld"
|
||||
FirewallActionTypeIPTables FirewallActionType = "iptables"
|
||||
FirewallActionTypeScript FirewallActionType = "script"
|
||||
FirewallActionTypeHTTPAPI FirewallActionType = "httpAPI"
|
||||
FirewallActionTypeHTML FirewallActionType = "html"
|
||||
)
|
||||
|
||||
type FirewallActionTypeDefinition struct {
|
||||
Name string `json:"name"`
|
||||
Code FirewallActionType `json:"code"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
func FindAllFirewallActionTypes() []*FirewallActionTypeDefinition {
|
||||
return []*FirewallActionTypeDefinition{
|
||||
{
|
||||
Name: "ipset",
|
||||
Code: FirewallActionTypeIPSet,
|
||||
Description: "使用特定的ipset管理IP,可以结合iptables和firewalld等工具一起工作。",
|
||||
},
|
||||
{
|
||||
Name: "firewalld",
|
||||
Code: FirewallActionTypeFirewalld,
|
||||
Description: "使用Firewalld管理IP,非持久保存,reload之后重置规则。",
|
||||
},
|
||||
{
|
||||
Name: "iptables",
|
||||
Code: FirewallActionTypeIPTables,
|
||||
Description: "使用IPTables管理IP,不支持超时时间设定,非持久保存,reload之后重置规则。",
|
||||
},
|
||||
{
|
||||
Name: "自定义脚本",
|
||||
Code: FirewallActionTypeScript,
|
||||
Description: "使用自定义的脚本执行IP操作。",
|
||||
},
|
||||
{
|
||||
Name: "自定义HTTP API",
|
||||
Code: FirewallActionTypeHTTPAPI,
|
||||
Description: "使用自定义的HTTP API执行IP操作。",
|
||||
},
|
||||
{
|
||||
Name: "显示HTML内容",
|
||||
Code: FirewallActionTypeHTML,
|
||||
Description: "显示一段自定义的HTML网页内容",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func FindFirewallActionTypeName(actionType FirewallActionType) string {
|
||||
for _, a := range FindAllFirewallActionTypes() {
|
||||
if a.Code == actionType {
|
||||
return a.Name
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
type FirewallActionIPSetConfig struct {
|
||||
Path string `json:"path"` // 命令路径 TODO 暂时不实现
|
||||
|
||||
WhiteName string `json:"whiteName"` // IPSet白名单名称
|
||||
BlackName string `json:"blackName"` // IPSet黑名单名称
|
||||
|
||||
WhiteNameIPv6 string `json:"whiteNameIPv6"` // IPv6白名单名称
|
||||
BlackNameIPv6 string `json:"blackNameIPv6"` // IPv6黑名单名称
|
||||
|
||||
MaxElements int `json:"maxElements"` // 最多IP数量 TODO 暂时不实现
|
||||
AutoAddToIPTables bool `json:"autoAddToIPTables"` // 是否自动创建IPTables规则
|
||||
AutoAddToFirewalld bool `json:"autoAddToFirewalld"` // 是否自动加入到Firewalld
|
||||
|
||||
// TODO 添加需要阻止的端口列表
|
||||
}
|
||||
|
||||
type FirewallActionFirewalldConfig struct {
|
||||
Path string `json:"path"` // 命令路径 TODO 暂时不实现
|
||||
|
||||
// TODO 添加需要阻止的端口列表
|
||||
}
|
||||
|
||||
type FirewallActionIPTablesConfig struct {
|
||||
Path string `json:"path"` // 命令路径 TODO 暂时不实现
|
||||
|
||||
// TODO 添加需要阻止的端口列表
|
||||
}
|
||||
|
||||
type FirewallActionScriptConfig struct {
|
||||
Path string `json:"path"` // 脚本路径
|
||||
Cwd string `json:"cwd"` // 工作目录 TODO 暂时不实现
|
||||
Args []string `json:"args"` // 附加参数 TODO 暂时不实现
|
||||
|
||||
// TODO 添加需要阻止的端口列表
|
||||
}
|
||||
|
||||
// FirewallActionHTTPAPIConfig HTTP API配置
|
||||
type FirewallActionHTTPAPIConfig struct {
|
||||
URL string `json:"url"` // URL路径
|
||||
TimeoutSeconds int `json:"timeoutSeconds"` // 超时时间 TODO 暂时不实现
|
||||
Secret string `json:"secret"` // 认证密钥 TODO 暂时不实现
|
||||
|
||||
// TODO 添加需要阻止的端口列表
|
||||
}
|
||||
|
||||
// FirewallActionHTMLConfig HTML配置
|
||||
type FirewallActionHTMLConfig struct {
|
||||
Content string `json:"content"` // 完整的HTML内容
|
||||
}
|
||||
Reference in New Issue
Block a user