From 87abee4570d6994d92c11f4f4700717c985967a3 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 3 May 2024 15:51:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=AE=89=E8=A3=85nftables?= =?UTF-8?q?=E6=97=B6=E5=B0=9D=E8=AF=95=E4=BD=BF=E7=94=A8apt-get?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/firewalls/nftables/installer.go | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/internal/firewalls/nftables/installer.go b/internal/firewalls/nftables/installer.go index 0f1e6a9..f37a600 100644 --- a/internal/firewalls/nftables/installer.go +++ b/internal/firewalls/nftables/installer.go @@ -90,18 +90,26 @@ func (this *Installer) Install() error { } var cmd *executils.Cmd + var aptCmd *executils.Cmd // check dnf - dnfExe, err := executils.LookPath("dnf") - if err == nil { - cmd = executils.NewCmd(dnfExe, "-y", "install", "nftables") + { + dnfExe, err := executils.LookPath("dnf") + if err == nil { + cmd = executils.NewCmd(dnfExe, "-y", "install", "nftables") + } } // check apt if cmd == nil { - aptExe, err := executils.LookPath("apt") + aptGetExe, err := executils.LookPath("apt-get") if err == nil { - cmd = executils.NewCmd(aptExe, "install", "nftables") + cmd = executils.NewCmd(aptGetExe, "install", "nftables") + } + + aptExe, aptErr := executils.LookPath("apt") + if aptErr == nil { + aptCmd = executils.NewCmd(aptExe, "install", "nftables") } } @@ -119,9 +127,19 @@ func (this *Installer) Install() error { cmd.WithTimeout(10 * time.Minute) cmd.WithStderr() - err = cmd.Run() + err := cmd.Run() if err != nil { - return fmt.Errorf("%w: %s", err, cmd.Stderr()) + // try 'apt-get' instead of 'apt' + if aptCmd != nil { + cmd = aptCmd + cmd.WithTimeout(10 * time.Minute) + cmd.WithStderr() + err = cmd.Run() + } + + if err != nil { + return fmt.Errorf("%w: %s", err, cmd.Stderr()) + } } remotelogs.Println("NFTABLES", "installed nftables with command '"+cmd.String()+"' successfully")