package main import ( "encoding/json" "fmt" "net/http" "strconv" "imuslab.com/zoraxy/mod/sshprox" "imuslab.com/zoraxy/mod/utils" ) /* webssh.go This script handle the establish of a new ssh proxy object */ func HandleCreateProxySession(w http.ResponseWriter, r *http.Request) { //Get what ip address and port to connect to ipaddr, err := utils.GetPara(r, "ipaddr") if err != nil { http.Error(w, "Invalid Usage", http.StatusInternalServerError) return } portString, err := utils.GetPara(r, "port") if err != nil { portString = "22" } port, err := strconv.Atoi(portString) if err != nil { http.Error(w, "Invalid port number given", http.StatusInternalServerError) 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) return } //Create a new proxy instance instance, err := webSshManager.NewSSHProxy("./system/gotty") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } //Create an ssh process to the target address err = instance.CreateNewConnection(webSshManager.GetNextPort(), ipaddr, port) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } //Return the instance uuid js, _ := json.Marshal(instance.UUID) utils.SendJSONResponse(w, string(js)) } func HandleTest(w http.ResponseWriter, r *http.Request) { fmt.Println(sshprox.IsSSHConnectable("192.168.1.120", 22)) }