no target for socks backend (#558)

This commit is contained in:
Michael Quigley 2024-02-08 13:56:38 -05:00
parent 6440685b25
commit 3afbb6dc9a
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
2 changed files with 46 additions and 6 deletions

View File

@ -31,9 +31,9 @@ type reserveCommand struct {
func newReserveCommand() *reserveCommand { func newReserveCommand() *reserveCommand {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "reserve <public|private> <target>", Use: "reserve <public|private> [<target>]",
Short: "Create a reserved share", Short: "Create a reserved share",
Args: cobra.ExactArgs(2), Args: cobra.RangeArgs(1, 2),
} }
command := &reserveCommand{cmd: cmd} command := &reserveCommand{cmd: cmd}
cmd.Flags().StringVarP(&command.uniqueName, "unique-name", "n", "", "A unique name for the reserved share (defaults to generated identifier)") cmd.Flags().StringVarP(&command.uniqueName, "unique-name", "n", "", "A unique name for the reserved share (defaults to generated identifier)")
@ -66,6 +66,9 @@ func (cmd *reserveCommand) run(_ *cobra.Command, args []string) {
var target string var target string
switch cmd.backendMode { switch cmd.backendMode {
case "proxy": case "proxy":
if len(args) != 2 {
tui.Error("the 'proxy' backend mode expects a <target>", nil)
}
v, err := parseUrl(args[1]) v, err := parseUrl(args[1])
if err != nil { if err != nil {
tui.Error("invalid target endpoint URL", err) tui.Error("invalid target endpoint URL", err)
@ -73,22 +76,39 @@ func (cmd *reserveCommand) run(_ *cobra.Command, args []string) {
target = v target = v
case "web": case "web":
if len(args) != 2 {
tui.Error("the 'web' backend mode expects a <target>", nil)
}
target = args[1] target = args[1]
case "tcpTunnel": case "tcpTunnel":
if len(args) != 2 {
tui.Error("the 'tcpTunnel' backend mode expects a <target>", nil)
}
target = args[1] target = args[1]
case "udpTunnel": case "udpTunnel":
if len(args) != 2 {
tui.Error("the 'udpTunnel' backend mode expects a <target>", nil)
}
target = args[1] target = args[1]
case "caddy": case "caddy":
if len(args) != 2 {
tui.Error("the 'caddy' backend mode expects a <target>", nil)
}
target = args[1] target = args[1]
case "drive": case "drive":
if len(args) != 2 {
tui.Error("the 'drive' backend mode expects a <target>", nil)
}
target = args[1] target = args[1]
case "socks": case "socks":
target = "" if len(args) != 1 {
tui.Error("the 'socks' backend mode does not expect <target>", nil)
}
default: default:
tui.Error(fmt.Sprintf("invalid backend mode '%v'; expected {proxy, web, tcpTunnel, udpTunnel, caddy, drive, socks}", cmd.backendMode), nil) tui.Error(fmt.Sprintf("invalid backend mode '%v'; expected {proxy, web, tcpTunnel, udpTunnel, caddy, drive, socks}", cmd.backendMode), nil)

View File

@ -34,9 +34,9 @@ type sharePrivateCommand struct {
func newSharePrivateCommand() *sharePrivateCommand { func newSharePrivateCommand() *sharePrivateCommand {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "private <target>", Use: "private [<target>]",
Short: "Share a target resource privately", Short: "Share a target resource privately",
Args: cobra.ExactArgs(1), Args: cobra.RangeArgs(0, 1),
} }
command := &sharePrivateCommand{cmd: cmd} command := &sharePrivateCommand{cmd: cmd}
cmd.Flags().StringArrayVar(&command.basicAuth, "basic-auth", []string{}, "Basic authentication users (<username:password>,...") cmd.Flags().StringArrayVar(&command.basicAuth, "basic-auth", []string{}, "Basic authentication users (<username:password>,...")
@ -52,6 +52,9 @@ func (cmd *sharePrivateCommand) run(_ *cobra.Command, args []string) {
switch cmd.backendMode { switch cmd.backendMode {
case "proxy": case "proxy":
if len(args) != 1 {
tui.Error("the 'proxy' backend mode expects a <target>", nil)
}
v, err := parseUrl(args[0]) v, err := parseUrl(args[0])
if err != nil { if err != nil {
if !panicInstead { if !panicInstead {
@ -62,23 +65,40 @@ func (cmd *sharePrivateCommand) run(_ *cobra.Command, args []string) {
target = v target = v
case "web": case "web":
if len(args) != 1 {
tui.Error("the 'web' backend mode expects a <target>", nil)
}
target = args[0] target = args[0]
case "tcpTunnel": case "tcpTunnel":
if len(args) != 1 {
tui.Error("the 'tcpTunnel' backend mode expects a <target>", nil)
}
target = args[0] target = args[0]
case "udpTunnel": case "udpTunnel":
if len(args) != 1 {
tui.Error("the 'udpTunnel' backend mode expects a <target>", nil)
}
target = args[0] target = args[0]
case "caddy": case "caddy":
if len(args) != 1 {
tui.Error("the 'caddy' backend mode expects a <target>", nil)
}
target = args[0] target = args[0]
cmd.headless = true cmd.headless = true
case "drive": case "drive":
if len(args) != 1 {
tui.Error("the 'drive' backend mode expects a <target>", nil)
}
target = args[0] target = args[0]
case "socks": case "socks":
target = "" if len(args) != 0 {
tui.Error("the 'socks' backend mode does not expect <target>", nil)
}
default: default:
tui.Error(fmt.Sprintf("invalid backend mode '%v'; expected {proxy, web, tcpTunnel, udpTunnel, caddy, drive}", cmd.backendMode), nil) tui.Error(fmt.Sprintf("invalid backend mode '%v'; expected {proxy, web, tcpTunnel, udpTunnel, caddy, drive}", cmd.backendMode), nil)