update patches and invidious-companion
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m14s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m14s
This commit is contained in:
parent
cd5f5db2c6
commit
a774a714fa
15 changed files with 93 additions and 289 deletions
|
@ -1 +1 @@
|
|||
Subproject commit 1867045ba9a23250317fcb139bed0364e6d7cd89
|
||||
Subproject commit f1606a0aa1a8d37df690bf4757a5a6ae4a955a0b
|
|
@ -1,19 +1,19 @@
|
|||
From 91a9fb17566462144f6f54d4a6054077024cc719 Mon Sep 17 00:00:00 2001
|
||||
From c0209c66dd9381b9a8cee2c832155cf28364faf3 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 19:37:34 -0300
|
||||
Subject: [PATCH 06/14] ci: update deno to 2.2.4
|
||||
Subject: [PATCH 01/12] ci: update deno to 2.2.5
|
||||
|
||||
---
|
||||
Dockerfile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Dockerfile b/Dockerfile
|
||||
index 04b74c0..a6dc150 100644
|
||||
index 04b74c0..0f9f933 100644
|
||||
--- a/Dockerfile
|
||||
+++ b/Dockerfile
|
||||
@@ -1,4 +1,4 @@
|
||||
-FROM denoland/deno:debian-2.1.4 AS builder
|
||||
+FROM denoland/deno:debian-2.2.4 AS builder
|
||||
+FROM denoland/deno:debian-2.2.5 AS builder
|
||||
|
||||
ARG TINI_VERSION=0.19.0
|
||||
|
|
@ -1,20 +1,20 @@
|
|||
From aa4a7282934a6f23dbcb055435f0fac114c3abba Mon Sep 17 00:00:00 2001
|
||||
From 291d80dcf32824db5175b031b389d9e1552465e4 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 18:44:10 -0300
|
||||
Subject: [PATCH 01/14] feat: add support for an external videoplayback proxy
|
||||
Subject: [PATCH 02/12] feat: add support for an external videoplayback proxy
|
||||
|
||||
---
|
||||
config/config.example.toml | 1 +
|
||||
src/lib/helpers/config.ts | 3 +++
|
||||
src/routes/invidious_routes/dashManifest.ts | 5 +++--
|
||||
src/routes/invidious_routes/dashManifest.ts | 6 ++++--
|
||||
src/routes/invidious_routes/latestVersion.ts | 3 ++-
|
||||
4 files changed, 9 insertions(+), 3 deletions(-)
|
||||
4 files changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/config/config.example.toml b/config/config.example.toml
|
||||
index c56b95b..e173e06 100644
|
||||
index 5989656..0b4d7b8 100644
|
||||
--- a/config/config.example.toml
|
||||
+++ b/config/config.example.toml
|
||||
@@ -26,6 +26,7 @@
|
||||
@@ -27,6 +27,7 @@
|
||||
# #proxy = "" # env variable: PROXY
|
||||
# # Enable YouTube new video format UMP
|
||||
# ump = false
|
||||
|
@ -23,10 +23,10 @@ index c56b95b..e173e06 100644
|
|||
###
|
||||
# Network call timeouts when talking to YouTube.
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index edba9da..5ff4a2d 100644
|
||||
index 426426f..273fe95 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -26,6 +26,9 @@ const ConfigSchema = z.object({
|
||||
@@ -29,6 +29,9 @@ const ConfigSchema = z.object({
|
||||
debounce_multiplier: z.number().optional(),
|
||||
}).strict().optional(),
|
||||
}).strict().optional(),
|
||||
|
@ -37,33 +37,34 @@ index edba9da..5ff4a2d 100644
|
|||
jobs: z.object({
|
||||
youtube_session: z.object({
|
||||
diff --git a/src/routes/invidious_routes/dashManifest.ts b/src/routes/invidious_routes/dashManifest.ts
|
||||
index 2b796ba..46756cd 100644
|
||||
index e816470..930eef1 100644
|
||||
--- a/src/routes/invidious_routes/dashManifest.ts
|
||||
+++ b/src/routes/invidious_routes/dashManifest.ts
|
||||
@@ -85,8 +85,9 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
let dashUrl = url;
|
||||
if (local) {
|
||||
// Can't create URL type without host part
|
||||
- dashUrl = (dashUrl.pathname + dashUrl.search + "&host=" +
|
||||
- dashUrl.host) as unknown as URL;
|
||||
+ dashUrl = config.networking.external_videoplayback_proxy +
|
||||
+ (dashUrl.pathname + dashUrl.search + "&host=" +
|
||||
+ dashUrl.host) as unknown as URL;
|
||||
if (config.networking.ump) {
|
||||
dashUrl = dashUrl + "&ump=1" as unknown as URL;
|
||||
@@ -109,8 +109,10 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
queryParams.set("enc", "true");
|
||||
queryParams.set("data", encryptedParams);
|
||||
}
|
||||
- dashUrl = (dashUrl.pathname + "?" +
|
||||
- queryParams.toString()) as unknown as URL;
|
||||
+ dashUrl =
|
||||
+ (config.networking.external_videoplayback_proxy +
|
||||
+ dashUrl.pathname + "?" +
|
||||
+ queryParams.toString()) as unknown as URL;
|
||||
return dashUrl;
|
||||
} else {
|
||||
return dashUrl;
|
||||
diff --git a/src/routes/invidious_routes/latestVersion.ts b/src/routes/invidious_routes/latestVersion.ts
|
||||
index 191c0a4..a8ead67 100644
|
||||
index 6421904..07b070a 100644
|
||||
--- a/src/routes/invidious_routes/latestVersion.ts
|
||||
+++ b/src/routes/invidious_routes/latestVersion.ts
|
||||
@@ -64,7 +64,8 @@ latestVersion.get("/", async (c) => {
|
||||
const itagUrlParsed = new URL(itagUrl);
|
||||
let urlToRedirect = itagUrlParsed.toString();
|
||||
if (local) {
|
||||
- urlToRedirect = itagUrlParsed.pathname + itagUrlParsed.search +
|
||||
@@ -83,7 +83,8 @@ latestVersion.get("/", async (c) => {
|
||||
queryParams.set("enc", "true");
|
||||
queryParams.set("data", encryptedParams);
|
||||
}
|
||||
- urlToRedirect = itagUrlParsed.pathname + "?" +
|
||||
+ urlToRedirect = config.networking.external_videoplayback_proxy +
|
||||
+ itagUrlParsed.pathname + itagUrlParsed.search +
|
||||
"&host=" + itagUrlParsed.host;
|
||||
+ itagUrlParsed.pathname + "?" +
|
||||
queryParams.toString();
|
||||
}
|
||||
|
||||
--
|
|
@ -1,7 +1,7 @@
|
|||
From f239b39e13926733663ae7a213a59e0d68563609 Mon Sep 17 00:00:00 2001
|
||||
From 3ac18ddfa246eb421483cfc55120709e203e5e1a Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 18:52:53 -0300
|
||||
Subject: [PATCH 02/14] feat: report the external videoplayback proxy via /info
|
||||
Subject: [PATCH 03/12] feat: report the external videoplayback proxy via /info
|
||||
endpoint
|
||||
|
||||
---
|
|
@ -1,7 +1,7 @@
|
|||
From 4a27e15a8ba0d606ced9e14005c41064d3b446a6 Mon Sep 17 00:00:00 2001
|
||||
From e89236d910bb112204448765055a985dc2a589d5 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 19:02:01 -0300
|
||||
Subject: [PATCH 03/14] feat: add resolution limit on DASH streams to save
|
||||
Subject: [PATCH 04/12] feat: add resolution limit on DASH streams to save
|
||||
bandwidth
|
||||
|
||||
---
|
||||
|
@ -11,25 +11,25 @@ Subject: [PATCH 03/14] feat: add resolution limit on DASH streams to save
|
|||
3 files changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/config/config.example.toml b/config/config.example.toml
|
||||
index e173e06..a3c73be 100644
|
||||
index 0b4d7b8..6d342bb 100644
|
||||
--- a/config/config.example.toml
|
||||
+++ b/config/config.example.toml
|
||||
@@ -15,6 +15,7 @@
|
||||
# # secret key needs to be 16 characters long or more
|
||||
@@ -16,6 +16,7 @@
|
||||
# secret_key = "CHANGE_ME" # env variable: SERVER_SECRET_KEY
|
||||
# verify_requests = false
|
||||
# encrypt_query_params = false # env variable: SERVER_ENCRYPT_QUERY_PARAMS
|
||||
+# max_dash_resolution = 1080
|
||||
|
||||
# [cache]
|
||||
# enabled = true
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index 5ff4a2d..1ad0125 100644
|
||||
index 273fe95..d1968fe 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -9,6 +9,9 @@ const ConfigSchema = z.object({
|
||||
Deno.env.get("SERVER_SECRET_KEY") || "",
|
||||
@@ -12,6 +12,9 @@ const ConfigSchema = z.object({
|
||||
encrypt_query_params: z.boolean().default(
|
||||
Deno.env.get("SERVER_ENCRYPT_QUERY_PARAMS") === "true" || false,
|
||||
),
|
||||
verify_requests: z.boolean().default(false),
|
||||
+ max_dash_resolution: z.number().default(
|
||||
+ Number(Deno.env.get("SERVER_MAX_DASH_RESOLUTION")),
|
||||
+ ),
|
||||
|
@ -37,10 +37,10 @@ index 5ff4a2d..1ad0125 100644
|
|||
cache: z.object({
|
||||
enabled: z.boolean().default(true),
|
||||
diff --git a/src/routes/invidious_routes/dashManifest.ts b/src/routes/invidious_routes/dashManifest.ts
|
||||
index 46756cd..68ae21d 100644
|
||||
index 930eef1..96e8e2f 100644
|
||||
--- a/src/routes/invidious_routes/dashManifest.ts
|
||||
+++ b/src/routes/invidious_routes/dashManifest.ts
|
||||
@@ -61,7 +61,12 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
@@ -62,7 +62,12 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
).includes("av01")
|
||||
) {
|
||||
if (i.mime_type.includes("av01")) {
|
|
@ -1,26 +1,26 @@
|
|||
From 9a8c0cf66ec6b2ad546c9448a907d8123ff1d65b Mon Sep 17 00:00:00 2001
|
||||
From dc49b7941dc22c3c701250d90769df655257e300 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 19:06:04 -0300
|
||||
Subject: [PATCH 04/14] feat: add env variable to set verify_requests
|
||||
Subject: [PATCH 05/12] feat: add env variable to set verify_requests
|
||||
|
||||
---
|
||||
src/lib/helpers/config.ts | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index 1ad0125..05748f0 100644
|
||||
index d1968fe..a5221c9 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -8,7 +8,9 @@ const ConfigSchema = z.object({
|
||||
secret_key: z.string().min(16).default(
|
||||
secret_key: z.string().length(16).default(
|
||||
Deno.env.get("SERVER_SECRET_KEY") || "",
|
||||
),
|
||||
- verify_requests: z.boolean().default(false),
|
||||
+ verify_requests: z.boolean().default(
|
||||
+ Deno.env.get("VERIFY_REQUESTS") === "true" || false,
|
||||
+ ),
|
||||
max_dash_resolution: z.number().default(
|
||||
Number(Deno.env.get("SERVER_MAX_DASH_RESOLUTION")),
|
||||
encrypt_query_params: z.boolean().default(
|
||||
Deno.env.get("SERVER_ENCRYPT_QUERY_PARAMS") === "true" || false,
|
||||
),
|
||||
--
|
||||
2.49.0
|
|
@ -1,7 +1,7 @@
|
|||
From 2efe34cfc218e20aedce6b03453dbebf71e4f782 Mon Sep 17 00:00:00 2001
|
||||
From f940a206dedc8a70ceb507f4373c80a833ae709c Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 19:20:52 -0300
|
||||
Subject: [PATCH 05/14] feat: add support for multiple proxies
|
||||
Subject: [PATCH 06/12] feat: add support for multiple proxies
|
||||
|
||||
---
|
||||
src/lib/helpers/getFetchClient.ts | 17 ++++++++++++++++-
|
|
@ -1,7 +1,7 @@
|
|||
From ba7ed5b559806a1e3625a17b105c9429157f4e63 Mon Sep 17 00:00:00 2001
|
||||
From 36bd0fa14574b05f15aa462cc485eb6b488a2ffc Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 20:34:33 -0300
|
||||
Subject: [PATCH 08/14] feat: add option to disable potoken generation check
|
||||
Subject: [PATCH 07/12] feat: add option to disable potoken generation check
|
||||
|
||||
---
|
||||
config/config.example.toml | 1 +
|
||||
|
@ -10,10 +10,10 @@ Subject: [PATCH 08/14] feat: add option to disable potoken generation check
|
|||
3 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/config/config.example.toml b/config/config.example.toml
|
||||
index a3c73be..4c04ee3 100644
|
||||
index 6d342bb..969c768 100644
|
||||
--- a/config/config.example.toml
|
||||
+++ b/config/config.example.toml
|
||||
@@ -51,6 +51,7 @@
|
||||
@@ -52,6 +52,7 @@
|
||||
# [jobs.youtube_session]
|
||||
# po_token_enabled = true # whether to generate PO tokens
|
||||
# frequency = "*/5 * * * *" # frequency of PO token refresh in cron format
|
||||
|
@ -22,10 +22,10 @@ index a3c73be..4c04ee3 100644
|
|||
# [youtube_session]
|
||||
# oauth_enabled = false
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index 05748f0..a2f6be0 100644
|
||||
index a5221c9..e6b1070 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -39,6 +39,15 @@ const ConfigSchema = z.object({
|
||||
@@ -42,6 +42,15 @@ const ConfigSchema = z.object({
|
||||
youtube_session: z.object({
|
||||
po_token_enabled: z.boolean().default(true),
|
||||
frequency: z.string().default("*/5 * * * *"),
|
|
@ -1,25 +0,0 @@
|
|||
From d805b8f591e9176f2b9990dd7c4184792d564efe Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 20:22:19 -0300
|
||||
Subject: [PATCH 07/14] fix: cut off secret_key to 16 characters
|
||||
|
||||
---
|
||||
src/lib/helpers/verifyRequest.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lib/helpers/verifyRequest.ts b/src/lib/helpers/verifyRequest.ts
|
||||
index 0891839..d92d6d4 100644
|
||||
--- a/src/lib/helpers/verifyRequest.ts
|
||||
+++ b/src/lib/helpers/verifyRequest.ts
|
||||
@@ -11,7 +11,7 @@ export const verifyRequest = (
|
||||
try {
|
||||
const decipher = new Ecb(
|
||||
Aes,
|
||||
- new TextEncoder().encode(config.server.secret_key),
|
||||
+ new TextEncoder().encode(config.server.secret_key.substring(0, 16)),
|
||||
Padding.PKCS7,
|
||||
);
|
||||
|
||||
--
|
||||
2.49.0
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 5f617136161bb6cf1571ee5aa361f6be5e69b33e Mon Sep 17 00:00:00 2001
|
||||
From f475167ed0f1d60e4f8e50c1936ced761d0f72db Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Tue, 25 Mar 2025 00:04:47 -0300
|
||||
Subject: [PATCH 10/14] add proxy retries on innertube error
|
||||
Subject: [PATCH 08/12] add proxy retries on innertube error
|
||||
|
||||
---
|
||||
src/lib/helpers/config.ts | 1 +
|
||||
|
@ -9,10 +9,10 @@ Subject: [PATCH 10/14] add proxy retries on innertube error
|
|||
2 files changed, 23 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index 83ce0fa..d539738 100644
|
||||
index e6b1070..acbede2 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -43,6 +43,7 @@ const ConfigSchema = z.object({
|
||||
@@ -37,6 +37,7 @@ const ConfigSchema = z.object({
|
||||
external_videoplayback_proxy: z.string().default(
|
||||
Deno.env.get("EXTERNAL_VIDEOPLAYBACK_PROXY") || "",
|
||||
),
|
|
@ -1,7 +1,7 @@
|
|||
From 261eac162221700f4eb43f7633bdcfc0837a5ac8 Mon Sep 17 00:00:00 2001
|
||||
From ae88bbd1aa4a42bad78d0241da22cc376a207e67 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Tue, 18 Mar 2025 16:38:23 -0300
|
||||
Subject: [PATCH 11/14] add support for prometheus metrics
|
||||
Subject: [PATCH 09/12] add support for prometheus metrics
|
||||
|
||||
fix deno lint and typo
|
||||
|
||||
|
@ -37,12 +37,12 @@ fix: add missing metrics argument
|
|||
create mode 100644 src/routes/metrics.ts
|
||||
|
||||
diff --git a/config/config.example.toml b/config/config.example.toml
|
||||
index 4c04ee3..01c3f83 100644
|
||||
index 969c768..a5800fb 100644
|
||||
--- a/config/config.example.toml
|
||||
+++ b/config/config.example.toml
|
||||
@@ -16,6 +16,7 @@
|
||||
# secret_key = "CHANGE_ME" # env variable: SERVER_SECRET_KEY
|
||||
@@ -17,6 +17,7 @@
|
||||
# verify_requests = false
|
||||
# encrypt_query_params = false # env variable: SERVER_ENCRYPT_QUERY_PARAMS
|
||||
# max_dash_resolution = 1080
|
||||
+# enable_metrics = false # env variable: ENABLE_METRICS
|
||||
|
||||
|
@ -2153,13 +2153,13 @@ index 9a772c7..6a3432d 100644
|
|||
}
|
||||
}
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index d539738..646132f 100644
|
||||
index acbede2..50f3f8b 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -23,6 +23,13 @@ const ConfigSchema = z.object({
|
||||
? false
|
||||
: true,
|
||||
),
|
||||
@@ -17,6 +17,13 @@ const ConfigSchema = z.object({
|
||||
max_dash_resolution: z.number().default(
|
||||
Number(Deno.env.get("SERVER_MAX_DASH_RESOLUTION")),
|
||||
),
|
||||
+ enable_metrics: z.boolean().default(
|
||||
+ Deno.env.get("ENABLE_METRICS") === "true"
|
||||
+ ? true
|
||||
|
@ -2170,7 +2170,7 @@ index d539738..646132f 100644
|
|||
}).strict().default({}),
|
||||
cache: z.object({
|
||||
enabled: z.boolean().default(true),
|
||||
@@ -43,7 +50,9 @@ const ConfigSchema = z.object({
|
||||
@@ -37,7 +44,9 @@ const ConfigSchema = z.object({
|
||||
external_videoplayback_proxy: z.string().default(
|
||||
Deno.env.get("EXTERNAL_VIDEOPLAYBACK_PROXY") || "",
|
||||
),
|
||||
|
@ -2494,7 +2494,7 @@ index 4f42d28..1e9b7a2 100644
|
|||
+ metrics: Metrics | undefined;
|
||||
};
|
||||
diff --git a/src/main.ts b/src/main.ts
|
||||
index a792fee..c2c265e 100644
|
||||
index 2968a3e..851cd71 100644
|
||||
--- a/src/main.ts
|
||||
+++ b/src/main.ts
|
||||
@@ -9,6 +9,7 @@ import type { HonoVariables } from "./lib/types/HonoVariables.ts";
|
||||
|
@ -2513,15 +2513,15 @@ index a792fee..c2c265e 100644
|
|||
|
||||
let tokenMinter: BG.WebPoMinter;
|
||||
let innertubeClient: Innertube;
|
||||
@@ -72,6 +74,7 @@ if (!innertubeClientOauthEnabled) {
|
||||
@@ -66,6 +68,7 @@ if (!innertubeClientOauthEnabled) {
|
||||
innertubeClient,
|
||||
config,
|
||||
innertubeClientCache as UniversalCache,
|
||||
innertubeClientCache,
|
||||
+ metrics,
|
||||
),
|
||||
{ minTimeout: 1_000, maxTimeout: 60_000, multiplier: 5, jitter: 0 },
|
||||
));
|
||||
@@ -82,11 +85,17 @@ if (!innertubeClientOauthEnabled) {
|
||||
@@ -76,11 +79,17 @@ if (!innertubeClientOauthEnabled) {
|
||||
{ backoffSchedule: [5_000, 15_000, 60_000, 180_000] },
|
||||
async () => {
|
||||
if (innertubeClientJobPoTokenEnabled) {
|
||||
|
@ -2544,7 +2544,7 @@ index a792fee..c2c265e 100644
|
|||
} else {
|
||||
innertubeClient = await Innertube.create({
|
||||
enable_session_cache: false,
|
||||
@@ -124,6 +133,7 @@ app.use("*", async (c, next) => {
|
||||
@@ -118,6 +127,7 @@ app.use("*", async (c, next) => {
|
||||
c.set("innertubeClient", innertubeClient);
|
||||
c.set("tokenMinter", tokenMinter);
|
||||
c.set("config", config);
|
||||
|
@ -2593,7 +2593,7 @@ index 1eaeb14..f900298 100644
|
|||
|
||||
const videoInfo = youtubeVideoInfo(
|
||||
diff --git a/src/routes/invidious_routes/dashManifest.ts b/src/routes/invidious_routes/dashManifest.ts
|
||||
index a4c0950..414b4cf 100644
|
||||
index 96e8e2f..34e0b6e 100644
|
||||
--- a/src/routes/invidious_routes/dashManifest.ts
|
||||
+++ b/src/routes/invidious_routes/dashManifest.ts
|
||||
@@ -17,6 +17,7 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
|
@ -2613,7 +2613,7 @@ index a4c0950..414b4cf 100644
|
|||
const videoInfo = youtubeVideoInfo(
|
||||
innertubeClient,
|
||||
diff --git a/src/routes/invidious_routes/latestVersion.ts b/src/routes/invidious_routes/latestVersion.ts
|
||||
index f1a7605..dbf57c2 100644
|
||||
index 07b070a..74dd090 100644
|
||||
--- a/src/routes/invidious_routes/latestVersion.ts
|
||||
+++ b/src/routes/invidious_routes/latestVersion.ts
|
||||
@@ -21,6 +21,7 @@ latestVersion.get("/", async (c) => {
|
|
@ -1,172 +0,0 @@
|
|||
From 4e14b2c9914d9f10e70394d25c0bf225acebbabe Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Mon, 24 Mar 2025 21:38:33 -0300
|
||||
Subject: [PATCH 09/14] feat: add support for encrypted query parameters
|
||||
|
||||
---
|
||||
src/lib/helpers/config.ts | 9 ++++
|
||||
src/lib/helpers/encrypter.ts | 56 ++++++++++++++++++++
|
||||
src/routes/invidious_routes/dashManifest.ts | 18 +++++--
|
||||
src/routes/invidious_routes/latestVersion.ts | 14 ++++-
|
||||
4 files changed, 91 insertions(+), 6 deletions(-)
|
||||
create mode 100644 src/lib/helpers/encrypter.ts
|
||||
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index a2f6be0..83ce0fa 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -14,6 +14,15 @@ const ConfigSchema = z.object({
|
||||
max_dash_resolution: z.number().default(
|
||||
Number(Deno.env.get("SERVER_MAX_DASH_RESOLUTION")),
|
||||
),
|
||||
+ encrypt_query_params: z
|
||||
+ .boolean()
|
||||
+ .default(
|
||||
+ Deno.env.get("ENCRYPT_QUERY_PARAMS") === "true"
|
||||
+ ? true
|
||||
+ : Deno.env.get("ENCRYPT_QUERY_PARAMS") === "false"
|
||||
+ ? false
|
||||
+ : true,
|
||||
+ ),
|
||||
}).strict().default({}),
|
||||
cache: z.object({
|
||||
enabled: z.boolean().default(true),
|
||||
diff --git a/src/lib/helpers/encrypter.ts b/src/lib/helpers/encrypter.ts
|
||||
new file mode 100644
|
||||
index 0000000..4b45590
|
||||
--- /dev/null
|
||||
+++ b/src/lib/helpers/encrypter.ts
|
||||
@@ -0,0 +1,56 @@
|
||||
+import { decodeBase64, encodeBase64 } from "@std/encoding/base64";
|
||||
+import { Aes } from "crypto/aes.ts";
|
||||
+import { Ecb, Padding } from "crypto/block-modes.ts";
|
||||
+import { Config } from "./config.ts";
|
||||
+
|
||||
+export const encryptQuery = (
|
||||
+ queryParams: string,
|
||||
+ config: Config,
|
||||
+): string => {
|
||||
+ try {
|
||||
+ const cipher = new Ecb(
|
||||
+ Aes,
|
||||
+ new TextEncoder().encode(config.server.secret_key.substring(0, 16)),
|
||||
+ Padding.PKCS7,
|
||||
+ );
|
||||
+
|
||||
+ const encodedData = new TextEncoder().encode(
|
||||
+ queryParams,
|
||||
+ );
|
||||
+
|
||||
+ const encryptedData = cipher.encrypt(encodedData);
|
||||
+
|
||||
+ return encodeBase64(encryptedData).replace(/\+/g, "-").replace(
|
||||
+ /\//g,
|
||||
+ "_",
|
||||
+ );
|
||||
+ } catch (_) {
|
||||
+ return "";
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+export const decryptQuery = (
|
||||
+ queryParams: string,
|
||||
+ config: Config,
|
||||
+): string => {
|
||||
+ try {
|
||||
+ const decipher = new Ecb(
|
||||
+ Aes,
|
||||
+ new TextEncoder().encode(config.server.secret_key.substring(0, 16)),
|
||||
+ Padding.PKCS7,
|
||||
+ );
|
||||
+
|
||||
+ const decryptedData = new TextDecoder().decode(
|
||||
+ decipher.decrypt(
|
||||
+ decodeBase64(
|
||||
+ queryParams.replace(/-/g, "+").replace(/_/g, "/"),
|
||||
+ ),
|
||||
+ ),
|
||||
+ );
|
||||
+
|
||||
+ console.log(decryptedData);
|
||||
+ return decryptedData;
|
||||
+ } catch (_) {
|
||||
+ return "";
|
||||
+ }
|
||||
+};
|
||||
diff --git a/src/routes/invidious_routes/dashManifest.ts b/src/routes/invidious_routes/dashManifest.ts
|
||||
index 68ae21d..a4c0950 100644
|
||||
--- a/src/routes/invidious_routes/dashManifest.ts
|
||||
+++ b/src/routes/invidious_routes/dashManifest.ts
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
} from "../../lib/helpers/youtubePlayerHandling.ts";
|
||||
import { verifyRequest } from "../../lib/helpers/verifyRequest.ts";
|
||||
import { HTTPException } from "hono/http-exception";
|
||||
+import { encryptQuery } from "../../lib/helpers/encrypter.ts";
|
||||
|
||||
const dashManifest = new Hono();
|
||||
|
||||
@@ -88,14 +89,23 @@ dashManifest.get("/:videoId", async (c) => {
|
||||
videoInfo.page[0].video_details?.is_post_live_dvr,
|
||||
(url: URL) => {
|
||||
let dashUrl = url;
|
||||
+ let queryParams = dashUrl.search.substring(1) + "&host=" +
|
||||
+ dashUrl.host;
|
||||
+
|
||||
if (local) {
|
||||
- // Can't create URL type without host part
|
||||
- dashUrl = config.networking.external_videoplayback_proxy +
|
||||
- (dashUrl.pathname + dashUrl.search + "&host=" +
|
||||
- dashUrl.host) as unknown as URL;
|
||||
if (config.networking.ump) {
|
||||
dashUrl = dashUrl + "&ump=1" as unknown as URL;
|
||||
}
|
||||
+ if (config.server.encrypt_query_params) {
|
||||
+ queryParams = "enc=yes&data=" + encryptQuery(
|
||||
+ queryParams,
|
||||
+ config,
|
||||
+ );
|
||||
+ }
|
||||
+ // Can't create URL type without host part
|
||||
+ dashUrl = config.networking.external_videoplayback_proxy +
|
||||
+ (dashUrl.pathname + "?" +
|
||||
+ queryParams) as unknown as URL;
|
||||
return dashUrl;
|
||||
} else {
|
||||
return dashUrl;
|
||||
diff --git a/src/routes/invidious_routes/latestVersion.ts b/src/routes/invidious_routes/latestVersion.ts
|
||||
index a8ead67..f1a7605 100644
|
||||
--- a/src/routes/invidious_routes/latestVersion.ts
|
||||
+++ b/src/routes/invidious_routes/latestVersion.ts
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
youtubeVideoInfo,
|
||||
} from "../../lib/helpers/youtubePlayerHandling.ts";
|
||||
import { verifyRequest } from "../../lib/helpers/verifyRequest.ts";
|
||||
+import { encryptQuery } from "../../lib/helpers/encrypter.ts";
|
||||
|
||||
const latestVersion = new Hono();
|
||||
|
||||
@@ -63,10 +64,19 @@ latestVersion.get("/", async (c) => {
|
||||
const itagUrl = selectedItagFormat[0].url as string;
|
||||
const itagUrlParsed = new URL(itagUrl);
|
||||
let urlToRedirect = itagUrlParsed.toString();
|
||||
+ let queryParams = itagUrlParsed.search.substring(1) + "&host=" +
|
||||
+ itagUrlParsed.host;
|
||||
+
|
||||
if (local) {
|
||||
+ if (config.server.encrypt_query_params) {
|
||||
+ queryParams = "enc=yes&data=" + encryptQuery(
|
||||
+ queryParams,
|
||||
+ config,
|
||||
+ );
|
||||
+ }
|
||||
+
|
||||
urlToRedirect = config.networking.external_videoplayback_proxy +
|
||||
- itagUrlParsed.pathname + itagUrlParsed.search +
|
||||
- "&host=" + itagUrlParsed.host;
|
||||
+ itagUrlParsed.pathname + "?" + queryParams;
|
||||
}
|
||||
|
||||
if (title) urlToRedirect += `&title=${encodeURIComponent(title)}`;
|
||||
--
|
||||
2.49.0
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 75d88c65065d0d4e3af4651332c9d5fc4ad5c3cf Mon Sep 17 00:00:00 2001
|
||||
From 99a492d9bafd6f5bd1482df08441ebb703b45a59 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Tue, 25 Mar 2025 00:07:28 -0300
|
||||
Subject: [PATCH 12/14] add metrics for proxy retries
|
||||
Subject: [PATCH 10/12] add metrics for proxy retries
|
||||
|
||||
---
|
||||
src/lib/helpers/metrics.ts | 5 +++++
|
|
@ -1,18 +1,18 @@
|
|||
From 695e7338dd56fb7e28f32b4e5fd6f1b81701b992 Mon Sep 17 00:00:00 2001
|
||||
From d54369cd1b97d5beeaf0d867d2c24a36a2a0445c Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Tue, 25 Mar 2025 00:24:07 -0300
|
||||
Subject: [PATCH 13/14] fix: fix tokio overflow on compile
|
||||
Subject: [PATCH 11/12] fix: fix tokio overflow on compile
|
||||
|
||||
---
|
||||
Dockerfile | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Dockerfile b/Dockerfile
|
||||
index a6dc150..bdc43f5 100644
|
||||
index 0f9f933..99fce38 100644
|
||||
--- a/Dockerfile
|
||||
+++ b/Dockerfile
|
||||
@@ -1,5 +1,7 @@
|
||||
FROM denoland/deno:debian-2.2.4 AS builder
|
||||
FROM denoland/deno:debian-2.2.5 AS builder
|
||||
|
||||
+ENV RUST_MIN_STACK=9999999999
|
||||
+
|
|
@ -1,17 +1,17 @@
|
|||
From 0855ac4ec1c614f25dccbdfb4fc97bc0789d5ad7 Mon Sep 17 00:00:00 2001
|
||||
From db6ff1b23bc50dba40611277e26e797da12b9685 Mon Sep 17 00:00:00 2001
|
||||
From: Fijxu <fijxu@nadeko.net>
|
||||
Date: Wed, 26 Mar 2025 12:24:49 -0300
|
||||
Subject: [PATCH 14/14] Add environment variable for youtube_session.frequency
|
||||
Subject: [PATCH 12/12] Add environment variable for youtube_session.frequency
|
||||
|
||||
---
|
||||
src/lib/helpers/config.ts | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lib/helpers/config.ts b/src/lib/helpers/config.ts
|
||||
index 646132f..16e4fbb 100644
|
||||
index 50f3f8b..8cf34fd 100644
|
||||
--- a/src/lib/helpers/config.ts
|
||||
+++ b/src/lib/helpers/config.ts
|
||||
@@ -57,7 +57,9 @@ const ConfigSchema = z.object({
|
||||
@@ -51,7 +51,9 @@ const ConfigSchema = z.object({
|
||||
jobs: z.object({
|
||||
youtube_session: z.object({
|
||||
po_token_enabled: z.boolean().default(true),
|
Loading…
Add table
Reference in a new issue