Add ngrok tunnel

This commit is contained in:
被遗忘的记忆
2024-07-26 23:20:44 +08:00
committed by GitHub
parent 6df16f92f1
commit 99471f4719
+31 -3
View File
@@ -2,6 +2,7 @@ import express from "express";
import { createEvent, getGitRevision } from "./utils.mjs";
import YouProvider from "./provider.mjs";
import localtunnel from "localtunnel";
import ngrok from 'ngrok';
import { v4 as uuidv4 } from "uuid";
const app = express();
const port = process.env.PORT || 8080;
@@ -440,10 +441,11 @@ app.listen(port, async () => {
// 检查是否启用隧道
if (process.env.ENABLE_TUNNEL === "true") {
// 输出等待创建隧道的提示
console.log("创建隧道中...");
const tunnelType = process.env.TUNNEL_TYPE || "localtunnel";
console.log(`创建${tunnelType}隧道中...`);
// 设置隧道配置
if (tunnelType === "localtunnel") {
// localtunnel
const tunnelOptions = { port: port };
if (process.env.SUBDOMAIN) {
tunnelOptions.subdomain = process.env.SUBDOMAIN;
@@ -459,6 +461,32 @@ app.listen(port, async () => {
} catch (error) {
console.error("创建隧道失败:", error);
}
} else if (tunnelType === "ngrok") {
// ngrok
try {
const ngrokOptions = {
addr: port,
authtoken: process.env.NGROK_AUTH_TOKEN
};
// 添加自定义域名
if (process.env.NGROK_CUSTOM_DOMAIN) {
ngrokOptions.hostname = process.env.NGROK_CUSTOM_DOMAIN;
} else if (process.env.SUBDOMAIN) {
ngrokOptions.subdomain = process.env.SUBDOMAIN;
}
const url = await ngrok.connect(ngrokOptions);
console.log(`隧道已成功创建,可通过以下URL访问: ${url}/v1`);
process.on('SIGTERM', async () => {
await ngrok.kill();
console.log("已关闭隧道");
});
} catch (error) {
console.error("创建隧道失败:", error);
}
}
}
});