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"
"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)

View File

@ -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
--------------------