mirror of https://github.com/1Panel-dev/1Panel
appstorecrontabdatabasedockerdocker-composedocker-containerdocker-imagedocker-uifilemanagerlamplnmppanel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
989 B
39 lines
989 B
package firewall |
|
|
|
import ( |
|
"os" |
|
|
|
"github.com/1Panel-dev/1Panel/backend/buserr" |
|
"github.com/1Panel-dev/1Panel/backend/constant" |
|
"github.com/1Panel-dev/1Panel/backend/utils/firewall/client" |
|
) |
|
|
|
type FirewallClient interface { |
|
Name() string // ufw firewalld |
|
Start() error |
|
Stop() error |
|
Restart() error |
|
Reload() error |
|
Status() (string, error) // running not running |
|
Version() (string, error) |
|
|
|
ListPort() ([]client.FireInfo, error) |
|
ListForward() ([]client.FireInfo, error) |
|
ListAddress() ([]client.FireInfo, error) |
|
|
|
Port(port client.FireInfo, operation string) error |
|
RichRules(rule client.FireInfo, operation string) error |
|
PortForward(info client.Forward, operation string) error |
|
|
|
EnableForward() error |
|
} |
|
|
|
func NewFirewallClient() (FirewallClient, error) { |
|
if _, err := os.Stat("/usr/sbin/firewalld"); err == nil { |
|
return client.NewFirewalld() |
|
} |
|
if _, err := os.Stat("/usr/sbin/ufw"); err == nil { |
|
return client.NewUfw() |
|
} |
|
return nil, buserr.New(constant.ErrFirewall) |
|
}
|
|
|