Browse Source

auto update script executed

Toby Chui 1 year ago
parent
commit
4f5bf2b36e
2 changed files with 41 additions and 12 deletions
  1. 33 5
      web/tools/sshconn.html
  2. 8 7
      webssh.go

+ 33 - 5
web/tools/sshconn.html

@@ -29,6 +29,10 @@
                     <label>Port Number</label>
                     <input type="number" name="port" placeholder="e.g. 22 or 2022">
                   </div>
+                    <div class="field">
+                        <label>Username</label>
+                        <input type="text" name="username" placeholder="root">
+                    </div>
                 </div>
             </div>
         </div>
@@ -43,8 +47,15 @@
             //Start the SSH connection process
             function connectSSH() {
                 const serverValue = $('input[name="server"]').val().trim();
-                const portValue = parseInt($('input[name="port"]').val().trim(), 10);
-                
+                var portString = $('input[name="port"]').val().trim();
+                if (portString.trim() == ""){
+                    portString = "22";
+                }
+                const portValue = parseInt(portString, 10);
+                const username = $('input[name="username"]').val().trim();
+                if (username == ""){
+                    username = "root";
+                }
                 // Validate server name or IP address
                 const validServer = isValidServerNameOrIPAddress(serverValue);
                 
@@ -53,7 +64,7 @@
                 
                 if (validServer && validPort) {
                     // Call doSomething function if both inputs are valid
-                    createSSHProxy(serverValue, portValue);
+                    createSSHProxy(serverValue, portValue, username);
                 } else {
                     // Display an error message if either input is invalid
                     const errorLabel = $('<div>').addClass('ui red basic label');
@@ -70,8 +81,25 @@
             }
 
             //Try to ask the server side to create a ssh proxy object
-            function createSSHProxy(){
-                
+            function createSSHProxy(remoteAddr, remotePort, username){
+                //Request to create a ssh session instance
+                $.ajax({
+                    url: "/api/tools/webssh",
+                    data: {ipaddr: remoteAddr, port: remotePort, username:username},
+                    method: "POST",
+                    success: function(sessionToken){
+                        if (sessionToken.error != undefined){
+                            alert(sessionToken.error);
+                        }else{
+                            //Session created. Redirect to ssh terminal
+                            window.location.href = "/web.ssh/" + sessionToken + "/";
+                        }
+                    },
+                    error: function(){
+
+                    }
+
+                })
             }
 
 

+ 8 - 7
webssh.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"net/http"
 	"strconv"
+	"strings"
 
 	"imuslab.com/zoraxy/mod/sshprox"
 	"imuslab.com/zoraxy/mod/utils"
@@ -18,45 +19,45 @@ import (
 
 func HandleCreateProxySession(w http.ResponseWriter, r *http.Request) {
 	//Get what ip address and port to connect to
-	ipaddr, err := utils.GetPara(r, "ipaddr")
+	ipaddr, err := utils.PostPara(r, "ipaddr")
 	if err != nil {
 		http.Error(w, "Invalid Usage", http.StatusInternalServerError)
 		return
 	}
 
-	portString, err := utils.GetPara(r, "port")
+	portString, err := utils.PostPara(r, "port")
 	if err != nil {
 		portString = "22"
 	}
 
-	username, err := utils.GetPara(r, "username")
+	username, err := utils.PostPara(r, "username")
 	if err != nil {
 		username = ""
 	}
 
 	port, err := strconv.Atoi(portString)
 	if err != nil {
-		http.Error(w, "Invalid port number given", http.StatusInternalServerError)
+		utils.SendErrorResponse(w, "invalid port number given")
 		return
 	}
 
 	//Check if the target is a valid ssh endpoint
 	if !sshprox.IsSSHConnectable(ipaddr, port) {
-		http.Error(w, ipaddr+":"+strconv.Itoa(port)+" is not a valid SSH server", http.StatusInternalServerError)
+		utils.SendErrorResponse(w, ipaddr+":"+strconv.Itoa(port)+" is not a valid SSH server")
 		return
 	}
 
 	//Create a new proxy instance
 	instance, err := webSshManager.NewSSHProxy("./system/gotty")
 	if err != nil {
-		http.Error(w, err.Error(), http.StatusInternalServerError)
+		utils.SendErrorResponse(w, strings.ReplaceAll(err.Error(), "\\", "/"))
 		return
 	}
 
 	//Create an ssh process to the target address
 	err = instance.CreateNewConnection(webSshManager.GetNextPort(), username, ipaddr, port)
 	if err != nil {
-		http.Error(w, err.Error(), http.StatusInternalServerError)
+		utils.SendErrorResponse(w, err.Error())
 		return
 	}