Skip to content

Upload and Share

CyberGems edited this page Sep 13, 2026 · 2 revisions

Upload & Share

CyberSnap uploads captures to 4 provider families (FTP, SFTP, S3-compatible, and Webhook share one Custom destination slot; ImgBB, Imgur, and CyberSnap Share have their own). User secrets are DPAPI-encrypted inside settings.json (see Configuration Files).


Supported Providers

Provider Protocol Best For
FTP FTP/FTPS (custom slot) Self-hosted servers, web hosting
SFTP SSH File Transfer (custom slot) Secure server uploads
S3-compatible S3 API (custom slot) AWS S3, MinIO, Wasabi, Backblaze B2
ImgBB REST API Free image hosting (works out of the box with the shared key)
Imgur REST API Community sharing — only listed once you supply your own Client-ID
Webhook HTTP POST (custom slot) Custom integrations, automation
CyberSnap Share Proprietary Built-in temporary links (default provider, 48h TTL)

Only one custom destination exists at a time; pick its protocol and fill that protocol's fields.


Configuring Providers

All provider tabs live under Settings → Uploads and carry a Test upload button.

FTP (Custom → FTP)

Setting Default
Server host / port Host required; port blank = protocol default (21)
Username / password Password DPAPI-encrypted
Remote directory Target folder (auto-created)
Public URL base Prefix for the resulting share link
Unique suffix on collision Off (overwrite on by default)
Use TLS On
Passive mode On (firewall/NAT friendly)
Allow insecure certificate Off

SFTP (Custom → SFTP, the default protocol)

Same host / port (22) / username / password / remote directory / public URL base / collision suffix as FTP, plus:

Setting Description
Private key file Optional key-file path (passphrase below)
Private key passphrase DPAPI-encrypted
Trusted host key (SHA256) Pinned on first connect; Reset button to re-pin

S3-Compatible (Custom → S3)

Setting Description
Endpoint / Region / Bucket Target location (any S3-compatible host)
Access key / Secret key DPAPI-encrypted (a session token field also exists in settings)
Key prefix Optional folder prefix
Force path style For MinIO-style hosts
Make public Set public ACL (retried without ACL when the bucket forbids it)
Public URL base Shared custom-destination field for the resulting link

There is no CDN/custom-domain field; the public URL base above is what shapes the link.

ImgBB

Setting Description
Use my own API key Off = shared out-of-the-box key (subject to shared quotas)
API key Your ImgBB key, DPAPI-encrypted

There is no expiration option; uploads persist per ImgBB's own policy.

Imgur

Setting Description
Use my own Client-ID Off = Imgur hidden from Share options entirely
Client-ID Your Imgur application ID, DPAPI-encrypted

There is no album option.

Webhook (Custom → Webhook)

Setting Description
Endpoint URL Full https:// endpoint (POST only)
Bearer token Optional; DPAPI-encrypted
Body mode multipart/form-data with image field, or application/json with base64 payload
File field name Form field name (default image)

There is no PUT choice, no custom headers, and no body template; just the two body modes above.

CyberSnap Share

Setting Description
Share server URL Empty = official cybersnap.cybergems.org host
Use my own Share API key Off = shared out-of-the-box key
API key Optional personal key, DPAPI-encrypted

Upload Settings (General Sub-Tab)

Setting Default
Default provider CyberSnap Share
Image format PNG or JPEG for upload
JPEG quality 90
Open link after upload Off

There are no resize-before-upload, timeout, or retry-count settings. Hard limits still apply: 10 MB max payload ("Image is too large, try JPEG"), 3 s minimum between uploads, 50 uploads/day on shared keys, 120 s HTTP timeout.

Post-Upload Behavior

  • Share URL copied to clipboard automatically
  • Toast notification with the URL (and an Open in browser option when the toggle above is on)
  • URL recorded on the history entry
  • First upload to a third-party host shows a confirmation dialog (suppressible via Don't show again; reset in Settings → Editor → Dialogs)

Credential Security

  • Your secrets live DPAPI-encrypted (CurrentUser scope + app entropy) inside settings.json — they only decrypt for the same Windows user on the same machine, and exports redact them.
  • Built-in shared keys (ImgBB / Share fallbacks) are AES-GCM ciphertexts embedded in the app.
  • Logs redact secrets automatically.

Sharing Workflow

  1. Capture or open an image in the editor
  2. Click Share (or use auto-share) and pick a provider (or the default)
  3. Third-party hosts confirm once (see above)
  4. Upload progress shows in the notification area
  5. On success: URL on clipboard, toast with options, URL on the history entry

CyberSnap Share Server

For self-hosting, CyberSnap includes a PHP-based share server (services/cybersnap-share):

  • TTL: 48 hours (ttl_hours, 24 or 48)
  • Rate limit: 80/day example config
  • API key authentication
  • Automatic cleanup via hourly cron (cleanup.php)

See the CyberSnap Share README for deployment instructions.

Clone this wiki locally