It is built using bottle: https://github.com/bottlepy/bottle | https://bottlepy.org/docs/dev/
It aims to provide the same value provided by http-server tool written in nodejs:
https://github.com/http-party/http-server | https://www.npmjs.com/package/http-server
Download executable for your platform here:
Run
sipper -q -g <directory-to-serve>or
sipper -q -g -t media <directory-to-serve> # for media template.# Pip based installation:
python -m pip install bottle-sipper
python -m sipper <directory-to-serve>
-- OR --
python -m sipper -t media <directory-to-serve>
-- OR --
python -m sipper -q <directory-to-serve> # -t media ## to use media template.
usage: sipper.py [-h] [-d SHOW_DIR] [-a ADDRESS] [-p PORT] [-u USERNAME] [-P PASSWORD] [-b TEMPLATE_BASE_DIR] [-t USE_AVAILABLE_TEMPLATE] directory
positional arguments:
directory
options:
-h, --help show this help message and exit
-d, --show-dir SHOW_DIR
Show directory listings
-a, --address ADDRESS
Address for the server, defaults to 0.0.0.0
-p, --port PORT Port for the server
-b, --template-base-dir TEMPLATE_BASE_DIR
Template base directory. Takes precedence over --use-available-template option
-t, --use-available-template USE_AVAILABLE_TEMPLATE
Use out-of-the-box templates. Available templates: default, media
-q, --searchable Add search box to be able to search on files (Performs fuzzy search similar to fzf tool).
-g, --gzip When enabled, it will server some-file.js.gz file in place of some-file.js when a gzipped version of the file exists and
the request accepts gzip encoding. Also applies gzip to the directory listing response.
-s, --silent Suppress log messages from output
-w, --num-of-worker-threads NUM_OF_WORKER_THREADS
Set number of server worker threads. Default is 10.
-c, --connections CONNECTIONS
Max number of concurrent connections
-x, --cache-expiry CACHE_EXPIRY
Set cache time (in seconds) for cache-control max-age header, e.g. -x 10 for 10 seconds. To disable caching, use -x -1.
-v, --version Print the version and exit.
auth-options:
-u, --username USERNAME
Username for basic authentication
-P, --password PASSWORD
Password for basic authentication
ssl-options:
-S, --ssl-enabled, --tls-enabled
Enable secure request serving with TLS/SSL (HTTPS).
-C, --cert CERT Path to ssl cert file
-K, --key KEY Path to ssl key file
sipper = Sipper('<dir>')
sipper.start_sipping('0.0.0.0', 8080)
sipper.await_sipping_complete() # Optionally, sipper.shutdown(wait_before_shutdown=600) to shutdown after 10min.
python -m venv .venv # (Optional)
pip install -r requirements.txt
-
Custom templates can be used overriding default templates by passing
-b or --template-base-dirargument. -
The custom template supports SimpleTemplate Engine out-of-the-box.
-
The following properties are available for use in the template:
{ "dir": "<current_directory>", "template_base_dir": "<template_base_dir>", "file_details_list": [{ { "hash": "<hash_of_file_or_dir_within_parent_folder>", "isDir": <true/false>, "fileIconStyleClass": "<icon_style_class_for_file>", "fileIconBase64": "<base64_data_of_icon>", "lastModifiedDate": "<last_modified_date_formatted_as_string>", "filePermissions": "<file_permissions_formatted>", "fileSize": "<file_size_formatted>", "fileLink": "<file_url>", "fileName": "<file_name>", "mimetype": "<mimetype>, } }], "icons": [{ "name": "<icon_name>", "base64_data": "<base64_data_icon>" }], "python_version": "<version_of_python>", "app_name": "<application_name>", "app_version": "<application_version>", "app_link": "<applicantion_link>", "server_address": "<address_of_server>", "searchable": <true/false> }