AUTH-2686: Added error handling to tunnel subcommand
This commit is contained in:
parent
df3ad2b223
commit
6a7418e1af
|
@ -10,6 +10,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cloudflare/cloudflared/carrier"
|
"github.com/cloudflare/cloudflared/carrier"
|
||||||
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/shell"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/shell"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/token"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/token"
|
||||||
"github.com/cloudflare/cloudflared/sshgen"
|
"github.com/cloudflare/cloudflared/sshgen"
|
||||||
|
@ -66,20 +67,6 @@ func Flags() []cli.Flag {
|
||||||
return []cli.Flag{} // no flags yet.
|
return []cli.Flag{} // no flags yet.
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensures exit with error code if actionFunc returns an error
|
|
||||||
func errorHandler(actionFunc cli.ActionFunc) cli.ActionFunc {
|
|
||||||
return func(ctx *cli.Context) error {
|
|
||||||
err := actionFunc(ctx)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
// os.Exits with error code if err is cli.ExitCoder or cli.MultiError
|
|
||||||
cli.HandleExitCoder(err)
|
|
||||||
err = cli.Exit(err.Error(), 1)
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Commands returns all the Access related subcommands
|
// Commands returns all the Access related subcommands
|
||||||
func Commands() []*cli.Command {
|
func Commands() []*cli.Command {
|
||||||
return []*cli.Command{
|
return []*cli.Command{
|
||||||
|
@ -95,7 +82,7 @@ func Commands() []*cli.Command {
|
||||||
Subcommands: []*cli.Command{
|
Subcommands: []*cli.Command{
|
||||||
{
|
{
|
||||||
Name: "login",
|
Name: "login",
|
||||||
Action: errorHandler(login),
|
Action: cliutil.ErrorHandler(login),
|
||||||
Usage: "login <url of access application>",
|
Usage: "login <url of access application>",
|
||||||
Description: `The login subcommand initiates an authentication flow with your identity provider.
|
Description: `The login subcommand initiates an authentication flow with your identity provider.
|
||||||
The subcommand will launch a browser. For headless systems, a url is provided.
|
The subcommand will launch a browser. For headless systems, a url is provided.
|
||||||
|
@ -111,7 +98,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "curl",
|
Name: "curl",
|
||||||
Action: errorHandler(curl),
|
Action: cliutil.ErrorHandler(curl),
|
||||||
Usage: "curl [--allow-request, -ar] <url> [<curl args>...]",
|
Usage: "curl [--allow-request, -ar] <url> [<curl args>...]",
|
||||||
Description: `The curl subcommand wraps curl and automatically injects the JWT into a cf-access-token
|
Description: `The curl subcommand wraps curl and automatically injects the JWT into a cf-access-token
|
||||||
header when using curl to reach an application behind Access.`,
|
header when using curl to reach an application behind Access.`,
|
||||||
|
@ -120,7 +107,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "token",
|
Name: "token",
|
||||||
Action: errorHandler(generateToken),
|
Action: cliutil.ErrorHandler(generateToken),
|
||||||
Usage: "token -app=<url of access application>",
|
Usage: "token -app=<url of access application>",
|
||||||
ArgsUsage: "url of Access application",
|
ArgsUsage: "url of Access application",
|
||||||
Description: `The token subcommand produces a JWT which can be used to authenticate requests.`,
|
Description: `The token subcommand produces a JWT which can be used to authenticate requests.`,
|
||||||
|
@ -132,7 +119,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "tcp",
|
Name: "tcp",
|
||||||
Action: errorHandler(ssh),
|
Action: cliutil.ErrorHandler(ssh),
|
||||||
Aliases: []string{"rdp", "ssh", "smb"},
|
Aliases: []string{"rdp", "ssh", "smb"},
|
||||||
Usage: "",
|
Usage: "",
|
||||||
ArgsUsage: "",
|
ArgsUsage: "",
|
||||||
|
@ -171,7 +158,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "ssh-config",
|
Name: "ssh-config",
|
||||||
Action: errorHandler(sshConfig),
|
Action: cliutil.ErrorHandler(sshConfig),
|
||||||
Usage: "",
|
Usage: "",
|
||||||
Description: `Prints an example configuration ~/.ssh/config`,
|
Description: `Prints an example configuration ~/.ssh/config`,
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
|
@ -187,7 +174,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "ssh-gen",
|
Name: "ssh-gen",
|
||||||
Action: errorHandler(sshGen),
|
Action: cliutil.ErrorHandler(sshGen),
|
||||||
Usage: "",
|
Usage: "",
|
||||||
Description: `Generates a short lived certificate for given hostname`,
|
Description: `Generates a short lived certificate for given hostname`,
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package cliutil
|
||||||
|
|
||||||
|
import "gopkg.in/urfave/cli.v2"
|
||||||
|
|
||||||
|
// Ensures exit with error code if actionFunc returns an error
|
||||||
|
func ErrorHandler(actionFunc cli.ActionFunc) cli.ActionFunc {
|
||||||
|
return func(ctx *cli.Context) error {
|
||||||
|
err := actionFunc(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// os.Exits with error code if err is cli.ExitCoder or cli.MultiError
|
||||||
|
cli.HandleExitCoder(err)
|
||||||
|
err = cli.Exit(err.Error(), 1)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ import (
|
||||||
|
|
||||||
"github.com/cloudflare/cloudflared/awsuploader"
|
"github.com/cloudflare/cloudflared/awsuploader"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/buildinfo"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/buildinfo"
|
||||||
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/config"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/config"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/updater"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/updater"
|
||||||
"github.com/cloudflare/cloudflared/connection"
|
"github.com/cloudflare/cloudflared/connection"
|
||||||
|
@ -100,7 +101,7 @@ func Commands() []*cli.Command {
|
||||||
cmds := []*cli.Command{
|
cmds := []*cli.Command{
|
||||||
{
|
{
|
||||||
Name: "login",
|
Name: "login",
|
||||||
Action: login,
|
Action: cliutil.ErrorHandler(login),
|
||||||
Usage: "Generate a configuration file with your login details",
|
Usage: "Generate a configuration file with your login details",
|
||||||
ArgsUsage: " ",
|
ArgsUsage: " ",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
|
@ -113,7 +114,7 @@ func Commands() []*cli.Command {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "proxy-dns",
|
Name: "proxy-dns",
|
||||||
Action: tunneldns.Run,
|
Action: cliutil.ErrorHandler(tunneldns.Run),
|
||||||
Usage: "Run a DNS over HTTPS proxy server.",
|
Usage: "Run a DNS over HTTPS proxy server.",
|
||||||
Flags: []cli.Flag{
|
Flags: []cli.Flag{
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
|
@ -162,7 +163,7 @@ func Commands() []*cli.Command {
|
||||||
|
|
||||||
cmds = append(cmds, &cli.Command{
|
cmds = append(cmds, &cli.Command{
|
||||||
Name: "tunnel",
|
Name: "tunnel",
|
||||||
Action: tunnel,
|
Action: cliutil.ErrorHandler(tunnel),
|
||||||
Before: Before,
|
Before: Before,
|
||||||
Category: "Tunnel",
|
Category: "Tunnel",
|
||||||
Usage: "Make a locally-running web service accessible over the internet using Argo Tunnel.",
|
Usage: "Make a locally-running web service accessible over the internet using Argo Tunnel.",
|
||||||
|
@ -662,13 +663,13 @@ func dbConnectCmd() *cli.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override action to setup the Proxy, then if successful, start the tunnel daemon.
|
// Override action to setup the Proxy, then if successful, start the tunnel daemon.
|
||||||
cmd.Action = func(c *cli.Context) error {
|
cmd.Action = cliutil.ErrorHandler(func(c *cli.Context) error {
|
||||||
err := dbconnect.CmdAction(c)
|
err := dbconnect.CmdAction(c)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = tunnel(c)
|
err = tunnel(c)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
})
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue