package main import ( "fmt" "os" "os/exec" "tailscale-vpn/internal/services" "tailscale-vpn/internal/tui" tea "charm.land/bubbletea/v2" ) func authenticateSudo() error { cmd := exec.Command("sudo", "-v") cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr return cmd.Run() } func main() { // Authenticate sudo before starting TUI fmt.Println("Authenticating sudo...") if err := authenticateSudo(); err != nil { fmt.Fprintln(os.Stderr, "Failed to authenticate sudo:", err) fmt.Fprintln(os.Stderr, "Sudo is required to manage the Tailscale exit node.") os.Exit(1) } srvStore, _ := services.NewServicesStore() m := tui.NewTUIInterface(srvStore) p := tea.NewProgram(m) if _, err := p.Run(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }