diff --git a/app/javascript/src/javascripts/common.js b/app/javascript/src/javascripts/common.js.erb similarity index 66% rename from app/javascript/src/javascripts/common.js rename to app/javascript/src/javascripts/common.js.erb index e1d8c3065..24c033dea 100644 --- a/app/javascript/src/javascripts/common.js +++ b/app/javascript/src/javascripts/common.js.erb @@ -19,6 +19,14 @@ $(function() { $('#notice').fadeOut("fast"); e.preventDefault(); }); + + const CANONICAL_DOMAIN = <%= Danbooru.config.domain.to_json.html_safe %>; + const CANONICAL_HOSTNAME = <%= Danbooru.config.hostname.to_json.html_safe %>; + const ENABLE_ANTIPROXYING = <%= Danbooru.config.enable_antiproxying?.to_json.html_safe %>; + + if (ENABLE_ANTIPROXYING && !location.hostname.endsWith(CANONICAL_DOMAIN)) { + location.hostname = CANONICAL_HOSTNAME; + } }); window.submitInvisibleRecaptchaForm = function () { diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 999319cff..21444300c 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -25,11 +25,16 @@ module Danbooru "Danbooru" end - # The canonical hostname of the site. + # The canonical hostname for the site, e.g. danbooru.donmai.us. def hostname Socket.gethostname end + # The canonical base domain for the site, e.g. donmai.us. + def domain + hostname + end + # Contact email address of the admin. def contact_email "webmaster@#{hostname}" @@ -551,6 +556,11 @@ module Danbooru def redis_url "redis://localhost:6379" end + + # Try to prevent copycat sites from proxying our site and inserting ads or phishing passwords. + def enable_antiproxying? + Rails.env.production? + end end class EnvironmentConfiguration