Description

Context

SimpleX !save/!archive extracts and dedups URLs but does not upload files to MinIO, mirror videos to PeerTube, or virus-scan attachments. MinIO/PeerTube/Shlink are already in compose.yml, just unwired.

Acceptance criteria

  • [ ] !save <url> of a file uploads to MinIO and returns a presigned link (dual-client: internal endpoint for ops, public endpoint for signed URLs).
  • [ ] !save <url> of a video archives to PeerTube when isPeertubeConfigured().
  • [ ] Received attachments are ClamAV-scanned before any upload; infected files are rejected with a clear message.
  • [ ] Every integration gated by its is*Configured() guard; clean featureDisabled() fallback when off.
  • [ ] Long URLs auto-shorten via Shlink when isShortlinkConfigured() (fallback to long URL).

Technical hints

  • Signal reference: !save/!archive + handleVirusScan in signal-messenger/src/src/bot/command-handler.ts; auto-scan/archive in signal-bot-v2.ts.
  • SimpleX target: simplex/src/src/bot/commands/utility/save.command.ts + src/src/utils/attachment-utils.ts.
  • Reuse the MinIO/PeerTube/Shlink/ClamAV clients in packages/shared-utils/src/bot-utils/.
  • Dual-client MinIO trap: generate presigned URLs against the public endpoint or signatures mismatch.

--- Submit a merge request that says Closes #<this issue iid> in the description. On merge to main, the GitLab webhook auto-awards feature_bounty_<tier> + the standard merge_pr (40 pts) to your scoreboard account. Your commit email must match your Authentik email. Backlog context: docs/simplex-parity-bounties.md.

Relevant files

No relevant files linked yet.

Hints

No hints yet.

Activity

No points have been awarded for this bounty yet.

Comments

No comments yet. Be the first to weigh in.

↑ Top