From e62d872c302ae670d285414fbe6a1bbc96c706fb Mon Sep 17 00:00:00 2001 From: fabiankramm Date: Mon, 8 Oct 2018 18:16:22 +0200 Subject: [PATCH 1/4] Change cloud config to only include hostname --- pkg/devspace/cloud/config.go | 21 +++++++++++++-------- pkg/devspace/cloud/login.go | 14 +++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/pkg/devspace/cloud/config.go b/pkg/devspace/cloud/config.go index ef0d04597c..d544e387ca 100644 --- a/pkg/devspace/cloud/config.go +++ b/pkg/devspace/cloud/config.go @@ -22,18 +22,25 @@ type ProviderConfig map[string]*Provider type Provider struct { Name string `yaml:"name,omitempty"` KubeContext string `yaml:"kubecontext,omitempty"` - Login string `yaml:"login,omitempty"` - GetConfig string `yaml:"getConfig,omitempty"` + Host string `yaml:"login,omitempty"` Token string `yaml:"token,omitempty"` } // DevSpaceCloudProviderName is the name of the default devspace-cloud provider const DevSpaceCloudProviderName = "devspace-cloud" +// LoginEndpoint is the cloud endpoint that will log you in +const LoginEndpoint = "/login" + +// LoginSuccessEndpoint is the url redirected to after successful login +const LoginSuccessEndpoint = "/loginSuccess" + +// GetClusterConfigEndpoint is the endpoint where to get the kubernetes context data +const GetClusterConfigEndpoint = "/clusterConfig" + // DevSpaceCloudProviderConfig holds the information for the devspace-cloud var DevSpaceCloudProviderConfig = &Provider{ - Login: "https://cloud.devspace.covexo.com/login", - GetConfig: "https://cloud.devspace.covexo.com/clusterConfig", + Host: "http://localhost:8080", KubeContext: DevSpaceKubeContextName, } @@ -58,8 +65,7 @@ func ParseCloudConfig() (ProviderConfig, error) { } if _, ok := cloudConfig[DevSpaceCloudProviderName]; ok { - cloudConfig[DevSpaceCloudProviderName].GetConfig = DevSpaceCloudProviderConfig.GetConfig - cloudConfig[DevSpaceCloudProviderName].Login = DevSpaceCloudProviderConfig.Login + cloudConfig[DevSpaceCloudProviderName].Host = DevSpaceCloudProviderConfig.Host } else { cloudConfig[DevSpaceCloudProviderName] = DevSpaceCloudProviderConfig } @@ -84,8 +90,7 @@ func SaveCloudConfig(config ProviderConfig) error { provider.Name = "" if name == DevSpaceCloudProviderName { - provider.Login = "" - provider.GetConfig = "" + provider.Host = "" } } diff --git a/pkg/devspace/cloud/login.go b/pkg/devspace/cloud/login.go index 73cb381947..b751b451d5 100644 --- a/pkg/devspace/cloud/login.go +++ b/pkg/devspace/cloud/login.go @@ -28,7 +28,7 @@ func CheckAuth(provider *Provider) (string, *api.Cluster, *api.AuthInfo, error) // GetClusterConfig retrieves the cluster and authconfig from the devspace cloud func GetClusterConfig(provider *Provider) (string, *api.Cluster, *api.AuthInfo, error) { client := &http.Client{} - req, err := http.NewRequest("GET", provider.GetConfig, nil) + req, err := http.NewRequest("GET", provider.Host+GetClusterConfigEndpoint, nil) if err != nil { return "", nil, nil, err } @@ -83,10 +83,10 @@ func GetClusterConfig(provider *Provider) (string, *api.Cluster, *api.AuthInfo, func Login(provider *Provider) (string, *api.Cluster, *api.AuthInfo, error) { tokenChannel := make(chan string) - log.StartWait("Logging into cloud " + provider.Login + " ...") - server := startServer(tokenChannel) + log.StartWait("Logging into cloud " + provider.Host + LoginEndpoint + " ...") + server := startServer(provider.Host+LoginSuccessEndpoint, tokenChannel) - open.Start(provider.Login) + open.Start(provider.Host + LoginEndpoint) token := <-tokenChannel close(tokenChannel) @@ -185,12 +185,10 @@ func UpdateKubeConfig(contextName string, cluster *api.Cluster, authInfo *api.Au return kubeconfig.WriteKubeConfig(config, clientcmd.RecommendedHomeFile) } -func startServer(tokenChannel chan string) *http.Server { +func startServer(redirectURI string, tokenChannel chan string) *http.Server { srv := &http.Server{Addr: ":25853"} http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "") - keys, ok := r.URL.Query()["token"] if !ok || len(keys[0]) < 1 { log.Fatal("Bad request") @@ -198,6 +196,8 @@ func startServer(tokenChannel chan string) *http.Server { log.StopWait() tokenChannel <- keys[0] + + http.Redirect(w, r, redirectURI, http.StatusSeeOther) }) go func() { From e73fd8c323927a5cdd86ebc3c439e46922a1ebbd Mon Sep 17 00:00:00 2001 From: fabiankramm Date: Mon, 8 Oct 2018 18:20:14 +0200 Subject: [PATCH 2/4] Change to correct url --- pkg/devspace/cloud/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/devspace/cloud/config.go b/pkg/devspace/cloud/config.go index d544e387ca..00682ef1ad 100644 --- a/pkg/devspace/cloud/config.go +++ b/pkg/devspace/cloud/config.go @@ -40,7 +40,7 @@ const GetClusterConfigEndpoint = "/clusterConfig" // DevSpaceCloudProviderConfig holds the information for the devspace-cloud var DevSpaceCloudProviderConfig = &Provider{ - Host: "http://localhost:8080", + Host: "https://cloud.devspace.covexo.com", KubeContext: DevSpaceKubeContextName, } From 62da4d38d0a2b148687a4e92e4702496aac86e99 Mon Sep 17 00:00:00 2001 From: fabiankramm Date: Mon, 8 Oct 2018 18:23:36 +0200 Subject: [PATCH 3/4] Wrong json identifier --- pkg/devspace/cloud/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/devspace/cloud/config.go b/pkg/devspace/cloud/config.go index 00682ef1ad..f39777377b 100644 --- a/pkg/devspace/cloud/config.go +++ b/pkg/devspace/cloud/config.go @@ -22,7 +22,7 @@ type ProviderConfig map[string]*Provider type Provider struct { Name string `yaml:"name,omitempty"` KubeContext string `yaml:"kubecontext,omitempty"` - Host string `yaml:"login,omitempty"` + Host string `yaml:"host,omitempty"` Token string `yaml:"token,omitempty"` } From 146c73802a23b2f5c7611ed9355ae2ff3fd8b667 Mon Sep 17 00:00:00 2001 From: fabiankramm Date: Mon, 8 Oct 2018 18:39:00 +0200 Subject: [PATCH 4/4] Fix small issue with logging into cloud provider --- cmd/init.go | 8 +++++--- pkg/devspace/cloud/login.go | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cmd/init.go b/cmd/init.go index 12bc2a9c65..c9c98ac002 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -372,11 +372,13 @@ func (cmd *InitCmd) useCloudProvider() bool { cloudProvider += ")" cloudProviderSelected := "" - for _, ok := providerConfig[cloudProviderSelected]; ok == false && cloudProviderSelected != "no"; { - cloudProviderSelected = *stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{ + for ok := false; ok == false && cloudProviderSelected != "no"; { + cloudProviderSelected = strings.TrimSpace(*stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{ Question: "Do you want to use a cloud provider? (no to skip) " + cloudProvider, DefaultValue: cloud.DevSpaceCloudProviderName, - }) + })) + + _, ok = providerConfig[cloudProviderSelected] } if cloudProviderSelected != "no" { diff --git a/pkg/devspace/cloud/login.go b/pkg/devspace/cloud/login.go index b751b451d5..cf2487b91f 100644 --- a/pkg/devspace/cloud/login.go +++ b/pkg/devspace/cloud/login.go @@ -1,6 +1,7 @@ package cloud import ( + "context" "encoding/json" "fmt" "io/ioutil" @@ -81,6 +82,7 @@ func GetClusterConfig(provider *Provider) (string, *api.Cluster, *api.AuthInfo, // Login logs the user into the devspace cloud func Login(provider *Provider) (string, *api.Cluster, *api.AuthInfo, error) { + ctx := context.Background() tokenChannel := make(chan string) log.StartWait("Logging into cloud " + provider.Host + LoginEndpoint + " ...") @@ -91,7 +93,7 @@ func Login(provider *Provider) (string, *api.Cluster, *api.AuthInfo, error) { token := <-tokenChannel close(tokenChannel) - err := server.Shutdown(nil) + err := server.Shutdown(ctx) if err != nil { return "", nil, nil, err }