a6ada31aa6
PNG screenshots are now gated by WEBTERM_SCREENSHOT_MODE. The dashboard selects SVG by default and switches to PNG when enabled, with ETag caching and eviction for both formats. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package webterm
|
|
|
|
import (
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
DefaultHost = "0.0.0.0"
|
|
DefaultPort = 8080
|
|
DefaultTheme = "xterm"
|
|
DefaultFontSize = 16
|
|
DefaultTerminalWidth = 132
|
|
DefaultTerminalHeight = 45
|
|
|
|
ScreenshotForceRedrawEnv = "WEBTERM_SCREENSHOT_FORCE_REDRAW"
|
|
ScreenshotModeEnv = "WEBTERM_SCREENSHOT_MODE"
|
|
DockerUsernameEnv = "WEBTERM_DOCKER_USERNAME"
|
|
DockerAutoCommandEnv = "WEBTERM_DOCKER_AUTO_COMMAND"
|
|
DockerHostEnv = "DOCKER_HOST"
|
|
|
|
AutoCommandSentinel = "__docker_exec__"
|
|
)
|
|
|
|
var Version = "dev"
|
|
|
|
var Windows = runtime.GOOS == "windows"
|
|
|
|
func init() {
|
|
if strings.TrimSpace(Version) != "" && Version != "dev" {
|
|
return
|
|
}
|
|
for _, candidate := range []string{"VERSION", "../VERSION", "../../VERSION"} {
|
|
data, err := os.ReadFile(candidate)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
if v := strings.TrimSpace(string(data)); v != "" {
|
|
Version = v
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func EnvBool(name string) bool {
|
|
v, ok := os.LookupEnv(name)
|
|
if !ok {
|
|
return false
|
|
}
|
|
switch strings.ToLower(strings.TrimSpace(v)) {
|
|
case "1", "true", "yes", "on":
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|