Guacamole 鳄梨酱,无键盘
我正在使用GuacamoleGuacamole 鳄梨酱,无键盘,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
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);
}
}
};
}
}