| import { Context, Elysia, t } from "elysia"; |
| import https from "node:https"; |
| import { NS_error } from "../../../../../packages/lib/helpers/client/error"; |
| import { NS_routes_c } from "../../../../../packages/lib/helpers/client/route"; |
| import { NS_promise } from "../../../../../packages/lib/helpers/client/promise"; |
| import ky from "ky"; |
| import { Readable } from "node:stream"; |
|
|
| const REPO_ORIGIN = process.env.REPO_ORIGIN; |
|
|
| const sub_router = new Elysia({ prefix: "/test" }).get("/foo", async (ctx) => { |
| const { query, params, request, status, set } = ctx; |
|
|
| const REQ0 = request.url; |
| const REQ_ORIGIN = (ctx as any).publicOrigin || new URL(REQ0).origin; |
|
|
| if (!REPO_ORIGIN) { |
| throw NS_error.F_create_error({ |
| status: 400, |
| message: "Repo origin undefined" |
| }); |
| } |
|
|
| let target = new URL( |
| "https://dl.gemlelispe.workers.dev/https%3A%2F%2Fbcdnxw.hakunaymatata.com%2Fbt%2F7e1c2ff4f2a619c16f40825883eebe6e.mp4%3Fsign%3D288c2a2346ad3cd3c22dcc70e483ca7f%26t%3D1773678165?n=Vini%20Jr.%20(2025)" |
| ); |
|
|
| const [E_, R_] = await NS_promise.F_catch_promise({ |
| promise: ky |
| .post(NS_routes_c.F_flat_url_slash(`${REPO_ORIGIN}/dns/resolve`), { |
| json: { |
| target: target.href, |
| method: "GET", |
| headers: { |
| referer: "https://dl.vidsrc.vip/" |
| } |
| } |
| }) |
| .json() |
| }); |
|
|
| if (E_ || !R_) { |
| const { status, message } = NS_error.F_collect_error_status_n_message({ |
| ERR: E_ |
| }); |
|
|
| throw NS_error.F_create_error({ status, message }); |
| } |
|
|
| try { |
| return new Promise((resolve, reject) => { |
| const req = https.request(R_, (res) => { |
| const res_headers = res.headers; |
| const res_status = res.statusCode; |
|
|
| const new_res_headers = new Headers(); |
|
|
| const blacklisted_headers = [ |
| "host", |
| "connection", |
| "content-encoding", |
| "transfer-encoding", |
| "access-control-allow-origin", |
| "x-frame-options", |
| "content-security-policy" |
| ]; |
|
|
| Object.entries(res_headers).forEach(([key, value]) => { |
| if (!blacklisted_headers.includes(key.toLowerCase()) && value) { |
| new_res_headers.set(key, value.toString()); |
|
|
| if (["content-length"].includes(key.toLowerCase())) { |
| new_res_headers.set(`x-content-length`, value.toString()); |
| } |
| } |
| }); |
|
|
| set.status = res_status; |
|
|
| Object.entries(new_res_headers).forEach(([key, value]) => { |
| set.headers[key] = value.toString(); |
| }); |
|
|
| |
| const web_stream = Readable.toWeb(res); |
| |
|
|
| |
| |
| resolve( |
| new Response(web_stream as any, { |
| status: res_status, |
| headers: new_res_headers |
| }) |
| ); |
| }); |
|
|
| req.on("error", (err) => { |
| set.status = 502; |
| resolve({ error: "Upstream connection failed" }); |
| }); |
|
|
| req.end(); |
| }); |
| } catch (error: unknown) { |
| const { status, message } = NS_error.F_collect_error_status_n_message({ |
| ERR: error |
| }); |
|
|
| throw NS_error.F_create_error({ status, message }); |
| } |
| }); |
|
|
| export const TestRouter = sub_router; |
|
|