Queer MD passionate about IT

Share files via a bridge server.

Davte 63d65cf786 Ignore data folder symlink 3 months ago
filebridging 063cc375df Always print progress bar at 100% 3 months ago
.gitignore 63d65cf786 Ignore data folder symlink 3 months ago
LICENSE 5b17f024b7 Initial commit 4 months ago
README.md dc596cfac6 Typo 3 months ago
requirements.txt c4b4e14dc0 First working version 3 months ago
setup.py c4b4e14dc0 First working version 3 months ago

README.md

filebridging

Share files via a bridge server using TCP over SSL and end-to-end encryption.

Requirements

Python3.8+ is needed for this package. You may find it here.

OpenSSL 1.1.1+ is required as well to handle SSL connection and end-to-end cryptography. On Windows, installing git for Windows will install OpenSSL as well.

Usage

If you need a virtual environment, create it.

python3.8 -m venv env;
alias pip="env/bin/pip";
alias python="env/bin/python";

Install filebridging and read the help.

pip install filebridging
python -m filebridging.server --help
python -m filebridging.client --help

Examples

  • Client-server example

    # 3 distinct tabs
    python -m filebridging.server --host localhost --port 5000 --certificate ~/.ssh/server.crt --key ~/.ssh/server.key
    python -m filebridging.client s --host localhost --port 5000 --certificate ~/.ssh/server.crt --token 12345678 --password supersecretpasswordhere --path ~/file_to_send 
    python -m filebridging.client r --host localhost --port 5000 --certificate ~/.ssh/server.crt --token 12345678 --password supersecretpasswordhere --path ~/Downloads 
    
  • Client-client example

    # 2 distinct tabs
    python -m filebridging.client s --host localhost --port 5000 --certificate ~/.ssh/server.crt --key ~/.ssh/private.key --token 12345678 --password supersecretpasswordhere --path ~/file_to_send --standalone
    python -m filebridging.client r --host localhost --port 5000 --certificate ~/.ssh/server.crt --token 12345678 --password supersecretpasswordhere --path ~/Downloads 
    

    The receiver client may be standalone as well: just add the --key parameter (for SSL-secured sessions) and the --standalone flag.

  • Configuration file example

    #!/bin/python
        
    host = "www.example.com"
    port = 5000
    certificate = "/path/to/public.crt"
    key = "/path/to/private.key"
        
    action = 'r'
    password = 'verysecretpassword'
    token = 'sessiontok'
    file_path = '.'
    

Generating SSL certificates

You may use filebridging.create_certificate.py script or use openssl from the command line.

Via script

python -m filebridging.create_certificate --name example --domain example.com --force

Via command line

Store configuration in file mycert.csr.cnf and run the following command to generate a self-signed SSL certificate.

openssl req -newkey rsa:4096 -nodes -keyout ./mycert.key \
 -x509 -days 365 -out ./mycert.crt \
 -config mycert.csr.cnf

mycert.csr.cnf

[ req ]
default_bits = 4096
prompt = no
default_md = sha256
distinguished_name = dn

[ dn ]
CN = yourdomain.com