Skip to content

[Bug] Fail2ban only checks the systemd status, causing the blacklist and whitelist to be unavailable when the process is actually running #13678

Description

@zhudaguaneren

Contact Information

GitHub: zhudaguaneren

1Panel Version

v2.2.5

Problem Description

工具箱 Fail2ban 页面用 systemd fail2ban.service 是否 active 作为 isActive

前端 frontend/src/views/toolbox/fail2ban/index.vue!form.isActive 时禁用白名单/黑名单按钮。

当 fail2ban-server 由其他进程管理器拉起(例如 1Panel 进程守护 Supervisor),或 systemd 显示 inactive 但 fail2ban-client ping 仍返回 pong 时,页面会显示「已停止」,黑白名单无法设置。实际 jail 仍在工作。

相关代码:

  • agent/utils/toolbox/fail2ban.go Status() 只调用 controller.CheckActive("fail2ban.service")
  • agent/app/service/fail2ban.go LoadBaseInfo() 把该值传给前端

Steps to Reproduce

  1. 安装并启用 Fail2ban
  2. 停止/禁用 systemd 的 fail2ban.service(不结束 fail2ban-server,或改由其他进程管理器启动)
  3. 确认 fail2ban-client ping 返回 Server replied: pong
  4. 打开 1Panel -> 工具箱 -> Fail2ban
  5. 页面显示已停止,白名单/黑名单按钮灰色不可点

The expected correct result

只要 fail2ban-client ping 成功,就应把 isActive 视为 true,允许查看/设置黑白名单。

不建议把 start/stop 改成接管 Supervisor;启停仍走 systemd 即可。

Related log output

fail2ban-client ping
Server replied: pong

systemctl is-active fail2ban
inactive   # 或 active(exited),取决于是否有兼容层

# 1Panel Fail2ban 页:显示已停止,白名单/黑名单按钮 disabled

Additional Information

建议小补丁(仅改 Status 探测,不改启停实现):

agent/utils/toolbox/fail2ban.goStatus() 中,当 systemd 不是 active 时,再用 fail2ban-client ping 判断进程是否存活。若返回 pong,则 isActive=true

我可以随后提交对应 PR。

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions