diff options
| author | epicsam123 <92618898+epicsam123@users.noreply.github.com> | 2025-01-22 17:33:54 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-22 17:33:54 -0500 |
| commit | 0546a73bfaef384b948acad27a92ca02bf44e3bf (patch) | |
| tree | cb3051b3d7264e8906463281fe263ff6b6367c75 /src | |
| parent | 164d764d553921e6ee98facda241f13c2103ec90 (diff) | |
| download | invidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.tar.gz invidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.tar.bz2 invidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.zip | |
Pick a different instance upon redirect
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/routes/misc.cr | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr index 8b620d63..152bc2cb 100644 --- a/src/invidious/routes/misc.cr +++ b/src/invidious/routes/misc.cr @@ -40,14 +40,23 @@ module Invidious::Routes::Misc def self.cross_instance_redirect(env) referer = get_referer(env) + redirect_url = "redirect.invidious.io" instance_list = Invidious::Jobs::InstanceListRefreshJob::INSTANCES["INSTANCES"] if instance_list.empty? - instance_url = "redirect.invidious.io" + instance_url = redirect_url else # Sample returns an array # Instances are packaged as {region, domain} in the instance list - instance_url = instance_list.sample(1)[0][1] + # Filter out the current instance + other_available_instances = instance_list.reject! { |region, domain| domain == CONFIG.domain } + + # If there are any other instances, select a random one + if other_available_instances.any? + instance_url = other_available_instances.sample(1)[0][1] + else + # If the current instance is the only one, use the redirect URL as fallback + instance_url = redirect_url end env.redirect "https://#{instance_url}#{referer}" |
