diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1dfeccf39..5b4c3968b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -172,6 +172,7 @@ class ApplicationController < ActionController::Base def reset_current_user CurrentUser.user = nil CurrentUser.ip_addr = nil + CurrentUser.root_url = root_url end def set_started_at_session diff --git a/app/logical/current_user.rb b/app/logical/current_user.rb index 194a721b3..5d60eb78a 100644 --- a/app/logical/current_user.rb +++ b/app/logical/current_user.rb @@ -48,6 +48,14 @@ class CurrentUser Thread.current[:current_ip_addr] end + def self.root_url + Thread.current[:current_root_url] || "http://#{Danbooru.config.hostname}/" + end + + def self.root_url=(root_url) + Thread.current[:current_root_url] = root_url + end + def self.id if user.nil? nil diff --git a/app/logical/storage_manager.rb b/app/logical/storage_manager.rb index dcc2b044c..3f8c54dc1 100644 --- a/app/logical/storage_manager.rb +++ b/app/logical/storage_manager.rb @@ -14,7 +14,7 @@ class StorageManager end def default_base_url - Rails.application.routes.url_helpers.root_url + "data" + CurrentUser.root_url + "data" end # Store the given file at the given path. If a file already exists at that diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 2468ea4e3..c4295da77 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -230,7 +230,7 @@ module Danbooru # base_url - where to serve files from (default: http://#{hostname}/data) # hierarchical: false - store files in a single directory # hierarchical: true - store files in a hierarchical directory structure, based on the MD5 hash - StorageManager::Local.new(base_dir: "#{Rails.root}/public/data", hierarchical: false) + StorageManager::Local.new(base_url: CurrentUser.root_url + "data", base_dir: "#{Rails.root}/public/data", hierarchical: false) # Store files on one or more remote host(s). Configure SSH settings in # ~/.ssh_config or in the ssh_options param (ref: http://net-ssh.github.io/net-ssh/Net/SSH.html#method-c-start)