socialforge/controller/WebsshController.java

76 lines
3.0 KiB
Java
Raw Permalink Normal View History

2018-07-03 18:34:21 +08:00
package com.educoder.bridge.controller;
import com.alibaba.fastjson.JSONObject;
import com.educoder.bridge.model.Webssh;
import com.educoder.bridge.service.WebsshService;
import com.educoder.bridge.utils.Base64Util;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
/**
* @author guange
* @date 2017/08/02
*/
@Api(value = "提供webssh连接", hidden = true)
@RestController
public class WebsshController extends BaseController {
private final static Logger logger = LoggerFactory.getLogger(WebsshController.class);
@Autowired
private WebsshService websshService;
@ApiOperation(value = "获取连接容器所需的ip和端口信息", httpMethod = "POST", produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@RequestMapping(path = "/webssh/getConnectInfo")
public JSONObject getConnectInfo(
@ApiParam(name = "tpiID", required = true, value = "tpiID") @RequestParam String tpiID,
@ApiParam(name = "podType", required = true, value = "pod类型0为evaluate, 1为webssh2为evassh") @RequestParam Integer podType,
@ApiParam(name = "containers", required = true, value = "需要使用的容器,base64编码") @RequestParam String containers)
throws Exception {
logger.info("tpiID: {}, podType: {}containers: {}", tpiID, podType, containers);
containers = Base64Util.decode(containers);
Webssh sshInfo = websshService.create(tpiID, podType, containers);
JSONObject response = new JSONObject();
response.put("address", sshInfo.getAddress());
response.put("port", Integer.parseInt(sshInfo.getPort()) + "");
response.put("code", 0);
return response;
}
@RequestMapping(value={"/", "ssh"}, method= RequestMethod.GET)
public ModelAndView index(@RequestParam("Host")String host,
@RequestParam("Port")int port,
@RequestParam("Gameid")int gameId,
@RequestParam("Username")String username,
@RequestParam("Password")String password,
@RequestParam("Tab")String tab,
@RequestParam("Rows")int rows) {
//index就是视图的名称index.ftl
logger.debug("/ssh 接收到前端连接请求,host: {}, port: {}", host, port);
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
mv.addObject("Host", host);
mv.addObject("Port", port);
mv.addObject("Username", username);
mv.addObject("Password", password);
mv.addObject("Tab", tab);
mv.addObject("Rows", rows);
mv.addObject("Gameid", gameId);
mv.addObject("digest", System.currentTimeMillis());
return mv;
}
}