Skip to main content

A thumbor server extension for DASH

Project description

thumbor_dash

A thumbor server extension for DASH

Setup

Requirements

  • Python >= 3.9
  • Pip >= 21.1
  • Thumbor == 7.0.0a5

See the requirements for setting up thumbor in the documentation

1. Install thumbor_dash

pip install thumbor_dash

Note: thumbor_dash, thumbor, and other required dependencies will be installed

2. Create a thumbor configuration file

thumbor-config > thumbor.conf

3. Add these lines to thumbor.conf file

# Set allowed dimensions
MIN_WIDTH = 1
MIN_HEIGHT = 1
MAX_WIDTH = 1200
MAX_HEIGHT = 800

# Use custom Url signing method (sha256)
URL_SIGNER = 'thumbor_dash.url_signers.base64_hmac_sha256'

# Allow only signed URL
ALLOW_UNSAFE_URL = False

# Set user moderation rules
REQUEST_TIME_LIMIT = 1 # time between requests in minutes
USAGE_VIOLATION_LIMIT = 5 # total number of times a requester can violate the time limit before ban
BAN_DURATION = 10 # requester ban duration in minutes

# Use custom error handling
USE_CUSTOM_ERROR_HANDLING = True
ERROR_HANDLER_MODULE = 'thumbor_dash.error_handlers.sentry'

# User-defined MN and IP list
SEED_IP = 'seed-1.testnet.networks.dash.org'
MN_LIST =  '34.219.81.129,34.221.42.205,34.208.88.128,54.189.162.193,34.220.124.90,54.201.242.241,54.68.10.46,34.210.81.39,18.237.47.243'

Usage

1. Start thumbor_dash server

thumbor_dash --conf=thumbor.conf

2. Sign image URL

thumbor_dash-url --key="<Requester Identity Key>" --width=<width> --height=<height> --dashauth="requester(<requesterId>):contract(<contractId>):document(<documentType>):field(<avatarUrl>):owner(<ownerId>):updatedAt(<updatedAt>)" --filters="<filters>" <imageURL>

output:

/<signature>/<width>x<height>/dashauth:requester(<requesterId>):contract(<contractId>):document(<documentType>):field(<field>):owner(<ownerId>):updatedAt(<updatedAt>)/filters:format(<format>)/<encodedImageUrl>

3. Thumbor_dash image retrieval URL

http://<thumbor_dash-server>/<signature>/<width>x<height>/dashauth:requester(<requesterId>):contract(<contractId>):document(<documentType>):field(<field>):owner(<ownerId>):updatedAt(<updatedAt>)/filters:format(<format>)/<encodedImageUrl>

Note: If running the server locally, <thumbor_dash-server> should be localhost:8888

Example

This is a signed thumbor_dash url. Simply run thumbor_dash and paste this link in your browser.

http://localhost:8888/AErpxvb_DbFWZMXEprL2cX4qMM8yCEk0yOJgmxtrIjA=/1200x800/dashauth:requester(G75gKVaN7BAz8GhKp9qk18o9Mf2JgCpRxLtzYGNs68Wa):contract(HPvdCZ3sr2ACdSW6VeNVKKiYjUBnS4YkMv3sexzzTABJ):document(thumbnailField):field(avatarUrl):owner(G75gKVaN7BAz8GhKp9qk18o9Mf2JgCpRxLtzYGNs68Wa):updatedAt(1634748218973)/filters:format(jpeg)/https%3A//github.com/thumbor/thumbor/raw/master/example.jpg

Running thumbor_dash in Docker

This is the fastest way to run thumbor_dash

1. Create a thumbor.env.txt file containing the environment variables

MIN_WIDTH=1
MIN_HEIGHT=1
MAX_WIDTH=1200
MAX_HEIGHT=800
REQUEST_TIME_LIMIT=1 
USAGE_VIOLATION_LIMIT=5
BAN_DURATION=10
USE_CUSTOM_ERROR_HANDLING=True
ALLOW_UNSAFE_URL=False
URL_SIGNER=thumbor_dash.url_signers.base64_hmac_sha256
ERROR_HANDLER_MODULE=thumbor_dash.error_handlers.sentry
SEED_IP=seed-1.testnet.networks.dash.org
MN_LIST=34.219.81.129,34.221.42.205,34.208.88.128,54.189.162.193,34.220.124.90,54.201.242.241,54.68.10.46,34.210.81.39,18.237.47.243

2. Start thumbor_dash server in Docker

docker run -p 80:80 --env-file thumbor.env.txt mayoreee/thumbor_dash When your environment is not ARM-based, add the option --platform linux/arm64/v8

Note: If running in Docker, <thumbor_dash-server> in the image request URL should be set to localhost:80 instead of localhost:8888.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thumbor_dash-0.0.18.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

thumbor_dash-0.0.18-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file thumbor_dash-0.0.18.tar.gz.

File metadata

  • Download URL: thumbor_dash-0.0.18.tar.gz
  • Upload date:
  • Size: 21.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for thumbor_dash-0.0.18.tar.gz
Algorithm Hash digest
SHA256 42740e35f44ad883994bcd80f03526ace53868a1b8ce2ac9c11e0185542cfd9f
MD5 2db865ae2ebff0c665ac3d7aff7d9f10
BLAKE2b-256 662ad1a659d0ed86c3bee65d73e19278a8fb64d59bae6ca83cb82eb6e4d80ee4

See more details on using hashes here.

File details

Details for the file thumbor_dash-0.0.18-py3-none-any.whl.

File metadata

  • Download URL: thumbor_dash-0.0.18-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for thumbor_dash-0.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 7cadf29c2db06713a59abc3faed9fa8b448103dda59d8ce11c5f4a196c84fc48
MD5 05bb0e606a77869e1fdb2d13ae2c92e3
BLAKE2b-256 de0467e8344f2954b5f3e320d8ed2553fe156632efb16a29f7e52fe107a3d2f9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page