1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-20 14:37:43 +01:00

support for round robin proxies

This commit is contained in:
mrjvs 2023-02-22 21:41:13 +01:00
parent 444156236c
commit 485698a43c
3 changed files with 22 additions and 6 deletions

View file

@ -1,6 +1,15 @@
import { conf } from "@/setup/config"; import { conf } from "@/setup/config";
import { ofetch } from "ofetch"; import { ofetch } from "ofetch";
let proxyUrlIndex = Math.floor(Math.random() * conf().PROXY_URLS.length);
// round robins all proxy urls
function getProxyUrl(): string {
const url = conf().PROXY_URLS[proxyUrlIndex];
proxyUrlIndex = (proxyUrlIndex + 1) % conf().PROXY_URLS.length;
return url;
}
type P<T> = Parameters<typeof ofetch<T>>; type P<T> = Parameters<typeof ofetch<T>>;
type R<T> = ReturnType<typeof ofetch<T>>; type R<T> = ReturnType<typeof ofetch<T>>;
@ -41,7 +50,7 @@ export function proxiedFetch<T>(url: string, ops: P<T>[1] = {}): R<T> {
parsedUrl.searchParams.set(k, v); parsedUrl.searchParams.set(k, v);
}); });
return baseFetch<T>(conf().BASE_PROXY_URL, { return baseFetch<T>(getProxyUrl(), {
...ops, ...ops,
baseURL: undefined, baseURL: undefined,
params: { params: {

View file

@ -16,7 +16,7 @@ import { initializeStores } from "./utils/storage";
const key = const key =
(window as any)?.__CONFIG__?.VITE_KEY ?? import.meta.env.VITE_KEY ?? null; (window as any)?.__CONFIG__?.VITE_KEY ?? import.meta.env.VITE_KEY ?? null;
if (key) { if (key) {
(window as any).initMW(conf().BASE_PROXY_URL, key); (window as any).initMW(conf().PROXY_URLS, key);
} }
initializeChromecast(); initializeChromecast();

View file

@ -10,8 +10,14 @@ interface Config {
NORMAL_ROUTER: boolean; NORMAL_ROUTER: boolean;
} }
export interface RuntimeConfig extends Config { export interface RuntimeConfig {
BASE_PROXY_URL: string; APP_VERSION: string;
GITHUB_LINK: string;
DISCORD_LINK: string;
OMDB_API_KEY: string;
TMDB_API_KEY: string;
NORMAL_ROUTER: boolean;
PROXY_URLS: string[];
} }
const env: Record<keyof Config, undefined | string> = { const env: Record<keyof Config, undefined | string> = {
@ -51,8 +57,9 @@ export function conf(): RuntimeConfig {
DISCORD_LINK, DISCORD_LINK,
OMDB_API_KEY: getKey("OMDB_API_KEY"), OMDB_API_KEY: getKey("OMDB_API_KEY"),
TMDB_API_KEY: getKey("TMDB_API_KEY"), TMDB_API_KEY: getKey("TMDB_API_KEY"),
BASE_PROXY_URL: getKey("CORS_PROXY_URL"), PROXY_URLS: getKey("CORS_PROXY_URL")
CORS_PROXY_URL: `${getKey("CORS_PROXY_URL")}/?destination=`, .split(",")
.map((v) => v.trim()),
NORMAL_ROUTER: (getKey("NORMAL_ROUTER") ?? "false") === "true", NORMAL_ROUTER: (getKey("NORMAL_ROUTER") ?? "false") === "true",
}; };
} }