mirror of
https://github.com/wukko/cobalt.git
synced 2024-11-15 12:50:01 +00:00
api: move service disabling to DISABLED_SERVICES
env
This commit is contained in:
parent
ee375a27cd
commit
7a557a97c3
4 changed files with 23 additions and 26 deletions
|
@ -1,5 +1,14 @@
|
|||
import { services } from "./processing/service-config.js";
|
||||
|
||||
const genericUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
|
||||
|
||||
const disabledServices = process.env.DISABLED_SERVICES?.split(',') || [];
|
||||
const enabledServices = new Set(Object.keys(services).filter(e => {
|
||||
if (!disabledServices.includes(e)) {
|
||||
return e;
|
||||
}
|
||||
}));
|
||||
|
||||
const env = {
|
||||
apiURL: process.env.API_URL || '',
|
||||
apiPort: process.env.API_PORT || 9000,
|
||||
|
@ -27,6 +36,8 @@ const env = {
|
|||
turnstileSecret: process.env.TURNSTILE_SECRET,
|
||||
jwtSecret: process.env.JWT_SECRET,
|
||||
jwtLifetime: process.env.JWT_EXPIRY || 120,
|
||||
|
||||
enabledServices,
|
||||
}
|
||||
|
||||
export {
|
||||
|
|
|
@ -203,8 +203,8 @@ export const runAPI = (express, app, __dirname) => {
|
|||
}
|
||||
|
||||
const parsed = extract(normalizedRequest.url);
|
||||
if (parsed === null) {
|
||||
return fail(res, "error.api.service.unsupported");
|
||||
if ("error" in parsed) {
|
||||
return fail(res, `error.api.service.${parsed.error}`);
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -5,7 +5,6 @@ export const hlsExceptions = ["dailymotion", "vimeo", "rutube"];
|
|||
|
||||
export const services = {
|
||||
bilibili: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"video/:comId",
|
||||
"_shortLink/:comShortLink",
|
||||
|
@ -15,11 +14,9 @@ export const services = {
|
|||
subdomains: ["m"],
|
||||
},
|
||||
dailymotion: {
|
||||
enabled: true,
|
||||
patterns: ["video/:id"],
|
||||
},
|
||||
facebook: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"_shortLink/:shortLink",
|
||||
":username/videos/:caption/:id",
|
||||
|
@ -31,7 +28,6 @@ export const services = {
|
|||
altDomains: ["fb.watch"],
|
||||
},
|
||||
instagram: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"reels/:postId",
|
||||
":username/reel/:postId",
|
||||
|
@ -44,11 +40,9 @@ export const services = {
|
|||
altDomains: ["ddinstagram.com"],
|
||||
},
|
||||
loom: {
|
||||
enabled: true,
|
||||
patterns: ["share/:id"],
|
||||
},
|
||||
ok: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"video/:id",
|
||||
"videoembed/:id"
|
||||
|
@ -56,7 +50,6 @@ export const services = {
|
|||
tld: "ru",
|
||||
},
|
||||
pinterest: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"pin/:id",
|
||||
"pin/:id/:garbage",
|
||||
|
@ -64,7 +57,6 @@ export const services = {
|
|||
],
|
||||
},
|
||||
reddit: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"r/:sub/comments/:id/:title",
|
||||
"user/:user/comments/:id/:title"
|
||||
|
@ -72,7 +64,6 @@ export const services = {
|
|||
subdomains: "*",
|
||||
},
|
||||
rutube: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"video/:id",
|
||||
"play/embed/:id",
|
||||
|
@ -84,7 +75,6 @@ export const services = {
|
|||
tld: "ru",
|
||||
},
|
||||
snapchat: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":shortLink",
|
||||
"spotlight/:spotlightId",
|
||||
|
@ -97,7 +87,6 @@ export const services = {
|
|||
subdomains: ["t", "story"],
|
||||
},
|
||||
soundcloud: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":author/:song/s-:accessKey",
|
||||
":author/:song",
|
||||
|
@ -106,7 +95,6 @@ export const services = {
|
|||
subdomains: ["on", "m"],
|
||||
},
|
||||
streamable: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":id",
|
||||
"o/:id",
|
||||
|
@ -115,7 +103,6 @@ export const services = {
|
|||
],
|
||||
},
|
||||
tiktok: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":user/video/:postId",
|
||||
":id",
|
||||
|
@ -126,7 +113,6 @@ export const services = {
|
|||
subdomains: ["vt", "vm", "m"],
|
||||
},
|
||||
tumblr: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"post/:id",
|
||||
"blog/view/:user/:id",
|
||||
|
@ -136,12 +122,10 @@ export const services = {
|
|||
subdomains: "*",
|
||||
},
|
||||
twitch: {
|
||||
enabled: true,
|
||||
patterns: [":channel/clip/:clip"],
|
||||
tld: "tv",
|
||||
},
|
||||
twitter: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":user/status/:id",
|
||||
":user/status/:id/video/:index",
|
||||
|
@ -153,12 +137,10 @@ export const services = {
|
|||
altDomains: ["x.com", "vxtwitter.com", "fixvx.com"],
|
||||
},
|
||||
vine: {
|
||||
enabled: true,
|
||||
patterns: ["v/:id"],
|
||||
tld: "co",
|
||||
},
|
||||
vimeo: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
":id",
|
||||
"video/:id",
|
||||
|
@ -168,7 +150,6 @@ export const services = {
|
|||
subdomains: ["player"],
|
||||
},
|
||||
vk: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"video:userId_:videoId",
|
||||
"clip:userId_:videoId",
|
||||
|
@ -177,7 +158,6 @@ export const services = {
|
|||
subdomains: ["m"],
|
||||
},
|
||||
youtube: {
|
||||
enabled: true,
|
||||
patterns: [
|
||||
"watch?v=:id",
|
||||
"embed/:id",
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import { services } from "./service-config.js";
|
||||
import { strict as assert } from "node:assert";
|
||||
import psl from "psl";
|
||||
import { strict as assert } from "node:assert";
|
||||
|
||||
import { env } from "../config.js";
|
||||
import { services } from "./service-config.js";
|
||||
|
||||
function aliasURL(url) {
|
||||
assert(url instanceof URL);
|
||||
|
@ -160,8 +162,12 @@ export function extract(url) {
|
|||
|
||||
const host = getHostIfValid(url);
|
||||
|
||||
if (!host || !services[host].enabled) {
|
||||
return null;
|
||||
if (!host) {
|
||||
return { error: "unsupported" };
|
||||
}
|
||||
|
||||
if (!env.enabledServices.has(host)) {
|
||||
return { error: "disabled" };
|
||||
}
|
||||
|
||||
let patternMatch;
|
||||
|
|
Loading…
Reference in a new issue