2016-04-04 3 views
0

Я попытался создать демонстрационное приложение guacamole для ssh из приведенного ниже руководства.Как передать имя хоста в качестве параметра для ssh в guacamole

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

приложение работало нормально, пока значения были жёстко. Но мне нужно получить имя пользователя /IP. Для того, чтобы добиться того, что я попытался с помощью request.getParameter() в коде ниже:

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); 

    } 

} 

Но когда я пытаюсь использовать его как локальный: 8080/гуакамоле-учебник-0.9.9 имя хоста = локальный, не работает. В то время как он работает просто отлично, если я жестко кодирую те же значения. Пожалуйста, помогите мне.

ответ

2

вам нужно будет использовать JavaScript для передачи этих параметров функции connect() Guacamole.Client. 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> 

и в вашем доступе TutorialGuacamoleTunnelServlet их как

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

Спасибо. Но это, похоже, не служит моему прецеденту. Мне нужно получить их из URL-адреса. Как мне это сделать. –

+1

ну, вы можете получить данные с url с помощью javascript, а затем передать их http://stackoverflow.com/a/901144/1315392 – vinay