Repository navigation
Upload and 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).
| 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.
All provider tabs live under Settings → Uploads and carry a Test upload button.
| 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 |
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 |
| 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.
| 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.
| 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.
| 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.
| 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 |
| 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.
- 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)
-
Your secrets live DPAPI-encrypted (
CurrentUserscope + app entropy) insidesettings.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.
- Capture or open an image in the editor
- Click Share (or use auto-share) and pick a provider (or the default)
- Third-party hosts confirm once (see above)
- Upload progress shows in the notification area
- On success: URL on clipboard, toast with options, URL on the history entry
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.