KamoCRM

DocsService refuses locked documents everywhere and checks editor saves

FeatureDocsService
Shipped
November 8, 2026 at 1:00 AM UTC
Author
Kamo
Commit
ea1cb82

- WOPI PutFile writes raw MinIO, so the save goes through AntivirusUploadGuard first: a harmful save writes nothing, keeps the document's last good content and answers the editor 422 ANTIVIRUS_BLOCKED (503 ANTIVIRUS_UNAVAILABLE so it retries); a clean save is marked stored for later re-checks. GetFile refuses locked/checking content with 423. - Imaging /download, /stream, the converted PDF and page thumbnails call the read gate before any byte: 423 ANTIVIRUS_BLOCKED / ANTIVIRUS_CHECKING. CAUTION content passes, so its PDF rendition is the 'safe copy'. Bulk export drops locked documents like the other exclusions. - Version download/pdf/thumbnail judge the version's own content. - Careers resumes are checked as CAREERS with the applicant and application; the careers controllers answer Antivirus refusals in the platform shape instead of a 500. - Legal: uploads map refusals to their own 422/503, a held upload asks to retry (its PDF rendition would be made from unchecked bytes), executed packages and request samples are read-gated. Binder photo albums leave locked photos out. - Document list/metadata rows carry scanStatus / scanFamily / scanOutcome. - ConfigMap kamo.antivirus.* (enabled: false until KamoAntivirus is Ready); ANTIVIRUS_INTERNAL_AUTH_SECRET from mlos-internal-auth.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing