Added interactive password & refactored naming

This commit is contained in:
rishabh-bector 2018-08-21 13:13:08 -05:00
parent 26c2b8f62e
commit 59545ca4fc
2 changed files with 21 additions and 15 deletions

View File

@ -6,14 +6,16 @@ import (
"os" "os"
"runtime/trace" "runtime/trace"
"sync" "sync"
"syscall"
"time" "time"
"github.com/cloudflare/cloudflared/cmd/sqlgateway"
"github.com/cloudflare/cloudflared/hello" "github.com/cloudflare/cloudflared/hello"
"github.com/cloudflare/cloudflared/metrics" "github.com/cloudflare/cloudflared/metrics"
"github.com/cloudflare/cloudflared/origin" "github.com/cloudflare/cloudflared/origin"
"github.com/cloudflare/cloudflared/tunneldns" "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/getsentry/raven-go"
"github.com/mitchellh/go-homedir" "github.com/mitchellh/go-homedir"
@ -409,9 +411,14 @@ func main() {
tags["hostname"] = c.String("hostname") tags["hostname"] = c.String("hostname")
raven.SetTagsContext(tags) 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) raven.CapturePanic(func() { err = startServer(c, shutdownC, graceShutdownC) }, nil)
if err != nil { if err != nil {
raven.CaptureError(err, nil) raven.CaptureError(err, nil)

View File

@ -1,4 +1,4 @@
package rapid package sqlgateway
import ( import (
"database/sql" "database/sql"
@ -46,10 +46,10 @@ type Proxy struct {
Logger *logrus.Logger Logger *logrus.Logger
} }
func StartProxy(c *cli.Context, logger *logrus.Logger) error { func StartProxy(c *cli.Context, logger *logrus.Logger, password string) error {
proxy := NewProxy(c, logger) 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) err := http.ListenAndServe(":"+strings.Split(c.String("url"), ":")[1], proxy.Router)
if err != nil { if err != nil {
@ -68,17 +68,16 @@ func randID(n int, c *cli.Context) string {
return fmt.Sprintf("%s&%s", c.String("hostname"), b) return fmt.Sprintf("%s&%s", c.String("hostname"), b)
} }
// db://user:pass@dbname // db://user@dbname
func parseInfo(input string) (string, string, string, string) { func parseInfo(input string) (string, string, string) {
p1 := strings.Split(input, "://") p1 := strings.Split(input, "://")
p2 := strings.Split(p1[1], ":") p2 := strings.Split(p1[1], "@")
p3 := strings.Split(p2[1], "@") return p1[0], p2[0], p2[1]
return p1[0], p2[0], p3[0], p3[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()) rand.Seed(time.Now().UnixNano())
driver, user, pass, dbname := parseInfo(c.String("address")) driver, user, dbname := parseInfo(c.String("address"))
proxy := Proxy{ proxy := Proxy{
Context: c, Context: c,
Router: mux.NewRouter(), Router: mux.NewRouter(),
@ -93,7 +92,7 @@ func NewProxy(c *cli.Context, logger *logrus.Logger) *Proxy {
logger.Info(fmt.Sprintf(` logger.Info(fmt.Sprintf(`
-------------------- --------------------
Rapid SQL Proxy SQL Gateway Proxy
Token: %s Token: %s
-------------------- --------------------