Extensions/ComfyUI-Queue-IP-Guard
ComfyUI Extension

ComfyUI-Queue-IP-Guard

Managing permissions for canceling tasks in the queue when multiple users share the same ComfyUI instance

By yoki-ai·Created a day ago·Updated a day ago· 0
yoki-ai/ComfyUI-Queue-IP-Guard
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme

ComfyUI-Queue-IP-Guard

只允许白名单 IP 取消正在执行的任务,或删除 / 清空任务队列。查询队列不受影响。

安装

将本目录放在 custom_nodes/ComfyUI-Queue-IP-Guard/,重启一次 ComfyUI。中间件在启动时挂载;之后修改 config.json 会在下一次受保护请求时生效,无需再重启。

配置

config.json:

| 字段 | 默认值 | 含义 | | --- | --- | --- | | allowed_ips | ["127.0.0.1", "::1"] | 允许执行受保护操作的客户端 IP,字符串精确匹配 | | block_interrupt | true | 拦截取消正在执行的任务 | | block_queue_delete | true | 拦截删除或清空等待队列 |

对应请求:

  • block_interrupt:POST /interrupt、POST /api/interrupt,以及会打断正在执行任务的 POST /api/jobs/{job_id}/cancel、POST /api/jobs/cancel
  • block_queue_delete:请求体含 clear 或 delete 的 POST /queue、POST /api/queue,以及会删掉等待任务的上述两个 jobs 接口

POST /api/interrupt 与 POST /interrupt 使用同一套规则,POST /api/queue 与 POST /queue 使用同一套规则。这是给会自动加上 /api 前缀的前端准备的,白名单、开关和拒绝内容不变。

GET /queue、POST /prompt,以及不含 clear / delete 的 POST /queue 和 POST /api/queue 会原样放行。已经结束、不在队列里的任务,取消请求也会放行。

客户端 IP

优先取请求头 X-Forwarded-For 的第一段,否则使用连接对端 request.remote。

经 Nginx 等反代访问时,请由代理覆盖该头,不要沿用客户端自己传来的值,否则调用方可以伪造白名单 IP:

proxy_set_header X-Forwarded-For $remote_addr;

拒绝时

终端会打印带来源 IP 的警告。前端取消或清理队列被拒绝时,只弹出「您不能取消任务」,不会再弹出「已确认:待处理任务已删除」。同时返回 HTTP 403:

{"error": "您不能取消任务", "code": "queue_ip_guard"}

每次拦截成功会追加一行到插件目录下的 blocked.log,包含时间、判定 IP、连接对端、X-Forwarded-For、请求方法和路径。该文件由运行时生成,已写入 .gitignore。