2011-09-18 15:47:15 -04:00
|
|
|
require 'socket'
|
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
module Danbooru
|
|
|
|
class Configuration
|
|
|
|
# The version of this Danbooru.
|
|
|
|
def version
|
2016-08-11 17:16:19 -04:00
|
|
|
"2.105.0"
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# The name of this Danbooru.
|
|
|
|
def app_name
|
2014-10-28 14:05:21 -04:00
|
|
|
if CurrentUser.safe_mode?
|
|
|
|
"Safebooru"
|
|
|
|
else
|
|
|
|
"Danbooru"
|
|
|
|
end
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2016-02-09 17:25:23 -05:00
|
|
|
def description
|
|
|
|
"Find good anime art fast"
|
|
|
|
end
|
|
|
|
|
2017-06-16 01:36:31 -04:00
|
|
|
# The canonical hostname of the site.
|
2011-09-18 15:47:15 -04:00
|
|
|
def hostname
|
|
|
|
Socket.gethostname
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2017-06-16 01:36:31 -04:00
|
|
|
# The list of all domain names this site is accessible under.
|
|
|
|
# Example: %w[danbooru.donmai.us sonohara.donmai.us hijiribe.donmai.us safebooru.donmai.us]
|
|
|
|
def hostnames
|
|
|
|
[hostname]
|
|
|
|
end
|
|
|
|
|
2010-02-20 18:08:22 -05:00
|
|
|
# Contact email address of the admin.
|
|
|
|
def contact_email
|
2011-08-07 15:44:54 -04:00
|
|
|
"webmaster@#{server_host}"
|
2010-02-20 18:08:22 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2017-02-23 21:15:29 -05:00
|
|
|
# System actions, such as sending automated dmails, will be performed with this account.
|
|
|
|
def system_user
|
|
|
|
User.find_by_name("DanbooruBot") || User.admins.first
|
|
|
|
end
|
|
|
|
|
2017-03-22 19:33:14 -04:00
|
|
|
def upload_feedback_topic
|
|
|
|
ForumTopic.where(title: "Upload Feedback Thread").first
|
|
|
|
end
|
|
|
|
|
2011-12-02 16:46:37 -05:00
|
|
|
def upgrade_account_email
|
|
|
|
contact_email
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2016-10-24 19:06:39 -04:00
|
|
|
def source_code_url
|
|
|
|
"https://github.com/r888888888/danbooru"
|
|
|
|
end
|
|
|
|
|
|
|
|
def commit_url(hash)
|
|
|
|
"#{source_code_url}/commit/#{hash}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def releases_url
|
|
|
|
"#{source_code_url}/releases"
|
|
|
|
end
|
|
|
|
|
|
|
|
def issues_url
|
|
|
|
"#{source_code_url}/issues"
|
|
|
|
end
|
|
|
|
|
2010-02-08 01:40:39 -05:00
|
|
|
# Stripped of any special characters.
|
|
|
|
def safe_app_name
|
|
|
|
app_name.gsub(/[^a-zA-Z0-9_-]/, "_")
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# The default name to use for anyone who isn't logged in.
|
|
|
|
def default_guest_name
|
|
|
|
"Anonymous"
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# This is a salt used to make dictionary attacks on account passwords harder.
|
|
|
|
def password_salt
|
|
|
|
"choujin-steiner"
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2016-10-04 20:56:07 -04:00
|
|
|
# Set the default level, permissions, and other settings for new users here.
|
|
|
|
def customize_new_user(user)
|
|
|
|
# user.level = User::Levels::MEMBER
|
|
|
|
# user.can_approve_posts = false
|
|
|
|
# user.can_upload_free = false
|
|
|
|
# user.is_super_voter = false
|
|
|
|
#
|
|
|
|
# user.base_upload_limit = 10
|
|
|
|
# user.comment_threshold = -1
|
|
|
|
# user.blacklisted_tags = ["spoilers", "guro", "scat", "furry -rating:s"].join("\n")
|
|
|
|
# user.default_image_size = "large"
|
|
|
|
# user.per_page = 20
|
|
|
|
# user.disable_tagged_filenames = false
|
2016-10-05 15:46:04 -04:00
|
|
|
true
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2017-05-05 23:00:05 -04:00
|
|
|
# What method to use to backup images.
|
|
|
|
#
|
|
|
|
# NullBackupService: Don't backup images at all.
|
|
|
|
#
|
|
|
|
# S3BackupService: Backup to Amazon S3. Must configure aws_access_key_id,
|
|
|
|
# aws_secret_access_key, and aws_s3_bucket_name. Bucket must exist and be writable.
|
2017-05-05 22:45:14 -04:00
|
|
|
def backup_service
|
2017-05-05 23:00:05 -04:00
|
|
|
if Rails.env.production?
|
|
|
|
S3BackupService.new
|
|
|
|
else
|
|
|
|
NullBackupService.new
|
|
|
|
end
|
2017-05-05 22:45:14 -04:00
|
|
|
end
|
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# What method to use to store images.
|
|
|
|
# local_flat: Store every image in one directory.
|
|
|
|
# local_hierarchy: Store every image in a hierarchical directory, based on the post's MD5 hash. On some file systems this may be faster.
|
|
|
|
def image_store
|
|
|
|
:local_flat
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# Thumbnail size
|
|
|
|
def small_image_width
|
|
|
|
150
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-08 01:40:39 -05:00
|
|
|
# Large resize image width. Set to nil to disable.
|
2010-02-06 16:48:40 -05:00
|
|
|
def large_image_width
|
2013-01-06 14:54:01 -05:00
|
|
|
850
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2012-08-21 18:29:09 -04:00
|
|
|
def large_image_prefix
|
|
|
|
"sample-"
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 23:11:26 -05:00
|
|
|
# When calculating statistics based on the posts table, gather this many posts to sample from.
|
|
|
|
def post_sample_size
|
|
|
|
300
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# List of memcached servers
|
|
|
|
def memcached_servers
|
2016-10-17 18:53:37 -04:00
|
|
|
%w(127.0.0.1:11211)
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# After a post receives this many comments, new comments will no longer bump the post in comment/index.
|
|
|
|
def comment_threshold
|
|
|
|
40
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# Members cannot post more than X comments in an hour.
|
|
|
|
def member_comment_limit
|
|
|
|
2
|
|
|
|
end
|
|
|
|
|
|
|
|
# Determines who can see ads.
|
|
|
|
def can_see_ads?(user)
|
2013-04-28 03:04:52 -04:00
|
|
|
!user.is_gold?
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# Users cannot search for more than X regular tags at a time.
|
2013-02-20 21:56:09 -05:00
|
|
|
def base_tag_query_limit
|
2010-02-06 16:48:40 -05:00
|
|
|
6
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2013-02-20 21:56:09 -05:00
|
|
|
def tag_query_limit
|
|
|
|
if CurrentUser.user.present?
|
|
|
|
CurrentUser.user.tag_query_limit
|
|
|
|
else
|
|
|
|
base_tag_query_limit * 2
|
|
|
|
end
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# Max number of posts to cache
|
|
|
|
def tag_subscription_post_limit
|
|
|
|
200
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-06-24 18:22:54 -04:00
|
|
|
# After this many pages, the paginator will switch to sequential mode.
|
|
|
|
def max_numbered_pages
|
2013-02-23 15:58:21 -05:00
|
|
|
1_000
|
2011-06-24 18:22:54 -04:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 16:48:40 -05:00
|
|
|
# Max number of tag subscriptions per user
|
|
|
|
def max_tag_subscriptions
|
|
|
|
5
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-08 01:40:39 -05:00
|
|
|
# Maximum size of an upload.
|
|
|
|
def max_file_size
|
2016-01-03 02:50:26 -05:00
|
|
|
35.megabytes
|
2010-02-08 01:40:39 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-12-14 11:19:58 -05:00
|
|
|
def member_comment_time_threshold
|
|
|
|
1.week.ago
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 23:11:26 -05:00
|
|
|
# The name of the server the app is hosted on.
|
2010-02-06 16:48:40 -05:00
|
|
|
def server_host
|
|
|
|
Socket.gethostname
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-10-08 18:42:26 -04:00
|
|
|
# Names of all Danbooru servers which serve out of the same common database.
|
2010-02-08 01:40:39 -05:00
|
|
|
# Used in conjunction with load balancing to distribute files from one server to
|
|
|
|
# the others. This should match whatever gethostname returns on the other servers.
|
2010-10-08 18:42:26 -04:00
|
|
|
def all_server_hosts
|
2012-06-01 19:22:58 -04:00
|
|
|
[server_host]
|
2010-02-08 01:40:39 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-10-08 18:42:26 -04:00
|
|
|
# Names of other Danbooru servers.
|
|
|
|
def other_server_hosts
|
2013-03-03 01:12:31 -05:00
|
|
|
@other_server_hosts ||= all_server_hosts.reject {|x| x == server_host}
|
2010-10-08 18:42:26 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def remote_server_login
|
|
|
|
"albert"
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 23:11:26 -05:00
|
|
|
# Returns a hash mapping various tag categories to a numerical value.
|
|
|
|
# Be sure to update the reverse_tag_category_mapping also.
|
|
|
|
def tag_category_mapping
|
|
|
|
@tag_category_mapping ||= {
|
|
|
|
"general" => 0,
|
|
|
|
"gen" => 0,
|
|
|
|
|
|
|
|
"artist" => 1,
|
|
|
|
"art" => 1,
|
|
|
|
|
|
|
|
"copyright" => 3,
|
|
|
|
"copy" => 3,
|
|
|
|
"co" => 3,
|
|
|
|
|
|
|
|
"character" => 4,
|
|
|
|
"char" => 4,
|
|
|
|
"ch" => 4
|
|
|
|
}
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-07-17 19:05:31 -04:00
|
|
|
def canonical_tag_category_mapping
|
|
|
|
@canonical_tag_category_mapping ||= {
|
|
|
|
"General" => 0,
|
|
|
|
"Artist" => 1,
|
2013-02-18 20:50:38 -05:00
|
|
|
"Copyright" => 3,
|
|
|
|
"Character" => 4
|
2011-07-17 19:05:31 -04:00
|
|
|
}
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-02-06 23:11:26 -05:00
|
|
|
# Returns a hash maping numerical category values to their
|
|
|
|
# string equivalent. Be sure to update the tag_category_mapping also.
|
|
|
|
def reverse_tag_category_mapping
|
|
|
|
@reverse_tag_category_mapping ||= {
|
|
|
|
0 => "General",
|
|
|
|
1 => "Artist",
|
|
|
|
3 => "Copyright",
|
|
|
|
4 => "Character"
|
|
|
|
}
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-03-11 19:42:04 -05:00
|
|
|
# If enabled, users must verify their email addresses.
|
|
|
|
def enable_email_verification?
|
2010-10-27 20:16:43 -04:00
|
|
|
false
|
2010-03-11 19:42:04 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-03-10 18:21:43 -05:00
|
|
|
# Any custom code you want to insert into the default layout without
|
|
|
|
# having to modify the templates.
|
|
|
|
def custom_html_header_content
|
2010-11-19 13:44:11 -05:00
|
|
|
nil
|
2010-03-10 18:21:43 -05:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2016-11-21 02:17:15 -05:00
|
|
|
def upload_notice_wiki_page
|
|
|
|
"help:upload_notice"
|
|
|
|
end
|
|
|
|
|
2016-11-21 02:30:01 -05:00
|
|
|
def flag_notice_wiki_page
|
|
|
|
"help:flag_notice"
|
|
|
|
end
|
|
|
|
|
2016-12-22 22:53:10 -05:00
|
|
|
def appeal_notice_wiki_page
|
|
|
|
"help:appeal_notice"
|
|
|
|
end
|
|
|
|
|
2017-05-16 23:51:05 -04:00
|
|
|
def replacement_notice_wiki_page
|
|
|
|
"help:replacement_notice"
|
|
|
|
end
|
|
|
|
|
2010-03-17 19:20:44 -04:00
|
|
|
# The number of posts displayed per page.
|
|
|
|
def posts_per_page
|
|
|
|
20
|
|
|
|
end
|
2010-10-08 18:42:26 -04:00
|
|
|
|
|
|
|
def is_post_restricted?(post)
|
2010-11-19 13:44:11 -05:00
|
|
|
false
|
2010-10-08 18:42:26 -04:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-10-08 18:42:26 -04:00
|
|
|
def is_user_restricted?(user)
|
2013-04-28 03:04:52 -04:00
|
|
|
!user.is_gold?
|
2010-10-08 18:42:26 -04:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-10-08 18:42:26 -04:00
|
|
|
def can_user_see_post?(user, post)
|
2016-02-03 19:53:30 -05:00
|
|
|
if is_user_restricted?(user) && is_post_restricted?(post)
|
2010-10-08 18:42:26 -04:00
|
|
|
false
|
|
|
|
else
|
|
|
|
true
|
|
|
|
end
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2010-10-08 18:42:26 -04:00
|
|
|
def select_posts_visible_to_user(user, posts)
|
2011-11-11 17:50:26 -05:00
|
|
|
posts.select {|x| can_user_see_post?(user, x)}
|
2010-10-08 18:42:26 -04:00
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-12-22 18:22:32 -05:00
|
|
|
def max_appeals_per_day
|
|
|
|
1
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2013-01-10 17:45:52 -05:00
|
|
|
# Counting every post is typically expensive because it involves a sequential scan on
|
|
|
|
# potentially millions of rows. If this method returns a value, then blank searches
|
|
|
|
# will return that number for the fast_count call instead.
|
|
|
|
def blank_tag_search_fast_count
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-26 17:32:52 -04:00
|
|
|
def pixiv_login
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-26 17:32:52 -04:00
|
|
|
def pixiv_password
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2016-09-23 18:29:49 -04:00
|
|
|
def pixiv_whitecube_login
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def pixiv_whitecube_password
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2011-09-26 17:32:52 -04:00
|
|
|
def tinami_login
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-26 17:32:52 -04:00
|
|
|
def tinami_password
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-28 18:46:28 -04:00
|
|
|
def nico_seiga_login
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-28 18:46:28 -04:00
|
|
|
def nico_seiga_password
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-29 11:34:31 -04:00
|
|
|
def pixa_login
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2011-09-29 11:34:31 -04:00
|
|
|
def pixa_password
|
|
|
|
nil
|
|
|
|
end
|
2013-03-19 08:10:10 -04:00
|
|
|
|
2014-06-03 18:42:24 -04:00
|
|
|
def nijie_login
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def nijie_password
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2017-06-10 11:34:51 -04:00
|
|
|
def deviantart_login
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def deviantart_password
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2017-06-13 02:14:04 -04:00
|
|
|
# http://tinysubversions.com/notes/mastodon-bot/
|
|
|
|
def pawoo_client_id
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def pawoo_client_secret
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2017-06-23 00:32:53 -04:00
|
|
|
# 1. Register app at https://www.tumblr.com/oauth/register.
|
|
|
|
# 2. Copy "OAuth Consumer Key" from https://www.tumblr.com/oauth/apps.
|
|
|
|
def tumblr_consumer_key
|
|
|
|
nil
|
|
|
|
end
|
|
|
|
|
2013-03-12 17:01:52 -04:00
|
|
|
def enable_dimension_autotagging
|
|
|
|
true
|
|
|
|
end
|
2014-03-21 19:43:02 -04:00
|
|
|
|
2017-06-26 19:17:16 -04:00
|
|
|
# Should return true if the given tag should be suggested for removal in the post replacement dialog box.
|
|
|
|
def remove_tag_after_replacement?(tag)
|
|
|
|
tag =~ /replaceme|.*_sample|resized|upscaled|downscaled|md5_mismatch|jpeg_artifacts/i
|
|
|
|
end
|
|
|
|
|
2014-05-22 20:42:34 -04:00
|
|
|
def shared_dir_path
|
|
|
|
"/var/www/danbooru2/shared"
|
|
|
|
end
|
2014-11-24 23:21:54 -05:00
|
|
|
|
2015-01-22 18:55:35 -05:00
|
|
|
def stripe_secret_key
|
|
|
|
end
|
|
|
|
|
|
|
|
def stripe_publishable_key
|
|
|
|
end
|
2015-01-24 15:11:39 -05:00
|
|
|
|
2015-02-09 19:29:00 -05:00
|
|
|
def twitter_api_key
|
2015-01-24 15:11:39 -05:00
|
|
|
end
|
|
|
|
|
2015-02-09 19:29:00 -05:00
|
|
|
def twitter_api_secret
|
2015-01-24 15:11:39 -05:00
|
|
|
end
|
2015-07-21 16:09:32 -04:00
|
|
|
|
2015-07-27 20:21:17 -04:00
|
|
|
def enable_post_search_counts
|
2015-07-21 16:09:32 -04:00
|
|
|
false
|
|
|
|
end
|
2015-08-18 15:25:26 -04:00
|
|
|
|
2017-07-12 18:52:09 -04:00
|
|
|
def httparty_options
|
|
|
|
# proxy example:
|
2017-06-29 21:07:07 -04:00
|
|
|
# {http_proxyaddr: "", http_proxyport: "", http_proxyuser: nil, http_proxypass: nil}
|
2017-07-12 18:52:09 -04:00
|
|
|
{}
|
2017-06-29 21:07:07 -04:00
|
|
|
end
|
|
|
|
|
2016-11-28 20:28:47 -05:00
|
|
|
# you should override this
|
2015-09-03 20:03:03 -04:00
|
|
|
def email_key
|
|
|
|
"zDMSATq0W3hmA5p3rKTgD"
|
|
|
|
end
|
|
|
|
|
2016-01-28 20:39:01 -05:00
|
|
|
# impose additional requirements to create tag aliases and implications
|
|
|
|
def strict_tag_requirements
|
|
|
|
true
|
|
|
|
end
|
|
|
|
|
2015-08-18 15:25:26 -04:00
|
|
|
# For downloads, if the host matches any of these IPs, block it
|
|
|
|
def banned_ip_for_download?(ip_addr)
|
2015-08-18 15:45:10 -04:00
|
|
|
raise ArgumentError unless ip_addr.is_a?(IPAddr)
|
|
|
|
|
2015-08-18 17:18:27 -04:00
|
|
|
if ip_addr.ipv4?
|
|
|
|
if IPAddr.new("127.0.0.1") == ip_addr
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("169.254.0.0/16").include?(ip_addr)
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("10.0.0.0/8").include?(ip_addr)
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("172.16.0.0/12").include?(ip_addr)
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("192.168.0.0/16").include?(ip_addr)
|
|
|
|
true
|
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
|
|
|
elsif ip_addr.ipv6?
|
|
|
|
if IPAddr.new("::1") == ip_addr
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("fe80::/10").include?(ip_addr)
|
|
|
|
true
|
|
|
|
elsif IPAddr.new("fd00::/8").include?(ip_addr)
|
|
|
|
true
|
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
2015-08-18 15:45:10 -04:00
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
2015-08-18 15:25:26 -04:00
|
|
|
end
|
2015-08-25 19:34:51 -04:00
|
|
|
|
|
|
|
def twitter_site
|
|
|
|
end
|
2015-10-19 16:50:37 -04:00
|
|
|
|
|
|
|
def addthis_key
|
|
|
|
end
|
2015-10-23 19:49:51 -04:00
|
|
|
|
2017-03-09 21:18:06 -05:00
|
|
|
# enable s3-nginx proxy caching
|
|
|
|
def use_s3_proxy?(post)
|
2017-05-14 11:40:15 -04:00
|
|
|
false
|
2017-03-09 21:18:06 -05:00
|
|
|
end
|
|
|
|
|
2016-05-23 20:05:23 -04:00
|
|
|
# include essential tags in image urls (requires nginx/apache rewrites)
|
2016-05-23 14:50:26 -04:00
|
|
|
def enable_seo_post_urls
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2016-01-18 20:13:26 -05:00
|
|
|
# enable some (donmai-specific) optimizations for post counts
|
|
|
|
def estimate_post_counts
|
2016-06-29 18:45:22 -04:00
|
|
|
false
|
2016-01-18 20:13:26 -05:00
|
|
|
end
|
|
|
|
|
2016-11-28 20:28:47 -05:00
|
|
|
# reportbooru options - see https://github.com/r888888888/reportbooru
|
|
|
|
def reportbooru_server
|
|
|
|
end
|
|
|
|
|
|
|
|
def reportbooru_key
|
|
|
|
end
|
|
|
|
|
|
|
|
# listbooru options - see https://github.com/r888888888/listbooru
|
2015-10-23 19:49:51 -04:00
|
|
|
def listbooru_server
|
|
|
|
end
|
|
|
|
|
|
|
|
def listbooru_auth_key
|
|
|
|
end
|
2015-12-28 15:25:38 -05:00
|
|
|
|
2016-11-28 20:28:47 -05:00
|
|
|
# iqdbs options - see https://github.com/r888888888/iqdbs
|
2016-11-28 20:14:25 -05:00
|
|
|
def iqdbs_auth_key
|
|
|
|
end
|
|
|
|
|
|
|
|
def iqdbs_server
|
|
|
|
end
|
|
|
|
|
2016-07-27 20:20:48 -04:00
|
|
|
# google api options
|
|
|
|
def google_api_project
|
|
|
|
end
|
|
|
|
|
2016-09-07 17:35:35 -04:00
|
|
|
def google_api_json_key_path
|
2016-09-23 18:33:15 -04:00
|
|
|
"/var/www/danbooru2/shared/config/google-key.json"
|
2016-09-07 17:35:35 -04:00
|
|
|
end
|
|
|
|
|
2015-12-28 15:25:38 -05:00
|
|
|
# AWS config options
|
|
|
|
def aws_access_key_id
|
|
|
|
end
|
|
|
|
|
|
|
|
def aws_secret_access_key
|
|
|
|
end
|
|
|
|
|
|
|
|
def aws_ses_enabled?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
def aws_ses_options
|
|
|
|
# {:smtp_server_name => "smtp server", :user_name => "user name", :ses_smtp_user_name => "smtp user name", :ses_smtp_password => "smtp password"}
|
|
|
|
end
|
|
|
|
|
|
|
|
def aws_s3_enabled?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2017-05-05 22:45:14 -04:00
|
|
|
# Used for backing up images to S3. Must be changed to your own S3 bucket.
|
2015-12-28 15:25:38 -05:00
|
|
|
def aws_s3_bucket_name
|
|
|
|
"danbooru"
|
|
|
|
end
|
|
|
|
|
|
|
|
def aws_sqs_enabled?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2016-12-21 14:54:43 -05:00
|
|
|
def aws_sqs_saved_search_url
|
2015-12-28 15:25:38 -05:00
|
|
|
end
|
|
|
|
|
2016-01-04 14:52:07 -05:00
|
|
|
def aws_sqs_reltagcalc_url
|
2016-01-04 14:46:49 -05:00
|
|
|
end
|
|
|
|
|
2016-06-21 16:14:27 -04:00
|
|
|
def aws_sqs_post_versions_url
|
|
|
|
end
|
|
|
|
|
2015-12-28 15:25:38 -05:00
|
|
|
def aws_sqs_region
|
|
|
|
end
|
2016-11-28 20:14:25 -05:00
|
|
|
|
|
|
|
def aws_sqs_iqdb_url
|
|
|
|
end
|
2016-12-14 21:09:45 -05:00
|
|
|
|
|
|
|
def aws_sqs_archives_url
|
|
|
|
end
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|
2017-01-21 02:15:11 -05:00
|
|
|
|
|
|
|
class EnvironmentConfiguration
|
2017-01-24 18:02:53 -05:00
|
|
|
def custom_configuration
|
|
|
|
@custom_configuration ||= CustomConfiguration.new
|
|
|
|
end
|
|
|
|
|
2017-01-21 02:15:11 -05:00
|
|
|
def method_missing(method, *args)
|
|
|
|
var = ENV["DANBOORU_#{method.to_s.upcase}"]
|
|
|
|
|
|
|
|
if var.present?
|
|
|
|
var
|
|
|
|
else
|
2017-01-24 18:02:53 -05:00
|
|
|
custom_configuration.send(method, *args)
|
2017-01-21 02:15:11 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2010-02-06 16:48:40 -05:00
|
|
|
end
|