diff --git a/src/invidious/config.cr b/src/invidious/config.cr index 9c18da26..f2415604 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -88,6 +88,8 @@ class Config property hmac_key : String = "" # Domain to be used for links to resources on the site where an absolute URL is required property domain : String? + # Alternative domains. You can add other domains, like TOR and I2P addresses + property alternative_domains : Array(String) = [] of String property donation_url : String? property contact_url : String? property home_domain : String? diff --git a/src/invidious/routes/login.cr b/src/invidious/routes/login.cr index add9f75d..4c5446f8 100644 --- a/src/invidious/routes/login.cr +++ b/src/invidious/routes/login.cr @@ -60,7 +60,13 @@ module Invidious::Routes::Login sid = Base64.urlsafe_encode(Random::Secure.random_bytes(32)) Invidious::Database::SessionIDs.insert(sid, email) - env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) + # Checks if there is any alternative domain, like a second domain name, + # TOR or I2P address + if alt = CONFIG.alternative_domains.index(env.request.headers["Host"]) + env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.alternative_domains[alt], sid) + else + env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) + end else return error_template(401, "Wrong username or password") end @@ -160,7 +166,13 @@ module Invidious::Routes::Login Invidious::Database::Users.insert(user) Invidious::Database::SessionIDs.insert(sid, email) - env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) + # Checks if there is any alternative domain, like a second domain name, + # TOR or I2P address + if alt = CONFIG.alternative_domains.index(env.request.headers["Host"]) + env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.alternative_domains[alt], sid) + else + env.response.cookies["SID"] = Invidious::User::Cookies.sid(CONFIG.domain, sid) + end if env.request.cookies["PREFS"]? user.preferences = env.get("preferences").as(Preferences) diff --git a/src/invidious/routes/preferences.cr b/src/invidious/routes/preferences.cr index 61439230..725556b1 100644 --- a/src/invidious/routes/preferences.cr +++ b/src/invidious/routes/preferences.cr @@ -219,7 +219,13 @@ module Invidious::Routes::PreferencesRoute File.write("config/config.yml", CONFIG.to_yaml) end else - env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) + # Checks if there is any alternative domain, like a second domain name, + # TOR or I2P address + if alt = CONFIG.alternative_domains.index(env.request.headers["Host"]) + env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.alternative_domains[alt], preferences) + else + env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) + end end env.redirect referer @@ -254,7 +260,13 @@ module Invidious::Routes::PreferencesRoute preferences.dark_mode = "dark" end - env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) + # Checks if there is any alternative domain, like a second domain name, + # TOR or I2P address + if alt = CONFIG.alternative_domains.index(env.request.headers["Host"]) + env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.alternative_domains[alt], preferences) + else + env.response.cookies["PREFS"] = Invidious::User::Cookies.prefs(CONFIG.domain, preferences) + end end if redirect