mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	So we can apply all our lint checks to it. Signed-off-by: Anders Kaseorg <anders@zulip.com>
		
			
				
	
	
		
			698 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			698 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import configparser
 | 
						||
import os
 | 
						||
import sys
 | 
						||
 | 
						||
ZULIP_PATH = os.getcwd()  # Thumbor doesn’t set __file__ when loading this
 | 
						||
sys.path.append(ZULIP_PATH)
 | 
						||
 | 
						||
from zproject.config import get_secret
 | 
						||
 | 
						||
os.environ['AWS_ACCESS_KEY_ID'] = get_secret('s3_key', '')
 | 
						||
os.environ['AWS_SECRET_ACCESS_KEY'] = get_secret('s3_secret_key', '')
 | 
						||
 | 
						||
config_file = configparser.RawConfigParser()
 | 
						||
config_file.read("/etc/zulip/zulip.conf")
 | 
						||
 | 
						||
# Whether this instance of Zulip is running in a production environment.
 | 
						||
PRODUCTION = config_file.has_option('machine', 'deploy_type')
 | 
						||
if PRODUCTION:
 | 
						||
    try:
 | 
						||
        from zproject.prod_settings import LOCAL_UPLOADS_DIR
 | 
						||
    except ImportError:
 | 
						||
        LOCAL_UPLOADS_DIR = None
 | 
						||
else:
 | 
						||
    from zproject.dev_settings import LOCAL_UPLOADS_DIR
 | 
						||
 | 
						||
IS_LOCAL_STORAGE = bool(LOCAL_UPLOADS_DIR)
 | 
						||
 | 
						||
################################# File Loader ##################################
 | 
						||
 | 
						||
## The root path where the File Loader will try to find images
 | 
						||
if IS_LOCAL_STORAGE:
 | 
						||
    if os.path.isabs(LOCAL_UPLOADS_DIR):
 | 
						||
        FILE_LOADER_ROOT_PATH = LOCAL_UPLOADS_DIR
 | 
						||
    else:
 | 
						||
        FILE_LOADER_ROOT_PATH = os.path.join(ZULIP_PATH, LOCAL_UPLOADS_DIR)
 | 
						||
 | 
						||
################################### Logging ####################################
 | 
						||
 | 
						||
## Logging configuration as json
 | 
						||
## Defaults to: None
 | 
						||
#THUMBOR_LOG_CONFIG = None
 | 
						||
 | 
						||
## Log Format to be used by thumbor when writing log messages.
 | 
						||
## Defaults to: '%(asctime)s %(name)s:%(levelname)s %(message)s'
 | 
						||
#THUMBOR_LOG_FORMAT = '%(asctime)s %(name)s:%(levelname)s %(message)s'
 | 
						||
 | 
						||
## Date Format to be used by thumbor when writing log messages.
 | 
						||
## Defaults to: '%Y-%m-%d %H:%M:%S'
 | 
						||
#THUMBOR_LOG_DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### Imaging ####################################
 | 
						||
 | 
						||
## Max width in pixels for images read or generated by thumbor
 | 
						||
## Defaults to: 0
 | 
						||
#MAX_WIDTH = 0
 | 
						||
 | 
						||
## Max height in pixels for images read or generated by thumbor
 | 
						||
## Defaults to: 0
 | 
						||
#MAX_HEIGHT = 0
 | 
						||
 | 
						||
## Max pixel count for images read by thumbor
 | 
						||
## Defaults to: 75000000.0
 | 
						||
#MAX_PIXELS = 75000000.0
 | 
						||
 | 
						||
## Min width in pixels for images read or generated by thumbor
 | 
						||
## Defaults to: 1
 | 
						||
#MIN_WIDTH = 1
 | 
						||
 | 
						||
## Min width in pixels for images read or generated by thumbor
 | 
						||
## Defaults to: 1
 | 
						||
#MIN_HEIGHT = 1
 | 
						||
 | 
						||
## Allowed domains for the http loader to download. These are regular
 | 
						||
## expressions.
 | 
						||
## Defaults to: #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
#ALLOWED_SOURCES = #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
 | 
						||
## Quality index used for generated JPEG images
 | 
						||
## Defaults to: 80
 | 
						||
#QUALITY = 80
 | 
						||
 | 
						||
## Exports JPEG images with the `progressive` flag set.
 | 
						||
## Defaults to: True
 | 
						||
#PROGRESSIVE_JPEG = True
 | 
						||
 | 
						||
## Specify subsampling behavior for Pillow (see `subsampling`               in
 | 
						||
## http://pillow.readthedocs.org/en/latest/handbook/image-file-
 | 
						||
## formats.html#jpeg).Be careful to use int for 0,1,2 and string for "4:4:4"
 | 
						||
## notation. Will ignore `quality`. Using `keep` will copy the original file's
 | 
						||
## subsampling.
 | 
						||
## Defaults to: None
 | 
						||
#PILLOW_JPEG_SUBSAMPLING = None
 | 
						||
 | 
						||
## Specify quantization tables for Pillow (see `qtables`               in
 | 
						||
## http://pillow.readthedocs.org/en/latest/handbook/image-file-
 | 
						||
## formats.html#jpeg). Will ignore `quality`. Using `keep` will copy the
 | 
						||
## original file's qtables.
 | 
						||
## Defaults to: None
 | 
						||
#PILLOW_JPEG_QTABLES = None
 | 
						||
 | 
						||
## Quality index used for generated WebP images. If not set (None) the same level
 | 
						||
## of JPEG quality will be used.
 | 
						||
## Defaults to: None
 | 
						||
#WEBP_QUALITY = None
 | 
						||
 | 
						||
## Specifies whether WebP format should be used automatically if the request
 | 
						||
## accepts it (via Accept header)
 | 
						||
## Defaults to: False
 | 
						||
#AUTO_WEBP = False
 | 
						||
 | 
						||
## Specify the ratio between 1in and 1px for SVG images. This is only used
 | 
						||
## whenrasterizing SVG images having their size units in cm or inches.
 | 
						||
## Defaults to: 150
 | 
						||
#SVG_DPI = 150
 | 
						||
 | 
						||
## Max AGE sent as a header for the image served by thumbor in seconds
 | 
						||
## Defaults to: 86400
 | 
						||
#MAX_AGE = 86400
 | 
						||
 | 
						||
## Indicates the Max AGE header in seconds for temporary images (images with
 | 
						||
## failed smart detection)
 | 
						||
## Defaults to: 0
 | 
						||
#MAX_AGE_TEMP_IMAGE = 0
 | 
						||
 | 
						||
## Indicates whether thumbor should rotate images that have an Orientation EXIF
 | 
						||
## header
 | 
						||
## Defaults to: False
 | 
						||
#RESPECT_ORIENTATION = False
 | 
						||
 | 
						||
## Ignore errors during smart detections and return image as a temp image (not
 | 
						||
## saved in result storage and with MAX_AGE_TEMP_IMAGE age)
 | 
						||
## Defaults to: False
 | 
						||
#IGNORE_SMART_ERRORS = False
 | 
						||
 | 
						||
## Sends If-Modified-Since & Last-Modified headers; requires support from result
 | 
						||
## storage
 | 
						||
## Defaults to: False
 | 
						||
#SEND_IF_MODIFIED_LAST_MODIFIED_HEADERS = False
 | 
						||
 | 
						||
## Preserves exif information in generated images. Increases image size in
 | 
						||
## kbytes, use with caution.
 | 
						||
## Defaults to: False
 | 
						||
#PRESERVE_EXIF_INFO = False
 | 
						||
 | 
						||
## Indicates whether thumbor should enable the EXPERIMENTAL support for animated
 | 
						||
## gifs.
 | 
						||
## Defaults to: True
 | 
						||
#ALLOW_ANIMATED_GIFS = True
 | 
						||
 | 
						||
## Indicates whether thumbor should use gifsicle engine. Please note that smart
 | 
						||
## cropping and filters are not supported for gifs using gifsicle (but won't
 | 
						||
## give an error).
 | 
						||
## Defaults to: False
 | 
						||
USE_GIFSICLE_ENGINE = True
 | 
						||
 | 
						||
## Indicates whether thumbor should enable blacklist functionality to prevent
 | 
						||
## processing certain images.
 | 
						||
## Defaults to: False
 | 
						||
#USE_BLACKLIST = False
 | 
						||
 | 
						||
## Size of the thread pool used for image transformations.  The default value is
 | 
						||
## 0 (don't use a threadpoool. Increase this if you are seeing your IOLoop
 | 
						||
## getting blocked (often indicated by your upstream HTTP requests timing out)
 | 
						||
## Defaults to: 0
 | 
						||
#ENGINE_THREADPOOL_SIZE = 0
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################ Extensibility #################################
 | 
						||
 | 
						||
## The metrics backend thumbor should use to measure internal actions. This must
 | 
						||
## be the full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.metrics.logger_metrics'
 | 
						||
#METRICS = 'thumbor.metrics.logger_metrics'
 | 
						||
 | 
						||
## The loader thumbor should use to load the original image. This must be the
 | 
						||
## full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.loaders.http_loader'
 | 
						||
LOADER = 'zthumbor.loaders.zloader'
 | 
						||
 | 
						||
## The file storage thumbor should use to store original images. This must be the
 | 
						||
## full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.storages.file_storage'
 | 
						||
if IS_LOCAL_STORAGE:
 | 
						||
    STORAGE = 'thumbor.storages.file_storage'
 | 
						||
else:
 | 
						||
    STORAGE = 'tc_aws.storages.s3_storage'
 | 
						||
 | 
						||
## The result storage thumbor should use to store generated images. This must be
 | 
						||
## the full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: None
 | 
						||
if IS_LOCAL_STORAGE:
 | 
						||
    RESULT_STORAGE = 'thumbor.result_storages.file_storage'
 | 
						||
else:
 | 
						||
    RESULT_STORAGE = 'tc_aws.result_storages.s3_storage'
 | 
						||
 | 
						||
## The imaging engine thumbor should use to perform image operations. This must
 | 
						||
## be the full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.engines.pil'
 | 
						||
#ENGINE = 'thumbor.engines.pil'
 | 
						||
 | 
						||
## The gif engine thumbor should use to perform image operations. This must be
 | 
						||
## the full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.engines.gif'
 | 
						||
#GIF_ENGINE = 'thumbor.engines.gif'
 | 
						||
 | 
						||
## The url signer thumbor should use to verify url signatures.This must be the
 | 
						||
## full name of a python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.url_signers.base64_hmac_sha1'
 | 
						||
#URL_SIGNER = 'thumbor.url_signers.base64_hmac_sha1'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### Security ###################################
 | 
						||
 | 
						||
## The security key thumbor uses to sign image URLs
 | 
						||
## Defaults to: 'MY_SECURE_KEY'
 | 
						||
SECURITY_KEY = get_secret('thumbor_key')
 | 
						||
 | 
						||
## Indicates if the /unsafe URL should be available
 | 
						||
## Defaults to: True
 | 
						||
ALLOW_UNSAFE_URL = False
 | 
						||
 | 
						||
## Indicates if encrypted (old style) URLs should be allowed
 | 
						||
## Defaults to: True
 | 
						||
ALLOW_OLD_URLS = False
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
##################################### HTTP #####################################
 | 
						||
 | 
						||
## Enables automatically generated etags
 | 
						||
## Defaults to: True
 | 
						||
#ENABLE_ETAGS = True
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### Storage ####################################
 | 
						||
 | 
						||
## Set maximum id length for images when stored
 | 
						||
## Defaults to: 32
 | 
						||
#MAX_ID_LENGTH = 32
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### Metrics ####################################
 | 
						||
 | 
						||
## Host to send statsd instrumentation to
 | 
						||
## Defaults to: None
 | 
						||
#STATSD_HOST = None
 | 
						||
 | 
						||
## Port to send statsd instrumentation to
 | 
						||
## Defaults to: 8125
 | 
						||
#STATSD_PORT = 8125
 | 
						||
 | 
						||
## Prefix for statsd
 | 
						||
## Defaults to: None
 | 
						||
#STATSD_PREFIX = None
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
################################# HTTP Loader ##################################
 | 
						||
 | 
						||
## The maximum number of seconds libcurl can take to connect to an image being
 | 
						||
## loaded
 | 
						||
## Defaults to: 5
 | 
						||
#HTTP_LOADER_CONNECT_TIMEOUT = 5
 | 
						||
 | 
						||
## The maximum number of seconds libcurl can take to download an image
 | 
						||
## Defaults to: 20
 | 
						||
#HTTP_LOADER_REQUEST_TIMEOUT = 20
 | 
						||
 | 
						||
## Indicates whether libcurl should follow redirects when downloading an image
 | 
						||
## Defaults to: True
 | 
						||
#HTTP_LOADER_FOLLOW_REDIRECTS = True
 | 
						||
 | 
						||
## Indicates the number of redirects libcurl should follow when downloading an
 | 
						||
## image
 | 
						||
## Defaults to: 5
 | 
						||
#HTTP_LOADER_MAX_REDIRECTS = 5
 | 
						||
 | 
						||
## The maximum number of simultaneous HTTP connections the loader can make before
 | 
						||
## queuing
 | 
						||
## Defaults to: 10
 | 
						||
#HTTP_LOADER_MAX_CLIENTS = 10
 | 
						||
 | 
						||
## Indicates whether thumbor should forward the user agent of the requesting user
 | 
						||
## Defaults to: False
 | 
						||
#HTTP_LOADER_FORWARD_USER_AGENT = False
 | 
						||
 | 
						||
## Default user agent for thumbor http loader requests
 | 
						||
## Defaults to: 'Thumbor/6.1.5'
 | 
						||
#HTTP_LOADER_DEFAULT_USER_AGENT = 'Thumbor/6.1.5'
 | 
						||
 | 
						||
## The proxy host needed to load images through
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_PROXY_HOST = None
 | 
						||
 | 
						||
## The proxy port for the proxy host
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_PROXY_PORT = None
 | 
						||
 | 
						||
## The proxy username for the proxy host
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_PROXY_USERNAME = None
 | 
						||
 | 
						||
## The proxy password for the proxy host
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_PROXY_PASSWORD = None
 | 
						||
 | 
						||
## The filename of CA certificates in PEM format
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_CA_CERTS = None
 | 
						||
 | 
						||
## The filename for client SSL key
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_CLIENT_KEY = None
 | 
						||
 | 
						||
## The filename for client SSL certificate
 | 
						||
## Defaults to: None
 | 
						||
#HTTP_LOADER_CLIENT_CERT = None
 | 
						||
 | 
						||
## If the CurlAsyncHTTPClient should be used
 | 
						||
## Defaults to: False
 | 
						||
#HTTP_LOADER_CURL_ASYNC_HTTP_CLIENT = False
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################# File Storage #################################
 | 
						||
 | 
						||
## Expiration in seconds for the images in the File Storage. Defaults to one
 | 
						||
## month
 | 
						||
## Defaults to: 2592000
 | 
						||
#STORAGE_EXPIRATION_SECONDS = 2592000
 | 
						||
 | 
						||
## Indicates whether thumbor should store the signing key for each image in the
 | 
						||
## file storage. This allows the key to be changed and old images to still be
 | 
						||
## properly found
 | 
						||
## Defaults to: False
 | 
						||
#STORES_CRYPTO_KEY_FOR_EACH_IMAGE = False
 | 
						||
 | 
						||
## The root path where the File Storage will try to find images
 | 
						||
## Defaults to: '/tmp/thumbor/storage'
 | 
						||
#FILE_STORAGE_ROOT_PATH = '/tmp/thumbor/storage'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
#################################### Upload ####################################
 | 
						||
 | 
						||
## Max size in Kb for images uploaded to thumbor
 | 
						||
## Aliases: MAX_SIZE
 | 
						||
## Defaults to: 0
 | 
						||
#UPLOAD_MAX_SIZE = 0
 | 
						||
 | 
						||
## Indicates whether thumbor should enable File uploads
 | 
						||
## Aliases: ENABLE_ORIGINAL_PHOTO_UPLOAD
 | 
						||
## Defaults to: False
 | 
						||
#UPLOAD_ENABLED = False
 | 
						||
 | 
						||
## The type of storage to store uploaded images with
 | 
						||
## Aliases: ORIGINAL_PHOTO_STORAGE
 | 
						||
## Defaults to: 'thumbor.storages.file_storage'
 | 
						||
#UPLOAD_PHOTO_STORAGE = 'thumbor.storages.file_storage'
 | 
						||
 | 
						||
## Indicates whether image deletion should be allowed
 | 
						||
## Aliases: ALLOW_ORIGINAL_PHOTO_DELETION
 | 
						||
## Defaults to: False
 | 
						||
#UPLOAD_DELETE_ALLOWED = False
 | 
						||
 | 
						||
## Indicates whether image overwrite should be allowed
 | 
						||
## Aliases: ALLOW_ORIGINAL_PHOTO_PUTTING
 | 
						||
## Defaults to: False
 | 
						||
#UPLOAD_PUT_ALLOWED = False
 | 
						||
 | 
						||
## Default filename for image uploaded
 | 
						||
## Defaults to: 'image'
 | 
						||
#UPLOAD_DEFAULT_FILENAME = 'image'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
############################### Memcache Storage ###############################
 | 
						||
 | 
						||
## List of Memcache storage server hosts
 | 
						||
## Defaults to: #    [
 | 
						||
#        'localhost:11211',
 | 
						||
#    ]
 | 
						||
 | 
						||
#MEMCACHE_STORAGE_SERVERS = #    [
 | 
						||
#        'localhost:11211',
 | 
						||
#    ]
 | 
						||
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################ Mixed Storage #################################
 | 
						||
 | 
						||
## Mixed Storage file storage. This must be the full name of a python module
 | 
						||
## (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.storages.no_storage'
 | 
						||
#MIXED_STORAGE_FILE_STORAGE = 'thumbor.storages.no_storage'
 | 
						||
 | 
						||
## Mixed Storage signing key storage. This must be the full name of a python
 | 
						||
## module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.storages.no_storage'
 | 
						||
#MIXED_STORAGE_CRYPTO_STORAGE = 'thumbor.storages.no_storage'
 | 
						||
 | 
						||
## Mixed Storage detector information storage. This must be the full name of a
 | 
						||
## python module (python must be able to import it)
 | 
						||
## Defaults to: 'thumbor.storages.no_storage'
 | 
						||
#MIXED_STORAGE_DETECTOR_STORAGE = 'thumbor.storages.no_storage'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
##################################### Meta #####################################
 | 
						||
 | 
						||
## The callback function name that should be used by the META route for JSONP
 | 
						||
## access
 | 
						||
## Defaults to: None
 | 
						||
#META_CALLBACK_NAME = None
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################## Detection ###################################
 | 
						||
 | 
						||
## List of detectors that thumbor should use to find faces and/or features. All
 | 
						||
## of them must be full names of python modules (python must be able to import
 | 
						||
## it)
 | 
						||
## Defaults to: #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
#DETECTORS = #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
 | 
						||
## The cascade file that opencv will use to detect faces.
 | 
						||
## Defaults to: 'haarcascade_frontalface_alt.xml'
 | 
						||
#FACE_DETECTOR_CASCADE_FILE = 'haarcascade_frontalface_alt.xml'
 | 
						||
 | 
						||
## The cascade file that opencv will use to detect glasses.
 | 
						||
## Defaults to: 'haarcascade_eye_tree_eyeglasses.xml'
 | 
						||
#GLASSES_DETECTOR_CASCADE_FILE = 'haarcascade_eye_tree_eyeglasses.xml'
 | 
						||
 | 
						||
## The cascade file that opencv will use to detect profile faces.
 | 
						||
## Defaults to: 'haarcascade_profileface.xml'
 | 
						||
#PROFILE_DETECTOR_CASCADE_FILE = 'haarcascade_profileface.xml'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################## Optimizers ##################################
 | 
						||
 | 
						||
## List of optimizers that thumbor will use to optimize images
 | 
						||
## Defaults to: #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
#OPTIMIZERS = #    [
 | 
						||
#    ]
 | 
						||
 | 
						||
 | 
						||
## Path for the jpegtran binary
 | 
						||
## Defaults to: '/usr/bin/jpegtran'
 | 
						||
#JPEGTRAN_PATH = '/usr/bin/jpegtran'
 | 
						||
 | 
						||
## Path for the ffmpeg binary used to generate gifv(h.264)
 | 
						||
## Defaults to: '/usr/local/bin/ffmpeg'
 | 
						||
#FFMPEG_PATH = '/usr/local/bin/ffmpeg'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### Filters ####################################
 | 
						||
 | 
						||
## List of filters that thumbor will allow to be used in generated images. All of
 | 
						||
## them must be full names of python modules (python must be able to import
 | 
						||
## it)
 | 
						||
## Defaults to: #    [
 | 
						||
#        'thumbor.filters.brightness',
 | 
						||
#        'thumbor.filters.colorize',
 | 
						||
#        'thumbor.filters.contrast',
 | 
						||
#        'thumbor.filters.rgb',
 | 
						||
#        'thumbor.filters.round_corner',
 | 
						||
#        'thumbor.filters.quality',
 | 
						||
#        'thumbor.filters.noise',
 | 
						||
#        'thumbor.filters.watermark',
 | 
						||
#        'thumbor.filters.equalize',
 | 
						||
#        'thumbor.filters.fill',
 | 
						||
#        'thumbor.filters.sharpen',
 | 
						||
#        'thumbor.filters.strip_icc',
 | 
						||
#        'thumbor.filters.frame',
 | 
						||
#        'thumbor.filters.grayscale',
 | 
						||
#        'thumbor.filters.rotate',
 | 
						||
#        'thumbor.filters.format',
 | 
						||
#        'thumbor.filters.max_bytes',
 | 
						||
#        'thumbor.filters.convolution',
 | 
						||
#        'thumbor.filters.blur',
 | 
						||
#        'thumbor.filters.extract_focal',
 | 
						||
#        'thumbor.filters.focal',
 | 
						||
#        'thumbor.filters.no_upscale',
 | 
						||
#        'thumbor.filters.saturation',
 | 
						||
#        'thumbor.filters.max_age',
 | 
						||
#        'thumbor.filters.curve',
 | 
						||
#    ]
 | 
						||
 | 
						||
#FILTERS = #    [
 | 
						||
#        'thumbor.filters.brightness',
 | 
						||
#        'thumbor.filters.colorize',
 | 
						||
#        'thumbor.filters.contrast',
 | 
						||
#        'thumbor.filters.rgb',
 | 
						||
#        'thumbor.filters.round_corner',
 | 
						||
#        'thumbor.filters.quality',
 | 
						||
#        'thumbor.filters.noise',
 | 
						||
#        'thumbor.filters.watermark',
 | 
						||
#        'thumbor.filters.equalize',
 | 
						||
#        'thumbor.filters.fill',
 | 
						||
#        'thumbor.filters.sharpen',
 | 
						||
#        'thumbor.filters.strip_icc',
 | 
						||
#        'thumbor.filters.frame',
 | 
						||
#        'thumbor.filters.grayscale',
 | 
						||
#        'thumbor.filters.rotate',
 | 
						||
#        'thumbor.filters.format',
 | 
						||
#        'thumbor.filters.max_bytes',
 | 
						||
#        'thumbor.filters.convolution',
 | 
						||
#        'thumbor.filters.blur',
 | 
						||
#        'thumbor.filters.extract_focal',
 | 
						||
#        'thumbor.filters.focal',
 | 
						||
#        'thumbor.filters.no_upscale',
 | 
						||
#        'thumbor.filters.saturation',
 | 
						||
#        'thumbor.filters.max_age',
 | 
						||
#        'thumbor.filters.curve',
 | 
						||
#    ]
 | 
						||
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################ Result Storage ################################
 | 
						||
 | 
						||
## Expiration in seconds of generated images in the result storage
 | 
						||
## Defaults to: 0
 | 
						||
#RESULT_STORAGE_EXPIRATION_SECONDS = 0
 | 
						||
 | 
						||
## Path where the Result storage will store generated images
 | 
						||
## Defaults to: '/tmp/thumbor/result_storage'
 | 
						||
if IS_LOCAL_STORAGE:
 | 
						||
    RESULT_STORAGE_FILE_STORAGE_ROOT_PATH = os.path.join(FILE_LOADER_ROOT_PATH, 'thumbnails')
 | 
						||
 | 
						||
## Indicates whether unsafe requests should also be stored in the Result Storage
 | 
						||
## Defaults to: False
 | 
						||
RESULT_STORAGE_STORES_UNSAFE = True
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
############################ Queued Redis Detector #############################
 | 
						||
 | 
						||
## Server host for the queued redis detector
 | 
						||
## Defaults to: 'localhost'
 | 
						||
#REDIS_QUEUE_SERVER_HOST = 'localhost'
 | 
						||
 | 
						||
## Server port for the queued redis detector
 | 
						||
## Defaults to: 6379
 | 
						||
#REDIS_QUEUE_SERVER_PORT = 6379
 | 
						||
 | 
						||
## Server database index for the queued redis detector
 | 
						||
## Defaults to: 0
 | 
						||
#REDIS_QUEUE_SERVER_DB = 0
 | 
						||
 | 
						||
## Server password for the queued redis detector
 | 
						||
## Defaults to: None
 | 
						||
#REDIS_QUEUE_SERVER_PASSWORD = None
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
############################# Queued SQS Detector ##############################
 | 
						||
 | 
						||
## AWS key id
 | 
						||
## Defaults to: None
 | 
						||
#SQS_QUEUE_KEY_ID = None
 | 
						||
 | 
						||
## AWS key secret
 | 
						||
## Defaults to: None
 | 
						||
#SQS_QUEUE_KEY_SECRET = None
 | 
						||
 | 
						||
## AWS SQS region
 | 
						||
## Defaults to: 'us-east-1'
 | 
						||
#SQS_QUEUE_REGION = 'us-east-1'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
#################################### Errors ####################################
 | 
						||
 | 
						||
## This configuration indicates whether thumbor should use a custom error
 | 
						||
## handler.
 | 
						||
## Defaults to: False
 | 
						||
#USE_CUSTOM_ERROR_HANDLING = False
 | 
						||
 | 
						||
## Error reporting module. Needs to contain a class called ErrorHandler with a
 | 
						||
## handle_error(context, handler, exception) method.
 | 
						||
## Defaults to: 'thumbor.error_handlers.sentry'
 | 
						||
#ERROR_HANDLER_MODULE = 'thumbor.error_handlers.sentry'
 | 
						||
 | 
						||
## File of error log as json
 | 
						||
## Defaults to: None
 | 
						||
#ERROR_FILE_LOGGER = None
 | 
						||
 | 
						||
## File of error log name is parametrized with context attribute
 | 
						||
