package cli import ( "fmt" "strconv" "drip/internal/client/tcp" "drip/internal/shared/protocol" "github.com/spf13/cobra" ) var httpsCmd = &cobra.Command{ Use: "https ", Short: "Start HTTPS tunnel", Long: `Start an HTTPS tunnel to expose a local HTTPS server. Example: drip https 443 Tunnel localhost:443 drip https 8443 --subdomain myapp Use custom subdomain Configuration: First time: Run 'drip config init' to save server and token Subsequent: Just run 'drip https ' Note: Uses TCP over TLS 1.3 for secure communication`, Args: cobra.ExactArgs(1), RunE: runHTTPS, } func init() { httpsCmd.Flags().StringVarP(&subdomain, "subdomain", "n", "", "Custom subdomain (optional)") httpsCmd.Flags().BoolVarP(&daemonMode, "daemon", "d", false, "Run in background (daemon mode)") httpsCmd.Flags().StringVarP(&localAddress, "address", "a", "127.0.0.1", "Local address to forward to (default: 127.0.0.1)") httpsCmd.Flags().BoolVar(&daemonMarker, "daemon-child", false, "Internal flag for daemon child process") httpsCmd.Flags().MarkHidden("daemon-child") rootCmd.AddCommand(httpsCmd) } func runHTTPS(_ *cobra.Command, args []string) error { port, err := strconv.Atoi(args[0]) if err != nil || port < 1 || port > 65535 { return fmt.Errorf("invalid port number: %s", args[0]) } if daemonMode && !daemonMarker { return StartDaemon("https", port, buildDaemonArgs("https", args, subdomain, localAddress)) } serverAddr, token, err := resolveServerAddrAndToken("https", port) if err != nil { return err } connConfig := &tcp.ConnectorConfig{ ServerAddr: serverAddr, Token: token, TunnelType: protocol.TunnelTypeHTTPS, LocalHost: localAddress, LocalPort: port, Subdomain: subdomain, Insecure: insecure, } var daemon *DaemonInfo if daemonMarker { daemon = newDaemonInfo("https", port, subdomain, serverAddr) } return runTunnelWithUI(connConfig, daemon) }