Remove env-based tunnel toggle

This commit is contained in:
weishu
2026-01-13 20:32:47 +08:00
parent 5defb6dbfc
commit e0c36b71e6
5 changed files with 29 additions and 39 deletions
+3 -11
View File
@@ -1,8 +1,8 @@
import chalk from 'chalk'
import type { CommandDefinition, CommandContext } from './types'
function parseServerArgs(args: string[]): { host?: string; port?: string; relay?: boolean } {
const result: { host?: string; port?: string; relay?: boolean } = {}
function parseServerArgs(args: string[]): { host?: string; port?: string } {
const result: { host?: string; port?: string } = {}
for (let i = 0; i < args.length; i++) {
const arg = args[i]
@@ -14,10 +14,6 @@ function parseServerArgs(args: string[]): { host?: string; port?: string; relay?
result.host = arg.slice('--host='.length)
} else if (arg.startsWith('--port=')) {
result.port = arg.slice('--port='.length)
} else if (arg === '--relay') {
result.relay = true
} else if (arg === '--no-relay') {
result.relay = false
}
}
@@ -29,7 +25,7 @@ export const serverCommand: CommandDefinition = {
requiresRuntimeAssets: false,
run: async (context: CommandContext) => {
try {
const { host, port, relay } = parseServerArgs(context.commandArgs)
const { host, port } = parseServerArgs(context.commandArgs)
if (host) {
process.env.WEBAPP_HOST = host
@@ -37,10 +33,6 @@ export const serverCommand: CommandDefinition = {
if (port) {
process.env.WEBAPP_PORT = port
}
if (relay !== undefined) {
process.env.HAPI_RELAY = relay ? 'true' : 'false'
}
await import('../../../server/src/index')
} catch (error) {
console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error')
-14
View File
@@ -17,7 +17,6 @@ export interface ServerSettings {
webappPort: number
webappUrl: string
corsOrigins: string[]
tunnelEnabled: boolean
}
export interface ServerSettingsResult {
@@ -29,7 +28,6 @@ export interface ServerSettingsResult {
webappPort: 'env' | 'file' | 'default'
webappUrl: 'env' | 'file' | 'default'
corsOrigins: 'env' | 'file' | 'default'
tunnelEnabled: 'env' | 'file' | 'default'
}
savedToFile: boolean
}
@@ -93,7 +91,6 @@ export async function loadServerSettings(dataDir: string): Promise<ServerSetting
webappPort: 'default',
webappUrl: 'default',
corsOrigins: 'default',
tunnelEnabled: 'default',
}
// telegramBotToken: env > file > null
let telegramBotToken: string | null = null
@@ -185,16 +182,6 @@ export async function loadServerSettings(dataDir: string): Promise<ServerSetting
corsOrigins = deriveCorsOrigins(webappUrl)
}
// tunnelEnabled: env (HAPI_RELAY) > file > false (default disabled)
let tunnelEnabled = false
if (process.env.HAPI_RELAY !== undefined) {
tunnelEnabled = process.env.HAPI_RELAY === 'true' || process.env.HAPI_RELAY === '1'
sources.tunnelEnabled = 'env'
} else if (settings.tunnelEnabled !== undefined) {
tunnelEnabled = settings.tunnelEnabled
sources.tunnelEnabled = 'file'
}
// Save settings if any new values were added
if (needsSave) {
await writeSettings(settingsFile, settings)
@@ -208,7 +195,6 @@ export async function loadServerSettings(dataDir: string): Promise<ServerSetting
webappPort,
webappUrl,
corsOrigins,
tunnelEnabled,
},
sources,
savedToFile: needsSave,
-1
View File
@@ -18,7 +18,6 @@ export interface Settings {
webappPort?: number
webappUrl?: string
corsOrigins?: string[]
tunnelEnabled?: boolean
}
export function getSettingsFile(dataDir: string): string {
-6
View File
@@ -12,7 +12,6 @@
* - WEBAPP_PORT: Port for Mini App HTTP server (default: 3006)
* - WEBAPP_URL: Public URL for Telegram Mini App
* - CORS_ORIGINS: Comma-separated CORS origins
* - HAPI_RELAY: Enable/disable tunnel (default: false)
* - HAPI_RELAY_API: Relay API domain for tunwg (default: relay.hapi.run)
* - HAPI_RELAY_AUTH: Relay auth key for tunwg (default: hapi)
* - HAPI_RELAY_FORCE_TCP: Force TCP relay mode when UDP is unavailable (true/1)
@@ -38,7 +37,6 @@ export interface ConfigSources {
webappUrl: ConfigSource
corsOrigins: ConfigSource
cliApiToken: 'env' | 'file' | 'generated'
tunnelEnabled: ConfigSource
}
class Configuration {
@@ -81,9 +79,6 @@ class Configuration {
/** Allowed CORS origins for Mini App + Socket.IO (comma-separated env override) */
public readonly corsOrigins: string[]
/** Whether tunnel is enabled (default: true) */
public readonly tunnelEnabled: boolean
/** Sources of each configuration value */
public readonly sources: ConfigSources
@@ -106,7 +101,6 @@ class Configuration {
this.webappPort = serverSettings.webappPort
this.miniAppUrl = serverSettings.webappUrl
this.corsOrigins = serverSettings.corsOrigins
this.tunnelEnabled = serverSettings.tunnelEnabled
// CLI API token - will be set by _setCliApiToken() before create() returns
this.cliApiToken = ''
+26 -7
View File
@@ -41,6 +41,25 @@ function formatSource(source: ConfigSource | 'generated'): string {
}
}
type RelayFlagSource = 'default' | '--relay' | '--no-relay'
function resolveRelayFlag(args: string[]): { enabled: boolean; source: RelayFlagSource } {
let enabled = false
let source: RelayFlagSource = 'default'
for (const arg of args) {
if (arg === '--relay') {
enabled = true
source = '--relay'
} else if (arg === '--no-relay') {
enabled = false
source = '--no-relay'
}
}
return { enabled, source }
}
let syncEngine: SyncEngine | null = null
let happyBot: HappyBot | null = null
let webServer: BunServer<WebSocketData> | null = null
@@ -54,7 +73,8 @@ async function main() {
// Load configuration (async - loads from env/file with persistence)
const config = await createConfiguration()
const relayApiDomain = process.env.HAPI_RELAY_API || null
const relayApiDomain = process.env.HAPI_RELAY_API || 'relay.hapi.run'
const relayFlag = resolveRelayFlag(process.argv)
// Display CLI API token information
if (config.cliApiTokenIsNew) {
@@ -88,11 +108,10 @@ async function main() {
}
// Display tunnel status
if (config.tunnelEnabled) {
const apiDomain = relayApiDomain || 'relay.hapi.run'
console.log(`[Server] Tunnel: enabled (${formatSource(config.sources.tunnelEnabled)}), API: ${apiDomain}`)
if (relayFlag.enabled) {
console.log(`[Server] Tunnel: enabled (${relayFlag.source}), API: ${relayApiDomain}`)
} else {
console.log(`[Server] Tunnel: disabled (${formatSource(config.sources.tunnelEnabled)})`)
console.log(`[Server] Tunnel: disabled (${relayFlag.source})`)
}
const store = new Store(config.dbPath)
@@ -158,7 +177,7 @@ async function main() {
// Initialize tunnel AFTER web server is ready
let tunnelUrl: string | null = null
if (config.tunnelEnabled) {
if (relayFlag.enabled) {
tunnelManager = new TunnelManager({
localPort: config.webappPort,
enabled: true,
@@ -171,7 +190,7 @@ async function main() {
tunnelUrl = await tunnelManager.start()
} catch (error) {
console.error('[Tunnel] Failed to start:', error instanceof Error ? error.message : error)
console.log('[Tunnel] Server continuing without tunnel. Use --no-relay to disable.')
console.log('[Tunnel] Server continuing without tunnel. Restart without --relay to disable.')
}
}