File size: 3,590 Bytes
2b08713
 
 
0deb3e9
 
 
6f9647d
 
5d44c89
b6e79c3
63aa82b
8673beb
 
8a218b0
 
541b32b
63aa82b
 
 
2b08713
b6e79c3
 
 
2b08713
63aa82b
 
2b08713
 
 
 
 
 
b6e79c3
2b08713
b6e79c3
2b08713
 
 
0deb3e9
2b08713
 
 
 
 
 
 
 
 
 
 
 
 
0deb3e9
2b08713
 
 
0deb3e9
 
 
 
 
 
2b08713
0f454b6
2b08713
 
173df80
2b08713
 
 
 
 
6f9647d
 
5d44c89
0f454b6
63aa82b
0deb3e9
 
 
63aa82b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0f454b6
b6e79c3
 
0f454b6
 
2b08713
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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";

await NS_runtime.set_env_var_db();

await start_mongo_db();

const { rewriteWorkersUrl, startWorkersProxy, rewriteWorkersUrl_t2, get_dns } =
  NS_workers_proxy;

const APP_ENV = process.env.APP_ENV;
const APP_ORIGIN = process.env.APP_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;
  })

  .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}`
);