2016-04-04 4 views
0

Ich habe versucht, eine Demo-Guacamole-App für ssh aus dem folgenden Tutorial zu bauen.Wie kann ich Hostnamen als Parameter für ssh in Guacamole übergeben

http://guac-dev.org/doc/gug/writing-you-own-guacamole-app.html

Die App funktionierte gut, solange die Werte fest codierten waren. Aber ich muss den hostname/IP vom Benutzer erhalten. Um das zu erreichen, dass ich versuchte request.getParameter() im folgenden Code verwendet:

package org.glyptodon.guacamole.net.example; 

import javax.servlet.http.HttpServletRequest; 
import org.glyptodon.guacamole.GuacamoleException; 
import org.glyptodon.guacamole.net.GuacamoleSocket; 
import org.glyptodon.guacamole.net.GuacamoleTunnel; 
import org.glyptodon.guacamole.net.InetGuacamoleSocket; 
import org.glyptodon.guacamole.net.SimpleGuacamoleTunnel; 
import org.glyptodon.guacamole.protocol.ConfiguredGuacamoleSocket; 
import org.glyptodon.guacamole.protocol.GuacamoleConfiguration; 
import org.glyptodon.guacamole.servlet.GuacamoleHTTPTunnelServlet; 

public class TutorialGuacamoleTunnelServlet 
    extends GuacamoleHTTPTunnelServlet { 

    @Override 
    protected GuacamoleTunnel doConnect(HttpServletRequest request) 
     throws GuacamoleException { 

     // Create our configuration 
     String hostname = request.getParameter("hostname"); 
     GuacamoleConfiguration config = new GuacamoleConfiguration(); 
     config.setProtocol("ssh"); 
     config.setParameter("hostname", hostname); 
     config.setParameter("port", "22"); 

     // Connect to guacd - everything is hard-coded here. 
     GuacamoleSocket socket = new ConfiguredGuacamoleSocket(
      new InetGuacamoleSocket("localhost", 4822), 
      config 
     ); 


     // Return a new tunnel which uses the connected socket 
     return new SimpleGuacamoleTunnel(socket); 

    } 

} 

Aber wenn ich versuche, es zu benutzen wie localhost: 8080/Guacamole-tutorial-0.9.9 hostname = localhost, es funktioniert nicht. Wohingegen es gut funktioniert, wenn ich die gleichen Werte fest codiere. Bitte helfen Sie mir.

Antwort

2

Sie müssen JavaScript verwenden, um diese Parameter an die Funktion connect() von Guacamole.Client zu übergeben. got from here

<script type="text/javascript"> 

    // Get display div from document 
    var display = document.getElementById("display"); 

    // Instantiate client, using an HTTP tunnel for communications. 
    var guac = new Guacamole.Client(
     new Guacamole.HTTPTunnel("tunnel") 
    ); 

    // Add client to display div 
    display.appendChild(guac.getDisplay().getElement()); 

    // Error handler 
    guac.onerror = function(error) { 
     alert(error); 
     console.log(error); 
    }; 
    // Connect 
    guac.connect('ip=192.168.99.100&user=root');** set parameters here** 

    // Disconnect on close 
    window.onunload = function() { 
     guac.disconnect(); 
    } 

    </script> 

und in Ihrem TutorialGuacamoleTunnelServlet Zugang dieses als

config.setProtocol("ssh"); 
config.setParameter("hostname", request.getParameter("ip")); 
config.setParameter("username", request.getParameter("user")); 
+0

Dank. Aber es scheint meinem Anwendungsfall nicht zu dienen. Ich muss diese von der URL abrufen. Wie kann ich das machen. –

+1

Nun können Sie Daten von der URL mit Javascript abrufen und dann übergeben sie http://StackOverflow.com/A/901144/1315392 – vinay

Verwandte Themen