Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions agent/app/service/firewall.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import (
"github.com/1Panel-dev/1Panel/agent/utils/firewall/iptables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/lifecycle"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/nftables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/ping"
firewallsync "github.com/1Panel-dev/1Panel/agent/utils/firewall/sync"
"github.com/google/uuid"
"gorm.io/gorm"
Expand Down Expand Up @@ -144,7 +143,7 @@ func (s *FirewallService) LoadBaseInfo(chainGroup string) (dto.FirewallSubsystem
return status, err
}
status.Name, status.Backend = runtimeStatus.Name, runtimeStatus.Name
status.Version, status.PingStatus = runtimeStatus.Version, ping.LoadStatus()
status.Version, status.PingStatus = runtimeStatus.Version, firewall.LoadPingStatus()
status.IsActive = runtimeStatus.IsActive
if supportsManagedFilterChains(runtimeStatus.Name) {
initialized, bound, err := loadFirewallInitStatus(runtimeStatus.Name, chainGroup)
Expand Down Expand Up @@ -341,12 +340,12 @@ func (s *FirewallService) runFirewallLifecycleTask(t *task.Task, client lifecycl
func (s *FirewallService) OperateFirewall(request dto.FirewallLifecycleOperation) error {
switch request.Operation {
case "disableBanPing":
if err := ping.UpdateStatus("0"); err != nil {
if err := firewall.UpdatePingStatus("0"); err != nil {
return err
}
return settingRepo.Update(constant.FirewallPingStatusKey, constant.StatusDisable)
case "enableBanPing":
if err := ping.UpdateStatus("1"); err != nil {
if err := firewall.UpdatePingStatus("1"); err != nil {
return err
}
return settingRepo.Update(constant.FirewallPingStatusKey, constant.StatusEnable)
Expand Down
3 changes: 1 addition & 2 deletions agent/app/service/firewall_setting.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"github.com/1Panel-dev/1Panel/agent/utils/firewall/iptables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/lifecycle"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/nftables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/ping"
"github.com/google/uuid"
"gorm.io/gorm"
)
Expand Down Expand Up @@ -874,7 +873,7 @@ func (service *FirewallService) syncSystemAccessPortTransition(ctx context.Conte
}

func (s *FirewallSettingService) Load(ctx context.Context) (dto.FirewallSettings, error) {
result := dto.FirewallSettings{PingStatus: ping.LoadStatus()}
result := dto.FirewallSettings{PingStatus: firewall.LoadPingStatus()}

installed := make(map[string]bool)
for _, name := range lifecycle.InstalledProviders() {
Expand Down
7 changes: 3 additions & 4 deletions agent/app/service/forward.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ import (
"github.com/1Panel-dev/1Panel/agent/constant"
"github.com/1Panel-dev/1Panel/agent/global"
"github.com/1Panel-dev/1Panel/agent/i18n"
"github.com/1Panel-dev/1Panel/agent/utils/firewall"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/forwarding"
forwardingproviders "github.com/1Panel-dev/1Panel/agent/utils/firewall/forwarding/providers"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/lifecycle"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/ping"
)

type IForwardingService interface {
Expand Down Expand Up @@ -91,7 +90,7 @@ func (s *ForwardingService) LoadBaseInfo() (dto.FirewallSubsystemStatus, error)
baseInfo.IsExist = true
baseInfo.Name, baseInfo.Backend = forwardingDisplayName(status.Name), status.Name
baseInfo.Version = status.Version
baseInfo.PingStatus = ping.LoadStatus()
baseInfo.PingStatus = firewall.LoadPingStatus()
baseInfo.IsInit, baseInfo.IsBind = status.IsInit, status.IsBind
baseInfo.IPv4 = loadForwardingFamilyInfo(manager, status.Name, constant.FirewallFamilyIPv4)
baseInfo.IPv6 = loadForwardingFamilyInfo(manager, status.Name, constant.FirewallFamilyIPv6)
Expand Down Expand Up @@ -574,7 +573,7 @@ func newForwardingManagerFor(backend string) (*forwarding.Manager, error) {
errForwardingBackendUnavailable, backend, err,
)
}
adapter, err := forwardingproviders.New(client.Name())
adapter, err := forwarding.New(client.Name())
if err != nil {
return nil, err
}
Expand Down
5 changes: 2 additions & 3 deletions agent/init/firewall/firewall.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"github.com/1Panel-dev/1Panel/agent/utils/firewall"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/iptables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/nftables_helper"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/ping"
)

func Init() {
Expand Down Expand Up @@ -154,7 +153,7 @@ func needInit() bool {

func InitPingStatus() {
global.LOG.Info("initializing ban ping status from settings...")
status := ping.LoadStatus()
status := firewall.LoadPingStatus()
statusInDB, _ := repo.NewISettingRepo().GetValueByKey("BanPing")
if statusInDB == status {
return
Expand All @@ -164,7 +163,7 @@ func InitPingStatus() {
if statusInDB == constant.StatusDisable {
enable = "0"
}
if err := ping.UpdateStatus(enable); err != nil {
if err := firewall.UpdatePingStatus(enable); err != nil {
global.LOG.Errorf("initialize ping status failed: %v", err)
}
}
Expand Down
4 changes: 2 additions & 2 deletions agent/init/migration/migrations/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"github.com/1Panel-dev/1Panel/agent/utils/common"
"github.com/1Panel-dev/1Panel/agent/utils/copier"
"github.com/1Panel-dev/1Panel/agent/utils/encrypt"
"github.com/1Panel-dev/1Panel/agent/utils/firewall/ping"
"github.com/1Panel-dev/1Panel/agent/utils/firewall"
"github.com/1Panel-dev/1Panel/agent/utils/ssh"
"github.com/1Panel-dev/1Panel/agent/utils/xpack"

Expand Down Expand Up @@ -1131,7 +1131,7 @@ var AddisIPtoWebsiteSSL = &gormigrate.Migration{
var InitPingStatus = &gormigrate.Migration{
ID: "20251201-init-ping-status",
Migrate: func(tx *gorm.DB) error {
status := ping.LoadStatus()
status := firewall.LoadPingStatus()
if err := tx.Create(&model.Setting{Key: "BanPing", Value: status}).Error; err != nil {
return err
}
Expand Down
42 changes: 0 additions & 42 deletions agent/utils/firewall/docker_guard/forward_policy.go

This file was deleted.

27 changes: 0 additions & 27 deletions agent/utils/firewall/docker_guard/ip_forward.go

This file was deleted.

35 changes: 35 additions & 0 deletions agent/utils/firewall/docker_guard/nftables.go
Original file line number Diff line number Diff line change
Expand Up @@ -496,3 +496,38 @@ func nftHasFirstUniqueJump(output string) bool {
}
return false
}

var ErrDockerForwardPolicyDrop = errors.New("iptables FORWARD default policy is DROP")

func (m *NftablesManager) checkForwardPolicy() error {
for _, family := range []struct{ command, name string }{
{"iptables", FamilyIPv4},
{"ip6tables", FamilyIPv6},
} {
if !m.runner.Exists(family.command) {
continue
}
output, err := m.runner.Run(family.command, "-t", "filter", "-w", "-S", "FORWARD")
if err != nil {
return &FamilyError{Family: family.name, Err: fmt.Errorf("inspect iptables FORWARD policy: %w", err)}
}
found := false
for _, line := range strings.Split(output, "\n") {
fields := strings.Fields(line)
if len(fields) != 3 || fields[0] != "-P" || fields[1] != "FORWARD" {
continue
}
found = true
if fields[2] == "DROP" {
return &FamilyError{Family: family.name, Err: ErrDockerForwardPolicyDrop}
}
if fields[2] != "ACCEPT" {
return &FamilyError{Family: family.name, Err: fmt.Errorf("unexpected iptables FORWARD policy: %s", fields[2])}
}
}
if !found {
return &FamilyError{Family: family.name, Err: errors.New("iptables FORWARD default policy was not found")}
}
}
return nil
}
Loading
Loading