mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-21 00:24:12 +08:00
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/1Panel-dev/1Panel/agent/constant"
|
|
"github.com/1Panel-dev/1Panel/agent/global"
|
|
"github.com/1Panel-dev/1Panel/agent/utils/firewall/lifecycle"
|
|
)
|
|
|
|
func selectedDockerFirewallBackend(fallback string) string {
|
|
selected := configuredDockerFirewallBackend()
|
|
if selected == constant.FirewallProviderIptables || selected == constant.FirewallProviderNftables {
|
|
return selected
|
|
}
|
|
fallback = strings.ToLower(strings.TrimSpace(fallback))
|
|
if fallback == constant.FirewallProviderNftables {
|
|
return fallback
|
|
}
|
|
return constant.FirewallProviderIptables
|
|
}
|
|
|
|
func configuredDockerFirewallBackend() string {
|
|
if global.DB == nil {
|
|
return ""
|
|
}
|
|
selected, _ := settingRepo.GetValueByKey(constant.FirewallDockerBackendKey)
|
|
selected = strings.ToLower(strings.TrimSpace(selected))
|
|
if selected == constant.FirewallProviderIptables || selected == constant.FirewallProviderNftables {
|
|
return selected
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func selectedSystemFirewallClient() (lifecycle.Client, error) {
|
|
if provider, _ := settingRepo.GetValueByKey(constant.FirewallSystemBackendKey); strings.TrimSpace(provider) != "" {
|
|
return lifecycle.NewClientFor(strings.TrimSpace(provider))
|
|
}
|
|
client, err := lifecycle.NewClient()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_ = settingRepo.UpdateOrCreate(constant.FirewallSystemBackendKey, client.Name())
|
|
return client, nil
|
|
}
|
|
|
|
func NewSelectedSystemFirewallClient() (lifecycle.Client, error) {
|
|
return selectedSystemFirewallClient()
|
|
}
|
|
|
|
func selectedSystemFirewallProvider() (string, error) {
|
|
client, err := selectedSystemFirewallClient()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return client.Name(), nil
|
|
}
|