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。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions