Skip to content

Simple local-files server with security on top.

License

Notifications You must be signed in to change notification settings

Simatwa/tdwnsv3

Repository files navigation

tdwnsv3

Github pypi Coverage wakatime Downloads Visitors Code-style

Access your files on the web.

Web interface sample

  • Flask
  • cryptography
  • appdirs

Features

  • Simple commandline interface
  • Web interface with multiple themes
  • Serve as static files server - index.html
  • Highly immune against variety of attacks
  • Compatible with multiple devices and browsers
  • Fully customizable web interface - css
  • Upload and download files
  • Delete multiple files with a click

Installation

  • Choose your suit from the following ways:
  1. From pip
$ pip install tdwnsv3
  1. From source
$ pip install git+https://github.com/Simatwa/tdwnsv3.git
  1. Cloning repo and install
git clone https://github.com/Simatwa/tdwnsv3.git
cd tdwnsv3
sudo bash install.sh

Usage

Either of the following ways will get you ready at the terminal environment

  1. Package level
$ python -m tdwnsv3
  1. $ tdwnsv3

By default, the server fires up with the following configurations:

Command Default
host False
port 8000
no-sort False
theme 3
upload False
encrypt False
session False

Note This is just a shallow display of the default configurations.

wsgi

Since Flask server runs at development environment, you may need to run the program on a server such as Nginx for efficiency.

from tdwnsv3.tdwnsv3 import app

if __name__ == "__main__":
    app.run()

The wsgi.py script can be interfaced with wsgi such as uwsgi to run behind a server .

  • For instance intergrating with uwsgi as stated in docs :

$ uwsgi --http=0.0.0.0:8080 -w wsgi:app

  • Run tdwnsv3 -h to view more configuration info as shown.

usage: tdwnsv3 [-h] [-v] [-d DIR] [-a ALLOW] [-r RESTRICT] [-w WHITELIST]
               [-b BLACKLIST] [-t SPLIT] [-s 1 to 10] [-l 1 to 5] [-o LOG]
               [-ho HOME] [-st STATIC] [-up RECEIVE] [-se SESSION] [-th [1-3]]
               [-cs CSS] [-upp UPLOAD_PATH] [-upe UPLOAD_EXTENSION]
               [-ups UPLOAD_SIZE] [-upl upload_limit] [--upload-multiple]
               [--disable-aggressive] [--display-hidden] [--host] [--no-sort]
               [--view] [--strict] [--preload] [--upload] [--save-css]
               [--no-cache] [--encrypt] [--debug] [--index]
               [port]

Simple local-files server with security on top!

positional arguments:
  port                  Port to be used for hosting files

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -d DIR, --dir DIR     Directory to be hosted
  -a ALLOW, --allow ALLOW
                        Host only certain entries
  -r RESTRICT, --restrict RESTRICT
                        Hide entries from being viewed
  -w WHITELIST, --whitelist WHITELIST
                        IP(s) to be excluded from restrictions - default :
                        None
  -b BLACKLIST, --brownlist BLACKLIST
                        IP(s) to be imposed the restrictions - default : all
  -t SPLIT, --split SPLIT
                        Separator for the entries allowed/restricted - default
                        [,]
  -s 1 to 10, --secure 1 to 10
                        Level of security on contents
  -l 1 to 5, --level 1 to 5
                        Logging level
  -o LOG, --log LOG     Filepath to log to
  -ho HOME, --home HOME
                        Home host subdomain path
  -st STATIC, --static STATIC
                        Static host subdomain path
  -up RECEIVE, --receive RECEIVE
                        Upload host subdomain path
  -se SESSION, --session SESSION
                        Maximum session time per user - (mins)
  -th [1-3], --theme [1-3]
                        Theme for displaying contents
  -cs CSS, --css CSS    Customize webpage with the CSS in path
  -upp UPLOAD_PATH, --upload-path UPLOAD_PATH
                        Path for saving uploaded files
  -upe UPLOAD_EXTENSION, --upload-extension UPLOAD_EXTENSION
                        Extensions of files to be uploaded
  -ups UPLOAD_SIZE, --upload-size UPLOAD_SIZE
                        Maximum file size to be uploaded - [MB]
  -upl upload_limit, --upload-limit-person upload_limit
                        Maximum files to be uploaded per IP
  --upload-multiple     Allow users to upload more than one file at a time.
  --disable-aggressive  Not to - Filter all entries with the restricted
                        keywords +
  --display-hidden      Show hidden files and directories
  --host                Host the files on the LAN
  --no-sort             Disable prettifying the display of contents
  --view                Files can be seen but can't be downloaded
  --strict              Only allow whitelisted & brownlisted IPs to access
                        server!
  --preload             Load videos before clicked
  --upload              Allow users to upload files
  --save-css            Saves the css data in path for future use
  --no-cache            Use currently passed parameters not previously saved;
                        content-caching disabled
  --encrypt             Encrypt URIs on the webpage
  --debug               Debug the web application in UI mode
  --index               Serve from index.html file

Acknowledgements