From 59545ca4fcb78acff5377e94d8457f86d4a04ec6 Mon Sep 17 00:00:00 2001 From: rishabh-bector Date: Tue, 21 Aug 2018 13:13:08 -0500 Subject: [PATCH] Added interactive password & refactored naming --- cmd/cloudflared/main.go | 13 ++++++++--- .../rapid.go => sqlgateway/sqlgateway.go} | 23 +++++++++---------- 2 files changed, 21 insertions(+), 15 deletions(-) rename cmd/{rapid/rapid.go => sqlgateway/sqlgateway.go} (84%) diff --git a/cmd/cloudflared/main.go b/cmd/cloudflared/main.go index 696a5040..91a6858b 100644 --- a/cmd/cloudflared/main.go +++ b/cmd/cloudflared/main.go @@ -6,14 +6,16 @@ import ( "os" "runtime/trace" "sync" + "syscall" "time" + "github.com/cloudflare/cloudflared/cmd/sqlgateway" "github.com/cloudflare/cloudflared/hello" "github.com/cloudflare/cloudflared/metrics" "github.com/cloudflare/cloudflared/origin" "github.com/cloudflare/cloudflared/tunneldns" - rapid "github.com/cloudflare/cloudflared/cmd/rapid" + "golang.org/x/crypto/ssh/terminal" "github.com/getsentry/raven-go" "github.com/mitchellh/go-homedir" @@ -409,9 +411,14 @@ func main() { tags["hostname"] = c.String("hostname") raven.SetTagsContext(tags) - go rapid.StartProxy(c, logger) + fmt.Printf("\nSQL Database Password: ") + pass, err := terminal.ReadPassword(int(syscall.Stdin)) + if err != nil { + logger.Error(err) + } + + go sqlgateway.StartProxy(c, logger, string(pass)) - var err error raven.CapturePanic(func() { err = startServer(c, shutdownC, graceShutdownC) }, nil) if err != nil { raven.CaptureError(err, nil) diff --git a/cmd/rapid/rapid.go b/cmd/sqlgateway/sqlgateway.go similarity index 84% rename from cmd/rapid/rapid.go rename to cmd/sqlgateway/sqlgateway.go index 1710d7ca..cf73fab8 100644 --- a/cmd/rapid/rapid.go +++ b/cmd/sqlgateway/sqlgateway.go @@ -1,4 +1,4 @@ -package rapid +package sqlgateway import ( "database/sql" @@ -46,10 +46,10 @@ type Proxy struct { Logger *logrus.Logger } -func StartProxy(c *cli.Context, logger *logrus.Logger) error { - proxy := NewProxy(c, logger) +func StartProxy(c *cli.Context, logger *logrus.Logger, password string) error { + proxy := NewProxy(c, logger, password) - logger.Infof("Starting Rapid SQL Proxy on port %s", strings.Split(c.String("url"), ":")[1]) + logger.Infof("Starting SQL Gateway Proxy on port %s", strings.Split(c.String("url"), ":")[1]) err := http.ListenAndServe(":"+strings.Split(c.String("url"), ":")[1], proxy.Router) if err != nil { @@ -68,17 +68,16 @@ func randID(n int, c *cli.Context) string { return fmt.Sprintf("%s&%s", c.String("hostname"), b) } -// db://user:pass@dbname -func parseInfo(input string) (string, string, string, string) { +// db://user@dbname +func parseInfo(input string) (string, string, string) { p1 := strings.Split(input, "://") - p2 := strings.Split(p1[1], ":") - p3 := strings.Split(p2[1], "@") - return p1[0], p2[0], p3[0], p3[1] + p2 := strings.Split(p1[1], "@") + return p1[0], p2[0], p2[1] } -func NewProxy(c *cli.Context, logger *logrus.Logger) *Proxy { +func NewProxy(c *cli.Context, logger *logrus.Logger, pass string) *Proxy { rand.Seed(time.Now().UnixNano()) - driver, user, pass, dbname := parseInfo(c.String("address")) + driver, user, dbname := parseInfo(c.String("address")) proxy := Proxy{ Context: c, Router: mux.NewRouter(), @@ -93,7 +92,7 @@ func NewProxy(c *cli.Context, logger *logrus.Logger) *Proxy { logger.Info(fmt.Sprintf(` -------------------- - Rapid SQL Proxy + SQL Gateway Proxy Token: %s --------------------