From da0c309bcb27df0bf00e54a814fc71d40e5de8c0 Mon Sep 17 00:00:00 2001 From: Dinh Date: Tue, 21 Jan 2020 11:48:04 -0600 Subject: [PATCH] add local_settings.py --- .gitignore | 2 +- dmoj/local_settings.py | 314 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 315 insertions(+), 1 deletion(-) create mode 100755 dmoj/local_settings.py diff --git a/.gitignore b/.gitignore index 9380dba..de1d76b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ *.py[co] *.mo *~ -dmoj/local_settings.py +# dmoj/local_settings.py resources/style.css resources/content-description.css resources/ranks.css diff --git a/dmoj/local_settings.py b/dmoj/local_settings.py new file mode 100755 index 0000000..607c415 --- /dev/null +++ b/dmoj/local_settings.py @@ -0,0 +1,314 @@ +##################################### +########## Django settings ########## +##################################### +# See +# for more info and help. If you are stuck, you can try Googling about +# Django - many of these settings below have external documentation about them. +# +# The settings listed here are of special interest in configuring the site. + +# SECURITY WARNING: keep the secret key used in production secret! +# You may use +# to generate this key. +SECRET_KEY = 's(8*xdlaiy4r@09cidu#)h%%iey39099g=hp(#+kzz+7vefs4u' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True # Change to False once you are done with runserver testing. + +# Uncomment and set to the domain names this site is intended to serve. +# You must do this once you set DEBUG to False. +ALLOWED_HOSTS = ['0.0.0.0'] + +# Optional apps that DMOJ can make use of. +INSTALLED_APPS += ( +) + +#path to problem folder +DMOJ_PROBLEM_DATA_ROOT = '/home/cuom1999/DMOJ/problems' + +# Caching. You can use memcached or redis instead. +# Documentation: +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache' + } +} + +# Your database credentials. Only MySQL is supported by DMOJ. +# Documentation: +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'dmoj', + 'USER': 'dmoj', + 'PASSWORD': '', + 'HOST': '127.0.0.1', + 'OPTIONS': { + 'charset': 'utf8mb4', + 'sql_mode': 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION', + }, + } +} + +# Sessions. +# Documentation: +#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' + +# Internationalization. +# Documentation: +LANGUAGE_CODE = 'en-ca' +DEFAULT_USER_TIME_ZONE = 'America/Mexico_City' +USE_I18N = True +USE_L10N = True +USE_TZ = True + +## django-compressor settings, for speeding up page load times by minifying CSS and JavaScript files. +# Documentation: https://django-compressor.readthedocs.io/en/latest/ +COMPRESS_OUTPUT_DIR = 'cache' +COMPRESS_CSS_FILTERS = [ + 'compressor.filters.css_default.CssAbsoluteFilter', + 'compressor.filters.cssmin.CSSMinFilter', +] +COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter'] +COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage' +STATICFILES_FINDERS += ('compressor.finders.CompressorFinder',) + + +######################################### +########## Email configuration ########## +######################################### +# See +# for more documentation. You should follow the information there to define +# your email settings. + +# Use this if you are just testing. +EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' + +# The following block is included for your convenience, if you want +# to use Gmail. +#EMAIL_USE_TLS = True +#EMAIL_HOST = 'smtp.gmail.com' +#EMAIL_HOST_USER = '@gmail.com' +#EMAIL_HOST_PASSWORD = '' +#EMAIL_PORT = 587 + +# To use Mailgun, uncomment this block. +# You will need to run `pip install django-mailgun` for to get `MailgunBackend`. +#EMAIL_BACKEND = 'django_mailgun.MailgunBackend' +#MAILGUN_ACCESS_KEY = '' +#MAILGUN_SERVER_NAME = '' + +# You can also use Sendgrid, with `pip install sendgrid-django`. +#EMAIL_BACKEND = 'sgbackend.SendGridBackend' +#SENDGRID_API_KEY = '' + +# The DMOJ site is able to notify administrators of errors via email, +# if configured as shown below. + +# A tuple of (name, email) pairs that specifies those who will be mailed +# when the server experiences an error when DEBUG = False. +ADMINS = ( + ('cuom1999', 'your.email@example.com'), +) + +# The sender for the aforementioned emails. +SERVER_EMAIL = 'DMOJ: Modern Online Judge ' + + +################################################## +########### Static files configuration. ########## +################################################## +# See . + +# Change this to somewhere more permanent., especially if you are using a +# webserver to serve the static files. This is the directory where all the +# static files DMOJ uses will be collected to. +# You must configure your webserver to serve this directory as /static/ in production. +STATIC_ROOT = '/home/cuom1999/DMOJ/static_root' + +# URL to access static files. +#STATIC_URL = '/static/' + +# Uncomment to use hashed filenames with the cache framework. +#STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage' + +############################################ +########## DMOJ-specific settings ########## +############################################ + +## DMOJ site display settings. +SITE_NAME = 'FOOJ' +SITE_LONG_NAME = 'FOOJ: Modern Online Judge' +SITE_ADMIN_EMAIL = 'admin@example.com' +TERMS_OF_SERVICE_URL = '//dmoj.ca/tos' # Use a flatpage. + +## Bridge controls. +# The judge connection address and port; where the judges will connect to the site. +# You should change this to something your judges can actually connect to +# (e.g., a port that is unused and unblocked by a firewall). +BRIDGED_JUDGE_ADDRESS = [('0.0.0.0', 9999)] + +# The bridged daemon bind address and port to communicate with the site. +BRIDGED_DJANGO_ADDRESS = [('localhost', 9998)] + +## DMOJ features. +# Set to True to enable full-text searching for problems. +ENABLE_FTS = True + +# Set of email providers to ban when a user registers, e.g., {'throwawaymail.com'}. +BAD_MAIL_PROVIDERS = set() + +# The number of submissions that a staff user can rejudge at once without +# requiring the permission 'Rejudge a lot of submissions'. +# Uncomment to change the submission limit. +REJUDGE_SUBMISSION_LIMIT = 10 + +## Event server. +# Uncomment to enable live updating. +# EVENT_DAEMON_USE = True + +# Uncomment this section to use websocket/daemon.js included in the site. +#EVENT_DAEMON_POST = '' + +# If you are using the defaults from the guide, it is this: +EVENT_DAEMON_POST = 'ws://127.0.0.1:15101/' + +# These are the publicly accessed interface configurations. +# They should match those used by the script. +#EVENT_DAEMON_GET = '' +#EVENT_DAEMON_GET_SSL = '' +#EVENT_DAEMON_POLL = '' +# i.e. the path to /channels/ exposed by the daemon, through whatever proxy setup you have. + +# Using our standard nginx configuration, these should be. +#EVENT_DAEMON_GET = 'ws:///event/' +#EVENT_DAEMON_GET_SSL = 'wss:///event/' # Optional +#EVENT_DAEMON_POLL = '/channels/' + +# If you would like to use the AMQP-based event server from , +# uncomment this section instead. This is more involved, and recommended to be done +# only after you have a working event server. +#EVENT_DAEMON_AMQP = '' +#EVENT_DAEMON_AMQP_EXCHANGE = '' + +## CDN control. +# Base URL for a copy of ace editor. +# Should contain ace.js, along with mode-*.js. +ACE_URL = '//cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/' +JQUERY_JS = '//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js' +SELECT2_JS_URL = '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js' +SELECT2_CSS_URL = '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css' + +# A map of Earth in Equirectangular projection, for timezone selection. +# Please try not to hotlink this poor site. +TIMEZONE_MAP = 'http://naturalearth.springercarto.com/ne3_data/8192/textures/3_no_ice_clouds_8k.jpg' + +## Camo (https://github.com/atmos/camo) usage. +#CAMO_URL = "" +#CAMO_KEY = "" + +# Domains to exclude from being camo'd. +#CAMO_EXCLUDE = ("https://dmoj.ml", "https://dmoj.ca") + +# Set to True to use https when dealing with protocol-relative URLs. +# See for what they are. +#CAMO_HTTPS = False + +# HTTPS level. Affects elements generated. +# Set to 0 to make http URLs canonical. +# Set to 1 to make the currently used protocol canonical. +# Set to 2 to make https URLs canonical. +#DMOJ_HTTPS = 0 + +## PDF rendering settings. +# Directory to cache the PDF. +# PROBLEM_PDF_CACHE = '/home/dmoj-uwsgi/pdfcache' + +# Path to use for nginx's X-Accel-Redirect feature. +# Should be an internal location mapped to the above directory. +# PROBLEM_PDF_INTERNAL = '/pdfcache' + +# Path to a PhantomJS executable. +#PHANTOMJS = '/usr/local/bin/phantomjs' + +# If you can't use PhantomJS or prefer wkhtmltopdf, set the path to wkhtmltopdf executable instead. +#WKHTMLTOPDF = '/usr/local/bin/wkhtmltopdf' + +# Note that PhantomJS is preferred over wkhtmltopdf and would be used when both are defined. + +## ======== Logging Settings ======== +# Documentation: https://docs.djangoproject.com/en/1.9/ref/settings/#logging +# https://docs.python.org/2/library/logging.config.html#logging-config-dictschema +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'file': { + 'format': '%(levelname)s %(asctime)s %(module)s %(message)s', + }, + 'simple': { + 'format': '%(levelname)s %(message)s', + }, + }, + 'handlers': { + # You may use this handler as example for logging to other files.. + 'bridge': { + 'level': 'INFO', + 'class': 'logging.handlers.RotatingFileHandler', + 'filename': '', + 'maxBytes': 10 * 1024 * 1024, + 'backupCount': 10, + 'formatter': 'file', + }, + 'mail_admins': { + 'level': 'ERROR', + 'class': 'dmoj.throttle_mail.ThrottledEmailHandler', + }, + 'console': { + 'level': 'DEBUG', + 'class': 'logging.StreamHandler', + 'formatter': 'file', + }, + }, + 'loggers': { + # Site 500 error mails. + 'django.request': { + 'handlers': ['mail_admins'], + 'level': 'ERROR', + 'propagate': False, + }, + # Judging logs as received by bridged. + 'judge.bridge': { + 'handlers': ['bridge', 'mail_admins'], + 'level': 'INFO', + 'propagate': True, + }, + # Catch all log to stderr. + '': { + 'handlers': ['console'], + }, + # Other loggers of interest. Configure at will. + # - judge.user: logs naughty user behaviours. + # - judge.problem.pdf: PDF generation log. + # - judge.html: HTML parsing errors when processing problem statements etc. + # - judge.mail.activate: logs for the reply to activate feature. + # - event_socket_server + }, +} + +## ======== Integration Settings ======== +## Python Social Auth +# Documentation: https://python-social-auth.readthedocs.io/en/latest/ +# You can define these to enable authentication through the following services. +#SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '' +#SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '' +#SOCIAL_AUTH_FACEBOOK_KEY = '' +#SOCIAL_AUTH_FACEBOOK_SECRET = '' +#SOCIAL_AUTH_GITHUB_SECURE_KEY = '' +#SOCIAL_AUTH_GITHUB_SECURE_SECRET = '' +#SOCIAL_AUTH_DROPBOX_OAUTH2_KEY = '' +#SOCIAL_AUTH_DROPBOX_OAUTH2_SECRET = '' + +## ======== Custom Configuration ======== +# You may add whatever django configuration you would like here. +# Do try to keep it separate so you can quickly patch in new settings.