/simpleshare

A local file sharing utility written in Python.

Primary LanguagePythonMIT LicenseMIT

simpleshare

A local file sharing utility written in Python. Uses multicast UDP to share the list of files, and TCP to transfer the files themselves.

Installation:

  • Source:

    • Install Python 3
    • $ git clone https://github.com/ssebs/simpleshare
      $ cd simpleshare/
      $ python -m venv venv
      
    • Linux:
      • $ source ./venv/bin/activate
    • Windows:
      • > .\venv\Scripts\activate
    • (venv) $ pip install -r requirements.txt
      
  • Binary:

  • PyPI:

    • $ pip install simpleshare
    • $ simpleshare

Usage:

  • CLI
    usage: simpleshare.py [-h] [--type {client,server}] [--ip IP] [FILENAME]
    
    Local file sharing utility. Can be used as server and as a client. Run this
    without any arguments to run GUI.
    
    positional arguments:
      FILENAME              Name of the file you want to share, if running as the
                            server.
    
    optional arguments:
      -h, --help            show this help message and exit
      --type {client,server}
                            Type, how do you want to use this tool
      --ip IP               IP address, only used if you're the server
    
  • GUI
    • Double click the exe / binary.

Building

  • Linux:
    • $ make
  • Windows:
    • > .\Makefile.bat
  • (venv) $ pyinstaller simpleshare/__main__.py --clean -F -n simpleshare

Screenshots

Home

home

Upload

upload

Download

download

TODO:

  • Structure program
    • 3 connections
      • Server: Share filename (Multicast)
      • Client: Reply to server saying that you want the file (UDP)
      • Server: Send file to client (TCP)
    • CLI
    • GUI
  • Server
    • "Broadcast" (multicast) that you're sharing "x" file
    • Have server send files if requested to IP found.
    • CLI
    • GUI
      • DnD
      • Custom timout
  • Client
    • Listen to see if anyone is sharing files
    • List available files
    • Download files to specified file name/path
    • CLI
    • GUI
  • Make this work with 1 file, 1 client
  • Make this work with 1 file, 2 clients
  • Make this work with 2 files (2 servers), 1 client
  • Make this work with 2 files (2 servers), 2 client
  • Binary output (.exe, .app, etc.)
    • Icon support
  • Refactor + document
  • Unit Tests

Bugs:

  • Threads won't stop properly
  • Can't have 2 clients
  • Can't have 2 servers
  • GUI
    • Styling
    • Only Choose IP if more than 1 available
    • Share Thread issues

License

MIT © 2019 Sebastian Safari