Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/simatwa/tdwnsv3

Simple local-files server with security on top.
https://github.com/simatwa/tdwnsv3

browsefile file-browser file-hosting filemanagement filemanager files-server fileserver filesystem hosting localhost localstorage server

Last synced: 3 months ago
JSON representation

Simple local-files server with security on top.

Awesome Lists containing this project

README

        

tdwnsv3


Github
pypi
Coverage
wakatime
Downloads
Visitors
Code-style

> Access your files on the web.

![Web interface sample](https://github.com/Simatwa/tdwnsv3/raw/main/assets/web_interface_example.gif)

## [Independencies](https://github.com/Simatwa/tdwnsv3/raw/main/requirements.txt)

* 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

```sh
$ pip install tdwnsv3
```

2. From source

```sh
$ pip install git+https://github.com/Simatwa/tdwnsv3.git
```

3. Cloning repo and install

```sh
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
```
2. `$ 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](https://nginx.org) for efficiency.

```py
from tdwnsv3.tdwnsv3 import app

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

The [wsgi.py](https://github.com/Simatwa/tdwnsv3/raw/main/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](https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html) :

```

$ 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

```

- Review [CHANGELOG](CHANGELOG.md)

## Acknowledgements

* [x] [Flask](https://github.com/pallets/flask)
* [x] [Python](https://python.org)