SIAF / src /index.ts
GUI-STUDIO
Refactor scraper paths; add websockets & showtime
a7fdbc8
Raw
History Blame Contribute Delete
4.47 kB
import { Elysia, Context, t } from "elysia";
import { logger } from "@chneau/elysia-logger";
import { cors } from "@elysiajs/cors";
import { NS_Misc } from "../../../../packages/lib/helpers/client/misc";
import { NS_error } from "../../../../packages/lib/helpers/client/error";
import { NS_routes_elysia } from "../../../../packages/lib/helpers/server/routes-elysia";
import { FfmpegV2Router } from "./sub-router/ffmpeg/v2";
import { ShowtimeV2Router } from "./sub-router/showtime/v2";
import { TestRouter } from "./sub-router/test";
import { NS_runtime } from "../../../../packages/lib/env.runtime";
import { NS_workers_proxy } from "../../../../packages/lib/proxy-server/workers-proxy";
import { start_mongo_db } from "../../../../packages/db/mongo-db/init";
import { NS_websockets } from "./lib/ws";
await NS_runtime.set_env_var_db();
await start_mongo_db();
const { rewriteWorkersUrl, startWorkersProxy, rewriteWorkersUrl_t2, get_dns } =
NS_workers_proxy;
const APP_ENV = () => NS_runtime.ENV_VAR_DB?.APP_ENV || process?.env?.APP_ENV;
const APP_ORIGIN = () =>
NS_runtime.ENV_VAR_DB?.APP_ORIGIN || process?.env?.APP_ORIGIN;
const REPO_ORIGIN = () =>
NS_runtime.ENV_VAR_DB?.REPO_ORIGIN || process.env.REPO_ORIGIN;
const PORT = process.env.PORT;
// await startWorkersProxy();
const app = new Elysia()
.use(
cors({
origin: "*",
allowedHeaders: "*",
methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD"],
exposeHeaders: "*"
}) as any
)
.derive((ctx: any) => ({
publicOrigin: NS_routes_elysia.F_public_origin(ctx)
}))
.use(logger())
.onError(async ({ code, error }) => {
let e_message = "";
if (code === "VALIDATION") {
e_message = error.message;
try {
e_message = JSON.parse(e_message).summary;
} catch (err) {}
}
const err_d = NS_error.F_collect_error_status_n_message({
ERR: error
});
NS_Misc.console.error({ ENV: "dev", _browser: false, _log: ["\n"] });
NS_Misc.console.error({
ENV: "dev",
_browser: false,
_log: [{ code, e_message, ...err_d }, "\n"]
});
return new Response(err_d.message, {
status: err_d.status,
headers: {
"x-error-message": JSON.stringify(err_d.message),
"x-error-status": err_d.status
}
});
})
.use(ShowtimeV2Router)
.use(FfmpegV2Router)
.use(TestRouter)
.get("/", async ({ request }) => {
return "🦊 Hello Rafiki 🍿";
})
.get("/test/p", async ({ request }) => {
const originalUrl =
"https://cool.tylerfisher55.workers.dev/afc7d47f/uz5gyMPGU9TVujalv1-l0gCq1t5YoLPmJOs0BK8vPdXqyusELznNCnUjCjs93MmANIYp__VYV9NVMM33xaH8-hxFDOQjzy6xGM8xf6yfw1YOmJhdwv2R3fFOXPVk90JFUhfo-oz1cLaYBHPnU0wPrb84UsIVRnunq3UKDSpFMLVBnEy7VJtuHl7T90GpI0EcY_xtuRtQguJ7pQqdKgGVJRP7_urSkYuXf-zAySLgY6isRw-vKYh1EnOLybifGW5Q8AT-r-BlvwNe4vDMjJ3blHFeAsSS2Z3XMfOdM0dQbJwO7o4igwfpIVILbI2YkKuRzIbaWTMXAe7f9vKUJpS5cXEG5UB3EwOm_-yobxVKvrPZqcdrG-Qteh16fTl9Ll7PiYwlA-Ebc2S0QlEWRAXsB0IZd3ixrCxSqSfHZwF6p38FGC0EeNUqW_enbS8BA_kGQhiA9q9Z4P2yxF5CN5-WBTXw6O8UMygbUNhoi-BWnk02DRu0oeyEoE2OGVrN-zRP2KNGOejNL-BbmcLd9yB0qP1Z1RF8wszuFx8x6iQUuIXCXUSGzxZAQie3dELhVWFKSj__CqTSgk8adDCyd8mYLnHzh1jFpSlDDOwF65blF6rmWcYZmgfHcSIe9mIgpkRE0zPF5J_AcvKdYSoILfKj2kzpaF_yI8DceEqCWsDojyzMQi7YO02EMx8MdmtqG9BnHtto7tEiVWZnOQJyc6BinQ.m3u8";
await get_dns({
target: originalUrl,
method: "GET",
headers: {
Referer: "https://111movies.net/"
}
});
const foo = rewriteWorkersUrl_t2(originalUrl);
const res = await fetch(foo, {
method: "GET"
});
return res;
})
.ws("/ws", {
open(socket: any) {
const socket_id = socket.id;
const remote_address = socket.remoteAddress;
NS_websockets.ws_clients.set(socket_id, socket);
if (!NS_runtime.IS_PROD) {
console.log("WS CONNECTED:", remote_address, socket_id);
}
socket.send(JSON.stringify({ type: "CONNECTED", ws_id: socket_id }));
},
close(socket: any) {
const socket_id = socket.id;
const remote_address = socket.remoteAddress;
NS_websockets.ws_clients.delete(socket_id);
if (!NS_runtime.IS_PROD) {
console.log("WS CLOSED:", remote_address, socket_id);
}
}
})
.listen({
port: PORT || 7860,
...(NS_runtime.IS_PROD && { hostname: "0.0.0.0" }),
idleTimeout: 120
});
console.log(
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
);