扫毒
上传先交给扫毒服务,扫完才能取件。默认关
上传的文件可以在发出去之前先给外部的扫毒服务检查。默认关,设了 scan.url 就会开。
clamd://clamav:3310
https://scanner.example.com/scanclamd:// 地址直接跟 ClamAV 讲话。http(s):// 地址是任何你挡在扫毒软件前面的服务;它如果需要授权请求头,那个请求头跟其他凭证一样是封起来存的。
访客会遇到什么
扫完之前,分享打得开但取不走,而且试了也不花任何东西。命令行客户端会自己等,最多五分钟。
一个文件被判定有毒,整份分享就会被停用,跟管理员停用一模一样。威胁的名字会留着,显示在后台的分享列表里。
上传的人在上传完成的画面和自己的分享列表上,都看得到扫描的进度和结果。因为有毒被停用的分享会直接写明,不会看起来像过期。
扫毒服务挂掉的时候
扫毒失败时是放行的
连不上、超时或回错误的话,等着的文件会被放行,而不是卡住。它们每三十秒、或有新上传进来时会再扫一次,之后才被判定有毒的,那时就会被停用。这段期间被取走的文件,是没扫过就被取走的。
后台会显示扫描服务上一次有没有响应、失败的原因,以及还在等和没扫就放行的文件数。闲着的扫描服务每 15 分钟会收到一个空文件,失败中的每 5 分钟一次,所以没人上传时状态也是最新的。
把扫毒关掉,还在等的全部会被放行。
不会被扫的
- 端对端加密的分享。 扫毒软件只看得到封起来的字节。
- 比扫毒服务收得下还大的文件。 ClamAV 有它自己的大小上限,超过的会被放行并标成太大,不会被拒绝。
- 链接分享,里面只有一个网址,没有文件。
自己写 HTTP 适配
不是 ClamAV 的扫毒软件,HTTP 服务会收到一个 POST,body 就是文件内容(流式),要回:
| 响应 | 意思 |
|---|---|
200 {"clean": true} | 干净 |
200 {"clean": false, "threat": "…"} | 有毒 |
413 | 太大扫不了 |
| 其他任何响应,或没回 | 扫毒服务挂了 |
一次扫四个文件。