773 lines
23 KiB
YAML
773 lines
23 KiB
YAML
# WARNING: DO NOT EDIT THIS FILE (unless you are changing the underlying code)
|
|
# Instead, create a file called local.yml in the same place,
|
|
# copy any sections you want to change to it, and edit them there.
|
|
|
|
# Your secret key for verifying cookie session data integrity.
|
|
# If you change this key, all old sessions will become invalid!
|
|
# Make sure the secret is at least 30 characters and all random,
|
|
# no regular words or you'll be exposed to dictionary attacks.
|
|
|
|
# do not use the defaults in production!
|
|
SESSION_KEY: '_otwarchive_session'
|
|
SESSION_SECRET: '898f6d0363863ec79d782238cd1c5767636d712cc0d138238bcd5bfc9d2672fb852380050e52c03a0401175d909c09dba48512a119d46b126a84c2dd05716eb5'
|
|
|
|
DEFAULT_SESSION_LENGTH_IN_WEEKS: 2
|
|
REMEMBERED_SESSION_LENGTH_IN_MONTHS: 3
|
|
|
|
# This length is hardcoded into the reset_password_instructions email message,
|
|
# defined in config/locales/mailers/en.yml. If you change this value, you should
|
|
# also change the message (and vice versa).
|
|
DAYS_UNTIL_RESET_PASSWORD_LINK_EXPIRES: 7
|
|
|
|
# This also affects the link included in the admin account creation email.
|
|
DAYS_UNTIL_ADMIN_RESET_PASSWORD_LINK_EXPIRES: 5
|
|
|
|
# If more than PASSWORD_RESET_LIMIT password reset emails are sent within
|
|
# PASSWORD_RESET_COOLDOWN_HOURS time, then password resets for that user
|
|
# will be prevented until PASSWORD_RESET_COOLDOWN_HOURS after the last
|
|
# password reset.
|
|
PASSWORD_RESET_LIMIT: 3
|
|
PASSWORD_RESET_COOLDOWN_HOURS: 12
|
|
|
|
# email addresses
|
|
RETURN_ADDRESS: 'do-not-reply@example.org'
|
|
SPAM_ALERT_ADDRESS: 'abuse-discuss@example.org'
|
|
SPAM_THRESHOLD: 15
|
|
ADMIN_ADDRESS: 'admin@example.org'
|
|
TAG_WRANGLER_SUPERVISORS_ADDRESS: 'tagwranglers-personnel@example.org'
|
|
|
|
# Because the default email addresses are fake,
|
|
# email delivery is turned off by default, even for production.
|
|
# The log file will nonetheless show "Sent mail:"
|
|
#
|
|
# Note that this is independent from whether the scheduled email-sending
|
|
# tasks will be run -- to make changes to that, please see schedule.rb
|
|
# and your deploy file.
|
|
PERFORM_DELIVERIES: false
|
|
|
|
# email server
|
|
SMTP_SERVER: localhost
|
|
SMTP_PORT: 25
|
|
SMTP_DOMAIN: localhost
|
|
SMTP_OPENSSL_VERIFY_MODE: none
|
|
SMTP_ENABLE_STARTTLS_AUTO: false
|
|
SMTP_ENABLE_STARTTLS: false
|
|
# if required for email authentication
|
|
#SMTP_USER:
|
|
#SMTP_PASSWORD:
|
|
#SMTP_AUTHENTICATION: # :plain, :login or :cram_md5
|
|
|
|
# Branding
|
|
APP_URL: 'http://www.example.org'
|
|
APP_NAME: 'Example Archive'
|
|
APP_HOST: 'archiveofourown.org'
|
|
APP_SHORT_NAME: 'AO3'
|
|
LOGO: 'logo.png'
|
|
ALT_LOGO: 'Archive of Our Own'
|
|
OTWLOGO: 'OTWLogo.png'
|
|
OTWALT_LOGO: 'OTW Logo:closing the circle of the copyright symbol, it symbolizes our creative engagement with media: participating and not just consuming.'
|
|
REVISION: ''
|
|
ES_URL: 'http://127.0.0.1:9400'
|
|
MEMCACHED_SERVERS: '127.0.0.1:11211'
|
|
ZOHO_URL: 'https://desk.zoho.com'
|
|
|
|
# tag settings
|
|
DELIMITER_FOR_INPUT: ',' # if you change this, you will need to change
|
|
# validates_format_of :name, in app/models/tag.rb
|
|
DELIMITER_FOR_OUTPUT: ', '
|
|
|
|
# accounts and invitations
|
|
# these can be overridden in the admin controller
|
|
INVITE_FROM_QUEUE_ENABLED: true
|
|
INVITE_FROM_QUEUE_NUMBER: 10
|
|
# How often INVITE_FROM_QUEUE_NUMBER of invites are sent from the queue, in hours
|
|
INVITE_FROM_QUEUE_FREQUENCY: 12
|
|
|
|
HOURS_BEFORE_RESEND_INVITATION: 24
|
|
# this is whether or not people without invitations can create accounts
|
|
ACCOUNT_CREATION_ENABLED: false
|
|
DAYS_TO_CONFIRM_EMAIL_CHANGE: 7
|
|
# number of invites users can request
|
|
MAX_USER_INVITE_REQUEST: 10
|
|
# number of accounts users can block
|
|
MAX_BLOCKED_USERS: 2000
|
|
# number of accounts users can mute
|
|
MAX_MUTED_USERS: 2000
|
|
|
|
# this determines how long we keep processed results like tag set nominations in redis
|
|
DAYS_TO_SAVE_PROCESSED: 56
|
|
|
|
# validation values -- max/min lengths
|
|
TITLE_MAX: 255
|
|
TITLE_MIN: 1
|
|
SUMMARY_MAX: 1250
|
|
NOTES_MAX: 5000
|
|
COMMENT_MAX: 10000
|
|
TAG_MAX: 150
|
|
CONTENT_MIN: 10
|
|
CONTENT_MAX: 510000
|
|
CONTENT_MAX_DISPLAYED: 500000
|
|
LOGNOTE_MIN: 5
|
|
LOGNOTE_MAX: 1250
|
|
FEEDBACK_SUMMARY_MAX_DISPLAYED: 100
|
|
FEEDBACK_SUMMARY_MAX: 107
|
|
INFO_MAX: 100000
|
|
FAQ_MAX: 200000
|
|
ICON_ALT_MAX: 250
|
|
ICON_COMMENT_MAX: 50
|
|
ICON_SIZE_KB_MAX: 500
|
|
LOGIN_LENGTH_MIN: 3
|
|
LOGIN_LENGTH_MAX: 40
|
|
PASSWORD_LENGTH_MIN: 6
|
|
PASSWORD_LENGTH_MAX: 40
|
|
ADMIN_PASSWORD_LENGTH_MIN: 10
|
|
ADMIN_PASSWORD_LENGTH_MAX: 40
|
|
|
|
# The maximum number of tags you can add to a collection
|
|
COLLECTION_TAGS_MAX: 10
|
|
|
|
# The maximum number of user-defined tags you can add to a work or external work
|
|
USER_DEFINED_TAGS_MAX: 75
|
|
|
|
# max number of tags of each type allowed in challenge prompts (requests/offers)
|
|
# increasing this number can lead to slower automated matching
|
|
PROMPT_TAGS_MAX: 20
|
|
|
|
# max number of potential matches to generate
|
|
POTENTIAL_MATCHES_MAX: 50
|
|
# min number of potential matches to allow
|
|
POTENTIAL_MATCHES_MIN: 10
|
|
# max percentage of participants to match
|
|
POTENTIAL_MATCHES_PERCENT: 10
|
|
|
|
# These options control the number of tags we'd ideally like to see in each tag
|
|
# type in a gift exchange, in order to ensure that indexing on that type (to
|
|
# speed up matching) will yield good results. The number scales with the number
|
|
# of signups (using the divisor), but is capped at the maximum. Increasing the
|
|
# maximum (and decreasing the divisor) will cause the preprocessing step to
|
|
# take somewhat longer.
|
|
PREPROCESS_COUNT_TAGS_DIVISOR: 10
|
|
PREPROCESS_COUNT_TAGS_MAX: 10
|
|
|
|
# These options control how many prompts with "any_#{type}" an exchange can
|
|
# have before we consider that tag type to be difficult to index on.
|
|
PREPROCESS_COUNT_ANY_DIVISOR: 10
|
|
PREPROCESS_COUNT_ANY_MIN: 10
|
|
|
|
# max number of prompts of each type (offer, request) allowed
|
|
PROMPTS_MAX: 10
|
|
# max for prompt memes (can be much higher than for gift exchanges, as there is no matching)
|
|
PROMPT_MEME_PROMPTS_MAX: 50
|
|
|
|
|
|
# max number of works/chapters that can be imported
|
|
IMPORT_MAX_WORKS: 25
|
|
IMPORT_MAX_CHAPTERS: 200
|
|
IMPORT_MAX_WORKS_BY_ARCHIVIST: 200
|
|
|
|
# max number of abuse reports to accept for a given user profile URL
|
|
ABUSE_REPORTS_PER_USER_MAX: 5
|
|
# max number of abuse reports to accept for a given work URL
|
|
ABUSE_REPORTS_PER_WORK_MAX: 5
|
|
# max number of abuse reports to accept from a given email
|
|
ABUSE_REPORTS_PER_EMAIL_MAX: 5
|
|
|
|
# number of items in various displays
|
|
ITEMS_PER_PAGE: 25
|
|
# must be less than ITEMS_PER_PAGE above
|
|
NUMBER_OF_ITEMS_VISIBLE_IN_DASHBOARD: 5
|
|
NUMBER_OF_ITEMS_VISIBLE_ON_HOMEPAGE: 3
|
|
COMMENT_THREAD_MAX_DEPTH: 5
|
|
TAGS_IN_CLOUD: 200
|
|
TAG_LIST_LIMIT: 300
|
|
# how many options there should be before we show a scrollable window, and how many there
|
|
# can be before we just use an autocomplete instead
|
|
OPTIONS_TO_SHOW: 3
|
|
MAX_OPTIONS_TO_SHOW: 20
|
|
MAX_KUDOS_TO_SHOW: 50
|
|
MAX_FAVORITE_TAGS: 20
|
|
|
|
# Used by Rack Attack, periods are measured in seconds
|
|
RATE_LIMIT_NUMBER: 300
|
|
RATE_LIMIT_PERIOD: 300
|
|
RATE_LIMIT_LOGIN_ATTEMPTS: 5
|
|
RATE_LIMIT_LOGIN_PERIOD: 20
|
|
RATE_LIMIT_ADMIN_LOGIN_ATTEMPTS: 10
|
|
RATE_LIMIT_ADMIN_LOGIN_PERIOD: 300
|
|
RATE_LIMIT_PER_NGINX_UPSTREAM:
|
|
unicorn_elastic:
|
|
limit: 300
|
|
period: 300
|
|
unicorn_elastic_bookmarks:
|
|
limit: 300
|
|
period: 300
|
|
RATE_LIMIT_PER_NGINX_UPSTREAM_USER:
|
|
unicorn_elastic:
|
|
limit: 300
|
|
period: 300
|
|
RATE_LIMIT_SAFELIST: ["127.0.0.0/8", "10.0.0.0/8"]
|
|
|
|
# The number of tags to show on the search page:
|
|
TAGS_PER_SEARCH_PAGE: 50
|
|
|
|
# When updating tag counts, how many to do in one TagCountUpdateJob:
|
|
TAG_UPDATE_JOB_SIZE: 1000
|
|
|
|
# When updating tag counts, how many to do in one transaction:
|
|
TAG_UPDATE_BATCH_SIZE: 100
|
|
|
|
# We only start caching tag counts for tags used more than a certain number of times
|
|
TAGGINGS_COUNT_MIN_CACHE_COUNT: 1000
|
|
|
|
# For tagging changes, we only reindex tags used less than a certain number of times
|
|
TAGGINGS_COUNT_REINDEX_LIMIT: 1000
|
|
|
|
# how many signups in a challenge before we move to static summaries generated hourly
|
|
MAX_SIGNUPS_FOR_LIVE_SUMMARY: 20
|
|
|
|
DOWNLOAD_FORMATS: ['azw3', 'epub', 'mobi', 'pdf', 'html']
|
|
|
|
# Tag kinds and default tags
|
|
WARNING_CATEGORY_NAME: 'Archive Warning'
|
|
WARNING_DEFAULT_TAG_NAME: 'Choose Not To Use Archive Warnings'
|
|
WARNING_DEFAULT_TAG_DISPLAY_NAME: 'Creator Chose Not To Use Archive Warnings'
|
|
WARNING_NONE_TAG_NAME: 'No Archive Warnings Apply'
|
|
WARNING_NONE_TAG_DISPLAY_NAME: 'No Archive Warnings Apply'
|
|
WARNING_VIOLENCE_TAG_NAME: 'Graphic Depictions Of Violence'
|
|
WARNING_DEATH_TAG_NAME: 'Major Character Death'
|
|
WARNING_NONCON_TAG_NAME: 'Rape/Non-Con'
|
|
WARNING_CHAN_TAG_NAME: 'Underage Sex'
|
|
|
|
RATING_CATEGORY_NAME: 'Rating'
|
|
RATING_DEFAULT_TAG_NAME: 'Not Rated'
|
|
RATING_EXPLICIT_TAG_NAME: 'Explicit'
|
|
RATING_MATURE_TAG_NAME: 'Mature'
|
|
RATING_TEEN_TAG_NAME: 'Teen And Up Audiences'
|
|
RATING_GENERAL_TAG_NAME: 'General Audiences'
|
|
|
|
CATEGORY_CATEGORY_NAME: 'Category'
|
|
CATEGORY_GEN_TAG_NAME: 'Gen'
|
|
CATEGORY_HET_TAG_NAME: 'F/M'
|
|
CATEGORY_SLASH_TAG_NAME: 'M/M'
|
|
CATEGORY_FEMSLASH_TAG_NAME: 'F/F'
|
|
CATEGORY_MULTI_TAG_NAME: 'Multi'
|
|
CATEGORY_OTHER_TAG_NAME: 'Other'
|
|
|
|
MEDIA_CATEGORY_NAME: 'Media'
|
|
MEDIA_NO_TAG_NAME: 'No Media'
|
|
MEDIA_UNCATEGORIZED_NAME: 'Uncategorized Fandoms'
|
|
FANDOM_CATEGORY_NAME: 'Fandom'
|
|
FANDOM_NO_TAG_NAME: 'No Fandom'
|
|
RELATIONSHIP_CATEGORY_NAME: 'Relationship'
|
|
CHARACTER_CATEGORY_NAME: 'Character'
|
|
FREEFORM_CATEGORY_NAME: 'Additional Tags'
|
|
COMMON_CATEGORY_NAME: 'Common'
|
|
BANNED_CATEGORY_NAME: 'Banned'
|
|
|
|
# DATE TIME FORMAT see http://ruby-doc.org/core/classes/Time.html#M000392
|
|
DEFAULT_DATETIME_FORMAT: '%Y-%m-%d %I:%M%p'
|
|
|
|
# SEARCH TIPS
|
|
SEARCH_TIPS: ['arthur merlin words>1000 sort:hits', 'words:100', 'buffy gen teen AND "no archive warnings apply"', 'lex m/m (mature OR explicit)',
|
|
'hetalia f/f sort:kudos', '"sherlock (tv)" m/m NOT "sherlock holmes/john watson"', 'austen words:10000-50000 sort:title',
|
|
'katekyou "alternate universe" sort:>words', '"uchiha sasuke/uzumaki naruto" angst kudos>10'
|
|
]
|
|
|
|
# This is used to determine how many recent items
|
|
# to cache for recent lookups -- eg if we want to
|
|
# provide a "ten most recent" items to browse.
|
|
# used in CacheFinds module -- include CacheFinds in a model
|
|
# and the methods Model.recent and Model.last(#) will be
|
|
# enabled, cached on production/test environments.
|
|
MAX_RECENT: 20
|
|
|
|
# This determines the maximum value of (from + size) for searches
|
|
# to all indices (Elasticsearch index setting max_result_window).
|
|
# If a search has more results than this limit, the last page of
|
|
# search results will include a message advising the user to narrow
|
|
# their search or change their sorting options.
|
|
MAX_SEARCH_RESULTS: 100000
|
|
|
|
# This is used to determine how many works or how many authors have to be
|
|
# present in order for anonymous or mystery works to begin being displayed
|
|
ANONYMOUS_THRESHOLD_COUNT: 10
|
|
|
|
# This is used to determine how tolerant of changes to be when determining
|
|
# whether a comment should go back into moderation after editing or not
|
|
COMMENT_MODERATION_THRESHOLD: 10
|
|
|
|
# This is used to determine how tolerant of changes to be when determining
|
|
# whether a comment should be spam checked again when edited
|
|
EDITED_COMMENT_SPAM_CHECK_THRESHOLD: 10
|
|
|
|
# SANITIZER VERSION
|
|
SANITIZER_VERSION: 4
|
|
|
|
# parameters that must be natural integers and their default values
|
|
NONZERO_INTEGER_PARAMETERS:
|
|
page: 1
|
|
per_page: 25
|
|
|
|
# Enable image safety mode when sanitizing comments on the following parents for
|
|
# display. This is the parent_type of the comment, not the ultimate_parent,
|
|
# so if you want to add extra sanitization to work comments, use Chapter here.
|
|
# Options: AdminPost, Chapter, Tag.
|
|
PARENTS_WITH_IMAGE_SAFETY_MODE: []
|
|
|
|
# These fields are encrypted and should not have characters escaped or be treated as HTML
|
|
FIELDS_WITHOUT_SANITIZATION: ["password", "password_check", "password_confirmation"]
|
|
|
|
# These fields are query fields and are allowed to contain "less than" values
|
|
FIELDS_ALLOWING_LESS_THAN: ["query", "words", "kudos", "hits", "date", "bookmarkable_date", "word_count", "bookmarks_count", "comments_count", "kudos_count", "revised_at"]
|
|
|
|
# Only the following fields are allowed to have HTML. In others, all HTML tags
|
|
# will be stripped by the "sanitize_ac_params" filter.
|
|
#
|
|
# The exact HTML tags and attributes and protocols allowed are defined in:
|
|
# - config/initializers/gem-plugin_config/sanitizer_config.rb
|
|
# - lib/html_cleaner.rb
|
|
#
|
|
# If you add a new field to this list, you need to:
|
|
#
|
|
# - make sure every model containing the field also has a matching field "[fieldname]_sanitizer_version", e.g.
|
|
# add_column :chapters, :content_sanitizer_version, :integer, default: 0, null: false, limit: 2
|
|
#
|
|
# - make sure the field is NOT permitted for mass updating (by not including it in params.permit calls)
|
|
#
|
|
# - display the field in views using the HtmlCleaner helper, e.g.
|
|
# <%=raw sanitize_field(object, :fieldname) %>
|
|
#
|
|
# This will ensure that the field has been sanitized with the latest version of the sanitizer.
|
|
FIELDS_ALLOWING_HTML: ["about_me", "bookmarker_notes", "comment", "comment_content", "content", "description", "disabled_support_form_text", "endnotes", "faq", "intro", "notes",
|
|
"rules", "series_notes", "signup_instructions_general", "signup_instructions_offers", "signup_instructions_requests", "summary"]
|
|
|
|
FIELDS_ALLOWING_HTML_ENTITIES: ["title"]
|
|
|
|
FIELDS_ALLOWING_MEDIA_EMBEDS: ["content"]
|
|
|
|
FIELDS_ALLOWING_CSS: ["content", "endnotes", "notes"]
|
|
|
|
# Domains that are not allowed be used as the src for audio and video HTML tags.
|
|
# Format: ["google.com", "archiveofourown.org"]
|
|
BANNED_MULTIMEDIA_SRCS: []
|
|
|
|
# Allowed CSS
|
|
#
|
|
# *** IMPORTANT: if you edit these values please also update the
|
|
# skins-creating.html file in public/help ***
|
|
#
|
|
# the following properties and keywords will be ADDED to the default set allowed
|
|
# in user-submitted CSS code, along with:
|
|
# - hex and rgb color values
|
|
# - numeric values specified with percentages or cm|em|ex|in|mm|pc|pt|px|%
|
|
# - image files specified with url(http://image.url/blahblah/whatever.(jpg|png|gif))
|
|
#
|
|
|
|
# We use this list for properties which can take shorthand values and also have
|
|
# subproperties or variants (ie, because "border" is in here, we allow through:
|
|
# border-right, border-bottom-left-radius, -moz-border-foo, etc)
|
|
# It is slightly less secure so do NOT put any property in here if you aren't
|
|
# sure all variations on it are okay!
|
|
SUPPORTED_CSS_SHORTHAND_PROPERTIES:
|
|
- background
|
|
- border
|
|
- column
|
|
- cue
|
|
- flex
|
|
- font
|
|
- layer-background
|
|
- layout-grid
|
|
- list-style
|
|
- margin
|
|
- marker
|
|
- outline
|
|
- overflow
|
|
- padding
|
|
- page-break
|
|
- pause
|
|
- scrollbar
|
|
- text
|
|
- transform
|
|
- transition
|
|
|
|
SUPPORTED_CSS_PROPERTIES:
|
|
- -replace
|
|
- -use-link-source
|
|
- accelerator
|
|
- accent-color
|
|
- align-content
|
|
- align-items
|
|
- align-self
|
|
- alignment-adjust
|
|
- alignment-baseline
|
|
- appearance
|
|
- azimuth
|
|
- baseline-shift
|
|
- behavior
|
|
- binding
|
|
- bookmark-label
|
|
- bookmark-level
|
|
- bookmark-target
|
|
- bottom
|
|
- box-align
|
|
- box-direction
|
|
- box-flex
|
|
- box-flex-group
|
|
- box-lines
|
|
- box-orient
|
|
- box-pack
|
|
- box-shadow
|
|
- box-sizing
|
|
- caption-side
|
|
- clear
|
|
- clip
|
|
- color
|
|
- color-profile
|
|
- color-scheme
|
|
- content
|
|
- counter-increment
|
|
- counter-reset
|
|
- crop
|
|
- cue
|
|
- cue-after
|
|
- cue-before
|
|
- cursor
|
|
- direction
|
|
- display
|
|
- dominant-baseline
|
|
- drop-initial-after-adjust
|
|
- drop-initial-after-align
|
|
- drop-initial-before-adjust
|
|
- drop-initial-before-align
|
|
- drop-initial-size
|
|
- drop-initial-value
|
|
- elevation
|
|
- empty-cells
|
|
- filter
|
|
- fit
|
|
- fit-position
|
|
- float
|
|
- float-offset
|
|
- font
|
|
- font-effect
|
|
- font-emphasize
|
|
- font-emphasize-position
|
|
- font-emphasize-style
|
|
- font-family
|
|
- font-size
|
|
- font-size-adjust
|
|
- font-smooth
|
|
- font-stretch
|
|
- font-style
|
|
- font-variant
|
|
- font-weight
|
|
- grid-columns
|
|
- grid-rows
|
|
- hanging-punctuation
|
|
- height
|
|
- hyphenate-after
|
|
- hyphenate-before
|
|
- hyphenate-character
|
|
- hyphenate-lines
|
|
- hyphenate-resource
|
|
- hyphens
|
|
- icon
|
|
- image-orientation
|
|
- image-resolution
|
|
- ime-mode
|
|
- include-source
|
|
- inline-box-align
|
|
- justify-content
|
|
- layout-flow
|
|
- left
|
|
- letter-spacing
|
|
- line-break
|
|
- line-height
|
|
- line-stacking
|
|
- line-stacking-ruby
|
|
- line-stacking-shift
|
|
- line-stacking-strategy
|
|
- mark
|
|
- mark-after
|
|
- mark-before
|
|
- marks
|
|
- marquee-direction
|
|
- marquee-play-count
|
|
- marquee-speed
|
|
- marquee-style
|
|
- max-height
|
|
- max-width
|
|
- min-height
|
|
- min-width
|
|
- move-to
|
|
- nav-down
|
|
- nav-index
|
|
- nav-left
|
|
- nav-right
|
|
- nav-up
|
|
- opacity
|
|
- order
|
|
- orphans
|
|
- page
|
|
- page-policy
|
|
- phonemes
|
|
- pitch
|
|
- pitch-range
|
|
- play-during
|
|
- position
|
|
- presentation-level
|
|
- punctuation-trim
|
|
- quotes
|
|
- rendering-intent
|
|
- resize
|
|
- rest
|
|
- rest-after
|
|
- rest-before
|
|
- richness
|
|
- right
|
|
- rotation
|
|
- rotation-point
|
|
- ruby-align
|
|
- ruby-overhang
|
|
- ruby-position
|
|
- ruby-span
|
|
- size
|
|
- speak
|
|
- speak-header
|
|
- speak-numeral
|
|
- speak-punctuation
|
|
- speech-rate
|
|
- stress
|
|
- string-set
|
|
- tab-side
|
|
- table-layout
|
|
- target
|
|
- target-name
|
|
- target-new
|
|
- target-position
|
|
- top
|
|
- unicode-bibi
|
|
- unicode-bidi
|
|
- user-select
|
|
- vertical-align
|
|
- visibility
|
|
- voice-balance
|
|
- voice-duration
|
|
- voice-family
|
|
- voice-pitch
|
|
- voice-pitch-range
|
|
- voice-rate
|
|
- voice-stress
|
|
- voice-volume
|
|
- volume
|
|
- white-space
|
|
- white-space-collapse
|
|
- widows
|
|
- width
|
|
- word-break
|
|
- word-spacing
|
|
- word-wrap
|
|
- writing-mode
|
|
- z-index
|
|
|
|
# We allow the !important keyword as well as any string that is just a-z plus
|
|
# dashes, as well as space- or comma-separated lists of such strings. The only
|
|
# keywords you need to specify are keywords that contain other characters.
|
|
#
|
|
# We have the URL_FUNCTION_REGEX in lib/css_cleaner.rb, but including "url" here
|
|
# is necessary to prevent the url() function from being stripped before any
|
|
# value containing it is sanitized. Allowing images in skins should be moved to
|
|
# its own config variable in the future.
|
|
#
|
|
# Do not add other functions here; they are not keywords and are controlled by
|
|
# regular expressions in lib/css_cleaner.rb.
|
|
SUPPORTED_CSS_KEYWORDS: ["!important", "url"]
|
|
|
|
# if you include "url" in the SUPPORTED_CSS_KEYWORDS, only urls pointing to this
|
|
# kind of resource will be allowed
|
|
SUPPORTED_EXTERNAL_URLS: ["jpg", "jpeg", "png", "gif"]
|
|
|
|
# variables for Askimet http://akismet.com/
|
|
AKISMET_KEY: '6833ee7298cf'
|
|
AKISMET_NAME: 'http://transformativeworks.org'
|
|
|
|
# Abuse and Support ticket trackers; you may need to change
|
|
# feedbacks_controller.rb and abuse_reports_controller.rb
|
|
# to properly send to your own ticket tracker.
|
|
#
|
|
# - Register a new client at Zoho's Developer Console, whatever you fill into "Authorized redirect URIs"
|
|
# is ZOHO_REDIRECT_URI.
|
|
# - Upon registering, you receive ZOHO_CLIENT_ID and ZOHO_CLIENT_SECRET.
|
|
# - Upon requesting an "offline" authorization grant, you receive ZOHO_REFRESH_TOKEN.
|
|
ZOHO_CLIENT_ID: ""
|
|
ZOHO_CLIENT_SECRET: ""
|
|
ZOHO_REDIRECT_URI: ""
|
|
ZOHO_REFRESH_TOKEN: ""
|
|
ZOHO_ORG_ID: ""
|
|
ABUSE_ZOHO_DEPARTMENT_ID: ""
|
|
SUPPORT_ZOHO_DEPARTMENT_ID: ""
|
|
|
|
DEFAULT_LANGUAGE_SHORT: 'en'
|
|
DEFAULT_LANGUAGE_NAME: 'English'
|
|
DEFAULT_LOCALE_ISO: 'en'
|
|
DEFAULT_LOCALE_NAME: 'English (US)'
|
|
|
|
# Allow orphaninig
|
|
ORPHANING_ALLOWED: true
|
|
|
|
# Help directory, must be in the public folder.
|
|
# Create subfolders for each supported language
|
|
# (eg, /help/fr/ contains the French versions of the help)
|
|
HELP_DIRECTORY: '/help'
|
|
|
|
# production caching
|
|
#PRODUCTION_CACHE: "memory"
|
|
PRODUCTION_CACHE: "memcache"
|
|
|
|
# TTL in seconds for cached work and bookmark counts on user/pseud dashboards.
|
|
# Default to 20 minutes.
|
|
SECONDS_UNTIL_DASHBOARD_COUNTS_EXPIRE: 1200
|
|
|
|
# how many cache pages to expire for a tag/collection/pseud when a work is updated or deleted
|
|
PAGES_TO_CACHE: 5
|
|
|
|
# Turn this off in local.yml to keep the development footer/profiling code from running
|
|
DEVELOPMENT_PROFILING_ENABLED: true
|
|
|
|
|
|
# These are the actions logged in the user history - the log_items table
|
|
ACTION_ACTIVATE: 0
|
|
ACTION_ADD_ROLE: 1
|
|
ACTION_REMOVE_ROLE: 2
|
|
ACTION_SUSPEND: 3
|
|
ACTION_UNSUSPEND: 4
|
|
ACTION_BAN: 5
|
|
ACTION_WARN: 6
|
|
ACTION_RENAME: 7
|
|
ACTION_PASSWORD_CHANGE: 8
|
|
ACTION_NEW_EMAIL: 9
|
|
ACTION_TROUBLESHOOT: 10
|
|
ACTION_NOTE: 11
|
|
ACTION_ADD_FNOK: 12
|
|
ACTION_REMOVE_FNOK: 13
|
|
ACTION_ADDED_AS_FNOK: 14
|
|
ACTION_REMOVED_AS_FNOK: 15
|
|
ACTION_PASSWORD_RESET: 16
|
|
|
|
|
|
# Elasticsearch index prefix
|
|
# If you're using webdev or another shared environment, change this to include
|
|
# your username (e.g. ao3_testy) to ensure all users have separate search
|
|
# indexes
|
|
ELASTICSEARCH_PREFIX: 'ao3'
|
|
|
|
|
|
# List of Unicode scripts where spaces are not used as separators, and
|
|
# character counts should be used for word counts.
|
|
# Check if a script is supported by the version of Ruby we use:
|
|
# https://ruby-doc.org/core/Regexp.html#class-Regexp-label-Character+Properties
|
|
CHARACTER_COUNT_SCRIPTS: ["Han", "Hiragana", "Katakana", "Thai"]
|
|
|
|
|
|
# Cache durations for work and bookmark searches (in seconds)
|
|
SECONDS_UNTIL_WORK_INDEX_EXPIRE: 1800
|
|
SECONDS_UNTIL_BOOKMARK_INDEX_EXPIRE: 1800
|
|
|
|
# Cache duration for commentable kudos list of names
|
|
MINUTES_UNTIL_COMMENTABLE_KUDOS_LISTS_EXPIRE: 60
|
|
|
|
# Cache duration for comment counts:
|
|
SECONDS_UNTIL_COMMENT_COUNTS_EXPIRE: 3600
|
|
|
|
# Cache duration for various collection-related counts (# of works, # of
|
|
# bookmarks, # of fandoms):
|
|
SECONDS_UNTIL_COLLECTION_COUNTS_EXPIRE: 300
|
|
|
|
# Cache durations for work and bookmark searches (in minutes)
|
|
MINUTES_UNTIL_COLLECTION_BLURBS_EXPIRE: 120
|
|
|
|
# Job size used for the HitCountUpdateJob class:
|
|
HIT_COUNT_JOB_SIZE: 1000
|
|
|
|
# Batch size used for the HitCountUpdateJob class:
|
|
HIT_COUNT_BATCH_SIZE: 100
|
|
|
|
# The hour (in UTC time) that we want the hit counts to rollover at. If someone
|
|
# views the work shortly before this hour and shortly after, it should count as
|
|
# two hits. Used by the RedisHitCounter class.
|
|
HIT_COUNT_ROLLOVER_HOUR: 3
|
|
|
|
# The batch size for calculating a work's filters from its tags:
|
|
FILTER_UPDATE_BATCH_SIZE: 100
|
|
|
|
# URLs for which we should not display the proxy notice. URLs from these hosts
|
|
# are allowed in Abuse reports and disallowed in Work imports. Alphabetical by
|
|
# environment.
|
|
PERMITTED_HOSTS: [
|
|
# Production
|
|
"104.153.64.122",
|
|
"208.85.241.152",
|
|
"208.85.241.157",
|
|
"ao3.org",
|
|
"archiveofourown.com",
|
|
"archiveofourown.net",
|
|
"archiveofourown.org",
|
|
"download.archiveofourown.org",
|
|
"insecure.archiveofourown.org",
|
|
"secure.archiveofourown.org",
|
|
"www.ao3.org",
|
|
"www.archiveofourown.com",
|
|
"www.archiveofourown.net",
|
|
"www.archiveofourown.org",
|
|
# Staging
|
|
"insecure-test.archiveofourown.org",
|
|
"test.archiveofourown.org",
|
|
"testdownload.archiveofourown.org"
|
|
]
|
|
|
|
USER_RENAME_LIMIT_DAYS: 7
|
|
|
|
# The number of readings to include in a single ReadingsJob:
|
|
READING_JOB_SIZE: 5000
|
|
|
|
# The number of readings to change in a single transaction:
|
|
READING_BATCH_SIZE: 100
|
|
|
|
# The number of work IDs to include in a single StatCounterJob:
|
|
STAT_COUNTER_JOB_SIZE: 1000
|
|
|
|
# The number of works to fetch from the database in one query when updating stat counters:
|
|
STAT_COUNTER_BATCH_SIZE: 100
|
|
|
|
# Number of hours to retain the original creator for works that have been
|
|
# orphaned.
|
|
ORIGINAL_CREATOR_TTL_HOURS: 72
|
|
|
|
# The maximum number of tags to provide in a tag wrangling report.
|
|
WRANGLING_REPORT_LIMIT: 1000
|
|
|
|
# The number of days after which an Admin Post should allow comments.
|
|
# After this window, all comments are disabled. Setting this value to
|
|
# something below 1 -- or commenting it out -- will turn off comment disabling.
|
|
ADMIN_POST_COMMENTING_EXPIRATION_DAYS: 14
|
|
|
|
# Usernames in this list are not allowed to avoid potential confusion (like
|
|
# a user who has the username 'admin', for example).
|
|
FORBIDDEN_USERNAMES: []
|
|
|
|
# The arguments to pass to pt-online-schema-change:
|
|
PERCONA_ARGS: >
|
|
--chunk-size=5k
|
|
--max-flow-ctl 0
|
|
--pause-file /tmp/pauseme
|
|
--max-load Threads_running=15
|
|
--critical-load Threads_running=100
|
|
--set-vars innodb_lock_wait_timeout=2
|
|
--alter-foreign-keys-method=rebuild_constraints
|
|
--no-check-unique-key-change
|
|
|
|
# How many shards to have in elastic indexes.
|
|
# Production may have more than 5 for these
|
|
BOOKMARKABLE_SHARDS: 5
|
|
WORKS_SHARDS: 5
|
|
USER_SHARDS: 5
|