From af6ab74f8d660c68c092637a27b185b3fb470cd6 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Wed, 3 Jan 2018 11:42:08 -0800 Subject: [PATCH] support dedicated image servers --- app/logical/api_cache_generator.rb | 2 ++ app/logical/cloudflare_service.rb | 4 +++- app/logical/current_user.rb | 16 +++++++++++++- app/models/amazon_backup.rb | 2 ++ app/models/post.rb | 35 +++++++++++------------------- config/danbooru_default_config.rb | 4 ++++ 6 files changed, 39 insertions(+), 24 deletions(-) diff --git a/app/logical/api_cache_generator.rb b/app/logical/api_cache_generator.rb index d32090ca4..404c72353 100644 --- a/app/logical/api_cache_generator.rb +++ b/app/logical/api_cache_generator.rb @@ -1,3 +1,5 @@ +# donmai.us specific + class ApiCacheGenerator def generate_tag_cache path = Danbooru.config.shared_dir_path diff --git a/app/logical/cloudflare_service.rb b/app/logical/cloudflare_service.rb index 206a07b0e..7cd9f36f1 100644 --- a/app/logical/cloudflare_service.rb +++ b/app/logical/cloudflare_service.rb @@ -1,3 +1,5 @@ +# donmai.us specific + class CloudflareService def key Danbooru.config.cloudflare_key @@ -23,7 +25,7 @@ class CloudflareService def delete(md5, ext) url = "https://api.cloudflare.com/client/v4/zones/#{zone}/purge_cache" files = ["#{md5}.#{ext}", "preview/#{md5}.jpg", "sample/sample-#{md5}.jpg"].map do |name| - ["danbooru", "safebooru"].map do |subdomain| + ["danbooru", "safebooru", "raikou1"].map do |subdomain| "http://#{subdomain}.donmai.us/data/#{name}" end end.flatten diff --git a/app/logical/current_user.rb b/app/logical/current_user.rb index b729d3af0..2c3dc370f 100644 --- a/app/logical/current_user.rb +++ b/app/logical/current_user.rb @@ -16,7 +16,21 @@ class CurrentUser end def self.as_admin(&block) - scoped(User.admins.first, "127.0.0.1", &block) + if block_given? + scoped(User.admins.first, "127.0.0.1", &block) + else + self.user = User.admins.first + self.ip_addr = "127.0.0.1" + end + end + + def self.as_system(&block) + if block_given? + scoped(User.system, "127.0.0.1", &block) + else + self.user = User.system + self.ip_addr = "127.0.0.1" + end end def self.user=(user) diff --git a/app/models/amazon_backup.rb b/app/models/amazon_backup.rb index 93752c8dc..3ee7fcda2 100644 --- a/app/models/amazon_backup.rb +++ b/app/models/amazon_backup.rb @@ -1,3 +1,5 @@ +# donmai.us specific + require 'base64' require 'digest/md5' diff --git a/app/models/post.rb b/app/models/post.rb index 7507b0efd..971f2fb99 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -145,29 +145,16 @@ class Post < ApplicationRecord end def file_url - if Danbooru.config.use_s3_proxy?(self) - "/cached/data/#{seo_tag_string}#{file_path_prefix}#{md5}.#{file_ext}" - else - "/data/#{seo_tag_string}#{file_path_prefix}#{md5}.#{file_ext}" - end + "#{Danbooru.config.image_server_host(self)}/data/#{seo_tag_string}#{file_path_prefix}#{md5}.#{file_ext}" end # this is for the 640x320 version def cropped_file_url - if Danbooru.config.use_s3_proxy?(self) - "/cached/data/cropped/large/#{md5}.jpg" - else - "/data/cropped/large/#{md5}.jpg" - end end def large_file_url if has_large? - if Danbooru.config.use_s3_proxy?(self) - "/cached/data/sample/#{seo_tag_string}#{file_path_prefix}#{Danbooru.config.large_image_prefix}#{md5}.#{large_file_ext}" - else - "/data/sample/#{seo_tag_string}#{file_path_prefix}#{Danbooru.config.large_image_prefix}#{md5}.#{large_file_ext}" - end + "#{Danbooru.config.image_server_host(self)}/data/sample/#{seo_tag_string}#{file_path_prefix}#{Danbooru.config.large_image_prefix}#{md5}.#{large_file_ext}" else file_url end @@ -190,11 +177,7 @@ class Post < ApplicationRecord return "/images/download-preview.png" end - # if has_cropped? && !CurrentUser.disable_cropped_thumbnails? - # "/cached/data/cropped/small/#{md5}.jpg" - # else - "/data/preview/#{file_path_prefix}#{md5}.jpg" - # end + "/data/preview/#{file_path_prefix}#{md5}.jpg" end def complete_preview_file_url @@ -204,9 +187,17 @@ class Post < ApplicationRecord def open_graph_image_url if is_image? if has_large? - "http://#{Danbooru.config.hostname}#{large_file_url}" + if Danbooru.config.image_server_host(self) =~ /http/ + large_file_url + else + "http://#{Danbooru.config.hostname}#{large_file_url}" + end else - "http://#{Danbooru.config.hostname}#{file_url}" + if Danbooru.config.image_server_host(self) =~ /http/ + file_url + else + "http://#{Danbooru.config.hostname}#{file_url}" + end end else complete_preview_file_url diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 28ef8fa21..b2ff091e6 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -217,6 +217,10 @@ module Danbooru "albert" end + def image_server_host(post) + "" + end + #TAG CONFIGURATION #Full tag configuration info for all tags