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:
parent
444156236c
commit
485698a43c
3 changed files with 22 additions and 6 deletions
|
@ -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: {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue