Guacamole 鳄梨酱,无键盘

Guacamole 鳄梨酱,无键盘,guacamole,Guacamole,我正在使用Guacamole0.9.12-Cubating——在服务器端扩展GuacamoleHTTPTunnelServlet,在客户端使用官方JavaScript代码。Guacamole服务器是从源代码编译的,运行在Ubuntu 17.04上 SSH连接已成功建立,但在15秒后断开连接。键盘和鼠标都不工作 May 7 17:14:09 dev guacd[4071]: Creating new client for protocol "ssh" May 7 17:14:09 dev gu

我正在使用Guacamole
0.9.12-Cubating
——在服务器端扩展
GuacamoleHTTPTunnelServlet
,在客户端使用官方JavaScript代码。Guacamole服务器是从源代码编译的,运行在Ubuntu 17.04上

SSH连接已成功建立,但在15秒后断开连接。键盘和鼠标都不工作

May  7 17:14:09 dev guacd[4071]: Creating new client for protocol "ssh"
May  7 17:14:09 dev guacd[4071]: Connection ID is "$30e2e833-5640-4bc9-92c3-929ced3d6e0e"
May  7 17:14:09 dev guacd[4382]: User "@4209df46-e26a-4ced-93c4-c264578f85a5" joined connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" (1 users now present)
May  7 17:14:10 dev guacd[4382]: SSH connection successful.
May  7 17:14:24 dev guacd[4382]: User is not responding.
May  7 17:14:24 dev guacd[4382]: User "@4209df46-e26a-4ced-93c4-c264578f85a5" disconnected (0 users remain)
May  7 17:14:24 dev guacd[4382]: Last user of connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" disconnected
May  7 17:14:25 dev guacd[4382]: SSH connection ended.
May  7 17:14:25 dev guacd[4071]: Connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" removed.
客户端JavaScript与文档中的相同-

当我重写servlet中的方法时,它们向我显示按键指向它。所以问题可能在servlet和guacd之间的某个地方

@Override
protected void doWrite(HttpServletRequest request, HttpServletResponse response, String tunnelUUID) throws GuacamoleException {
        LOGGER.debug("Do WRITE to session " + tunnelUUID);
        super.doWrite(request, response, tunnelUUID);
    }

@Override
protected void doRead(HttpServletRequest request, HttpServletResponse response, String tunnelUUID) throws GuacamoleException {
        LOGGER.debug("Do read to session " + tunnelUUID);
        super.doRead(request, response, tunnelUUID);
    }
已建立连接,但没有任何按键正在工作:


谢谢。

问题出在Spring Boot中,正如上面讨论的-

解决方案是创建自己的
HiddenHttpMethodFilter实现:

@Configuration
public class GuacamoleServletConfiguration {

    @Bean
    public GuacamoleServlet guacamoleTunnelServlet() {
        return new GuacamoleServlet();
    }

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        ServletRegistrationBean bean = new ServletRegistrationBean(guacamoleTunnelServlet(), "/remote/tunnel");
        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return bean;
    }

    @Bean
    public HiddenHttpMethodFilter hiddenHttpMethodFilter() {
        return new HiddenHttpMethodFilter() {
            @Override
            protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
                if ("POST".equals(request.getMethod()) && request.getRequestURI().startsWith("/remote/tunnel")) {
                    filterChain.doFilter(request, response);
                } else {
                    super.doFilterInternal(request, response, filterChain);
                }
            }
        };
    }
}