## Defaults to: False
 | 
						||
#ERROR_FILE_NAME_USE_CONTEXT = False
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
############################### Errors - Sentry ################################
 | 
						||
 | 
						||
## Sentry thumbor project dsn. i.e.: http://5a63d58ae7b94f1dab3dee740b301d6a:73ee
 | 
						||
## a45d3e8649239a973087e8f21f98@localhost:9000/2
 | 
						||
## Defaults to: ''
 | 
						||
#SENTRY_DSN_URL = ''
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### General ####################################
 | 
						||
 | 
						||
## Custom app class to override ThumborServiceApp. This config value is
 | 
						||
## overridden by the -a command-line parameter.
 | 
						||
## Defaults to: 'thumbor.app.ThumborServiceApp'
 | 
						||
#APP_CLASS = 'thumbor.app.ThumborServiceApp'
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
################################### AWS S3 settings ############################
 | 
						||
 | 
						||
if not IS_LOCAL_STORAGE:
 | 
						||
    from zproject.configured_settings import S3_AUTH_UPLOADS_BUCKET, S3_REGION
 | 
						||
 | 
						||
    TC_AWS_REGION = S3_REGION  # AWS Region
 | 
						||
 | 
						||
    TC_AWS_STORAGE_BUCKET = S3_AUTH_UPLOADS_BUCKET  # S3 bucket for Storage
 | 
						||
    TC_AWS_STORAGE_ROOT_PATH = 'thumbnails'  # S3 path prefix for Storage bucket
 | 
						||
 | 
						||
    TC_AWS_LOADER_BUCKET = S3_AUTH_UPLOADS_BUCKET  # S3 bucket for loader
 | 
						||
    TC_AWS_LOADER_ROOT_PATH = ''  # S3 path prefix for Loader bucket
 | 
						||
 | 
						||
    TC_AWS_RESULT_STORAGE_BUCKET = S3_AUTH_UPLOADS_BUCKET  # S3 bucket for result Storage
 | 
						||
    TC_AWS_RESULT_STORAGE_ROOT_PATH = 'thumbnails'  # S3 path prefix for Result storage bucket
 | 
						||
 | 
						||
TC_AWS_MAX_RETRY = 0  # Max retries for get image from S3 Bucket. Default is 0
 | 
						||
 | 
						||
# put data into S3 using the Server Side Encryption functionality to
 | 
						||
# encrypt data at rest in S3
 | 
						||
# https://aws.amazon.com/about-aws/whats-new/2011/10/04/amazon-s3-announces-server-side-encryption-support/
 | 
						||
TC_AWS_STORAGE_SSE = False
 | 
						||
 | 
						||
# put data into S3 with Reduced Redundancy
 | 
						||
# https://aws.amazon.com/about-aws/whats-new/2010/05/19/announcing-amazon-s3-reduced-redundancy-storage/
 | 
						||
TC_AWS_STORAGE_RRS = False
 | 
						||
 | 
						||
 | 
						||
# Enable HTTP Loader as well?
 | 
						||
# This would allow you to load watermarks in over your images dynamically through a URI
 | 
						||
# E.g.
 | 
						||
# http://your-thumbor.com/unsafe/filters:watermark(http://example.com/watermark.png,0,0,50)/s3_bucket/photo.jpg
 | 
						||
TC_AWS_ENABLE_HTTP_LOADER = False
 | 
						||
 | 
						||
TC_AWS_ALLOWED_BUCKETS = False  # List of allowed bucket to be requested
 | 
						||
TC_AWS_STORE_METADATA = False  # Store result with metadata (for instance content-type)
 | 
						||
 | 
						||
################################################################################
 | 
						||
 | 
						||
 | 
						||
# You can override settings in zthumbor/thumbor_local_settings.py
 | 
						||
try:
 | 
						||
    from zthumbor.thumbor_local_settings import *
 | 
						||
except ImportError:
 | 
						||
    pass
 |