diff --git a/web/job/check_client_ip_job.go b/web/job/check_client_ip_job.go index 74ef3e09..b15473c5 100644 --- a/web/job/check_client_ip_job.go +++ b/web/job/check_client_ip_job.go @@ -4,6 +4,7 @@ import ( "encoding/json" "log" "os" + "os/exec" "regexp" "sort" "strings" @@ -41,6 +42,7 @@ func (j *CheckClientIpJob) Run() { // check for limit ip if j.hasLimitIp() { + j.checkFail2BanInstalled() j.processLogFile() } } @@ -74,6 +76,16 @@ func (j *CheckClientIpJob) hasLimitIp() bool { return false } +func (j *CheckClientIpJob) checkFail2BanInstalled() { + cmd := "fail2ban-client" + args := []string{"-h"} + + err := exec.Command(cmd, args...).Run() + if err != nil { + logger.Warning("fail2ban is not installed. IP limiting may not work properly.") + } +} + func (j *CheckClientIpJob) processLogFile() { accessLogPath := xray.GetAccessLogPath() if accessLogPath == "" {