mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
42 lines
1.7 KiB
Swift
42 lines
1.7 KiB
Swift
import Foundation
|
|
|
|
/// Server configuration.
|
|
///
|
|
/// This struct manages the configuration for the VibeTunnel web server,
|
|
/// including network settings and startup behavior.
|
|
struct ServerConfig {
|
|
/// The port number the server listens on.
|
|
///
|
|
/// Default is typically 4020 for production or 4021 for development.
|
|
/// Users can customize this to avoid port conflicts with other services.
|
|
let port: Int
|
|
|
|
/// The dashboard access mode.
|
|
///
|
|
/// Controls who can access the VibeTunnel web dashboard:
|
|
/// - `"local"`: Only accessible from localhost
|
|
/// - `"network"`: Accessible from any device on the local network
|
|
/// - `"tunnel"`: Accessible through ngrok tunnel (requires authentication)
|
|
let dashboardAccessMode: String
|
|
|
|
/// Whether to clean up stale sessions on startup.
|
|
///
|
|
/// When `true`, the server will remove any orphaned or inactive
|
|
/// terminal sessions when it starts. This helps prevent resource
|
|
/// leaks but may terminate sessions that were intended to persist.
|
|
let cleanupOnStartup: Bool
|
|
|
|
/// Creates a server configuration from current user defaults.
|
|
///
|
|
/// This factory method reads the current server settings from user defaults
|
|
/// to create a configuration instance that reflects the user's preferences.
|
|
///
|
|
/// - Returns: A `ServerConfig` instance with current server settings.
|
|
static func current() -> Self {
|
|
Self(
|
|
port: AppConstants.intValue(for: AppConstants.UserDefaultsKeys.serverPort),
|
|
dashboardAccessMode: AppConstants.stringValue(for: AppConstants.UserDefaultsKeys.dashboardAccessMode),
|
|
cleanupOnStartup: AppConstants.boolValue(for: AppConstants.UserDefaultsKeys.cleanupOnStartup)
|
|
)
|
|
}
|
|
}
|