From b7f3de88bb51dc25379efbfc41b2247f3055c38a Mon Sep 17 00:00:00 2001
From: Erik Brakkee 
Date: Fri, 26 Jul 2024 21:11:40 +0200
Subject: [PATCH] Updated deployment with username and password settings.
 index.html template now also uses the configured password.
---
 cmd/converge/converge.go   |  4 ++++
 cmd/converge/fileserver.go |  1 +
 kubernetes/deployment.yaml |  6 ++++++
 static/index.html          | 13 +++++++------
 4 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/cmd/converge/converge.go b/cmd/converge/converge.go
index dd3f78a..1faac26 100644
--- a/cmd/converge/converge.go
+++ b/cmd/converge/converge.go
@@ -81,11 +81,15 @@ func main() {
 	username, ok := os.LookupEnv("CONVERGE_USERNAME")
 	if ok {
 		userPassword.Username = username
+	} else {
+		os.Setenv("CONVERGE_USERNAME", userPassword.Username)
 	}
 
 	password, ok := os.LookupEnv("CONVERGE_PASSWORD")
 	if ok {
 		userPassword.Password = password
+	} else {
+		os.Setenv("CONVERGE_PASSWORD", userPassword.Password)
 	}
 
 	log.Printf("Using username '%s' and password '%s'", userPassword.Username, userPassword.Password)
diff --git a/cmd/converge/fileserver.go b/cmd/converge/fileserver.go
index 1d38bec..d011542 100644
--- a/cmd/converge/fileserver.go
+++ b/cmd/converge/fileserver.go
@@ -59,6 +59,7 @@ func (handler FileHandlerFilter) ServeHTTP(w http.ResponseWriter, r *http.Reques
 		// let the filehandler generate the rror
 		handler.fileHandler.ServeHTTP(w, r)
 	}
+	filters["username"], _ = os.LookupEnv("CONVERGE_USERNAME")
 	err = tmpl.Execute(w, filters)
 	if err != nil {
 		http.Error(w, err.Error(), http.StatusInternalServerError)
diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml
index aa6d050..120a39c 100644
--- a/kubernetes/deployment.yaml
+++ b/kubernetes/deployment.yaml
@@ -21,5 +21,11 @@ spec:
         name: converge
         ports:
           - containerPort: 8000
+        env:
+          - name: CONVERGE_USERNAME
+            value: converge
+          - name: CONVERGE_PASSWORD
+            # change this password in your final deployment
+            value: "abc123"
        
 
diff --git a/static/index.html b/static/index.html
index 72c0fa6..5053d0a 100644
--- a/static/index.html
+++ b/static/index.html
@@ -117,8 +117,8 @@
                 
 
                 
-    ssh -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{{.secure}}://{{.host}}/client/ID"  abc@localhost
-    sftp -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{{.secure}}://{{.host}}/client/ID" abc@localhost
+    ssh -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{{.secure}}://{{.host}}/client/ID"  {{ .username }}@localhost
+    sftp -oServerAliveInterval=10 -oProxyCommand="wsproxy ws{{.secure}}://{{.host}}/client/ID" {{ .username }}@localhost
     
 
                 Local clients: using SSH with a local TCP forwarding proxy
@@ -142,15 +142,16 @@
                 
 
                 
-    ssh -oServerAliveInterval=10 -p 10000 abc@localhost
-    sftp -oServerAliveInterval=10 -oPort=10000 abc@localhost
+    ssh -oServerAliveInterval=10 -p 10000 {{ .username }}@localhost
+    sftp -oServerAliveInterval=10 -oPort=10000 {{ .username }}@localhost
     
 
                 Authentication
 
                 
-                    The abc user above is defined by the Converge server and
-                    communicated to the agent when the agent is started.
+                    The {{ .username }} user above the Converge server and
+                    communicated to the agent when the agent is started. This is the
+                    username that must be used when setting up an ssh connection.
                     Another way to authenticate is through an .authorized_keys file in the
                     same directory as where the agent is started.