Skip to main content

File synchronization service using Confluence API

Project description

Sber-tunnel

File synchronization service using Confluence API as a storage backend.

Features

  • Synchronize directories between multiple devices using Confluence
  • Automatic file change detection and syncing
  • Support for large files (>100MB) with automatic chunking
  • Web UI for managing synchronized directories
  • CLI interface for easy operation
  • Conflict resolution using last-write-wins strategy

Installation

Using pip

pip install -e .

From requirements

pip install -r requirements.txt

Usage

Initialize configuration

sber-tunnel init

This will prompt you for:

  • Confluence base URL
  • Username
  • Password (or API token)
  • Page ID for storing files
  • Optional: p12 certificate for secure connections

Add directory to sync

sber-tunnel add /path/to/directory

Start sync service

sber-tunnel start

This will start:

Manual sync

sber-tunnel sync

Check status

sber-tunnel status

Stop service

sber-tunnel stop

Architecture

Components

  1. CLI - Command-line interface built with Click
  2. FastAPI Server - Web API and UI
  3. Confluence Service - Handles file upload/download and chunking
  4. Sync Service - Manages synchronization logic
  5. File Watcher - Monitors directory changes
  6. SQLite Database - Local state management

Data Model

manifest.json stored in Confluence contains:

  • List of files with path, size, mtime, sha256, version
  • Chunk information for large files
  • Deletion markers

Local SQLite database contains:

  • files - File metadata and hashes
  • dirs - Tracked directories
  • ops - Pending operations queue
  • config - Configuration values

File Handling

  • Files ≤100MB: Uploaded as single chunk
  • Files >100MB: Split into 100MB chunks
  • Each chunk verified with SHA256 checksum
  • Final file verified after reassembly

Synchronization Strategy

  1. Download manifest from Confluence
  2. Scan local directory
  3. Compare local vs remote state
  4. Upload changed/new files
  5. Download remote changes
  6. Use last-write-wins for conflicts
  7. Upload updated manifest

Configuration

Configuration is stored in .sber-tunnel/config.json in the directory where you run sber-tunnel

Database is stored in .sber-tunnel/sber-tunnel.db in the same directory

Note: The .sber-tunnel/ directory is created in your current working directory, not in your home directory. This allows you to have different configurations for different projects.

Security

  • Credentials stored locally (consider using environment variables in production)
  • Full support for p12 certificates - Automatically extracts and uses PEM format
  • SHA256 checksums for file integrity
  • Hidden and temporary files excluded from sync
  • Temporary certificate files with restrictive permissions (600)
  • Automatic cleanup of temporary files

Certificate Support

Sber-tunnel fully supports p12 (PKCS#12) certificates for secure authentication:

sber-tunnel init
# When prompted, provide:
# - Path to p12 certificate
# - Certificate password

The service automatically:

  • Extracts certificate and private key from p12
  • Creates temporary PEM files for use with Confluence API
  • Manages file permissions securely
  • Cleans up temporary files on shutdown

See docs/CERTIFICATES.md for detailed certificate documentation.

Limitations

  • Maximum chunk size: 100MB
  • Uses last-write-wins for conflict resolution
  • No support for symbolic links
  • Hidden files and directories are excluded

Development

Project Structure

sber-tunnel/
├── sber_tunnel/
│   ├── api/          # FastAPI server
│   ├── cli/          # CLI commands
│   ├── core/         # Configuration
│   ├── db/           # Database schema
│   ├── models/       # Data models
│   └── services/     # Business logic
├── tests/            # Unit tests
├── docs/             # Documentation
├── requirements.txt
└── setup.py

Running tests

pytest tests/

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sber_tunnel-1.0.2.tar.gz (23.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sber_tunnel-1.0.2-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

Details for the file sber_tunnel-1.0.2.tar.gz.

File metadata

  • Download URL: sber_tunnel-1.0.2.tar.gz
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for sber_tunnel-1.0.2.tar.gz
Algorithm Hash digest
SHA256 e0b40b14f64fe39850deb6b9c329709efb883f6b9787817c868e0f837000f913
MD5 e63081df3b7c50400080c630890dcd34
BLAKE2b-256 cafaba2486784e5c71cbacd253b1232994b4552996f955326162610791599357

See more details on using hashes here.

File details

Details for the file sber_tunnel-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: sber_tunnel-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 26.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for sber_tunnel-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 47c0292699373c31164f45edf726129444187176c10dba2be0148281603b9990
MD5 47d1feb6932cea1d602a8805d43945ea
BLAKE2b-256 4c1a5de401ded00ea30f4bd8b01be3be55820578b09a7380b32778254cde98bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page