From 9b02e88e3cea19eaefcc5bd1927aaa9ede3452de Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Mon, 7 Aug 2023 22:46:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=98=B2=E7=81=AB=E5=A2=99=E4=B8=8E?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E5=AE=88=E6=8A=A4=E5=8A=A0=E8=BD=BD=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E6=95=B4=20(#1864)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/utils/firewall/client/firewalld.go | 64 +++-- frontend/src/views/host/firewall/ip/index.vue | 198 +++++++------- .../src/views/host/firewall/port/index.vue | 252 +++++++++--------- .../host/tool/supervisor/status/index.vue | 4 +- 4 files changed, 267 insertions(+), 251 deletions(-) diff --git a/backend/utils/firewall/client/firewalld.go b/backend/utils/firewall/client/firewalld.go index d44e2a1cd..4b52ec50e 100644 --- a/backend/utils/firewall/client/firewalld.go +++ b/backend/utils/firewall/client/firewalld.go @@ -3,6 +3,7 @@ package client import ( "fmt" "strings" + "sync" "github.com/1Panel-dev/1Panel/backend/buserr" "github.com/1Panel-dev/1Panel/backend/constant" @@ -60,39 +61,48 @@ func (f *Firewall) Reload() error { } func (f *Firewall) ListPort() ([]FireInfo, error) { - stdout, err := cmd.Exec("firewall-cmd --zone=public --list-ports") - if err != nil { - return nil, err - } - ports := strings.Split(strings.ReplaceAll(stdout, "\n", ""), " ") + var wg sync.WaitGroup var datas []FireInfo - for _, port := range ports { - if len(port) == 0 { - continue + wg.Add(2) + go func() { + defer wg.Done() + stdout, err := cmd.Exec("firewall-cmd --zone=public --list-ports") + if err != nil { + return } - var itemPort FireInfo - if strings.Contains(port, "/") { - itemPort.Port = strings.Split(port, "/")[0] - itemPort.Protocol = strings.Split(port, "/")[1] + ports := strings.Split(strings.ReplaceAll(stdout, "\n", ""), " ") + for _, port := range ports { + if len(port) == 0 { + continue + } + var itemPort FireInfo + if strings.Contains(port, "/") { + itemPort.Port = strings.Split(port, "/")[0] + itemPort.Protocol = strings.Split(port, "/")[1] + } + itemPort.Strategy = "accept" + datas = append(datas, itemPort) } - itemPort.Strategy = "accept" - datas = append(datas, itemPort) - } + }() - stdout1, err := cmd.Exec("firewall-cmd --zone=public --list-rich-rules") - if err != nil { - return nil, err - } - rules := strings.Split(stdout1, "\n") - for _, rule := range rules { - if len(rule) == 0 { - continue + go func() { + defer wg.Done() + stdout1, err := cmd.Exec("firewall-cmd --zone=public --list-rich-rules") + if err != nil { + return } - itemRule := f.loadInfo(rule) - if len(itemRule.Port) != 0 && itemRule.Family == "ipv4" { - datas = append(datas, itemRule) + rules := strings.Split(stdout1, "\n") + for _, rule := range rules { + if len(rule) == 0 { + continue + } + itemRule := f.loadInfo(rule) + if len(itemRule.Port) != 0 && itemRule.Family == "ipv4" { + datas = append(datas, itemRule) + } } - } + }() + wg.Wait() return datas, nil } diff --git a/frontend/src/views/host/firewall/ip/index.vue b/frontend/src/views/host/firewall/ip/index.vue index a7ae8bfea..b33f5db47 100644 --- a/frontend/src/views/host/firewall/ip/index.vue +++ b/frontend/src/views/host/firewall/ip/index.vue @@ -1,111 +1,113 @@ diff --git a/frontend/src/views/host/firewall/port/index.vue b/frontend/src/views/host/firewall/port/index.vue index da1199f27..743f7ab05 100644 --- a/frontend/src/views/host/firewall/port/index.vue +++ b/frontend/src/views/host/firewall/port/index.vue @@ -1,141 +1,143 @@