package com.educoder.bridge.controller; import com.alibaba.fastjson.JSONObject; import com.educoder.bridge.service.VncService; import com.educoder.bridge.utils.Base64Util; import com.educoder.bridge.utils.JedisUtil; import com.educoder.bridge.utils.PortUtil; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; @Api(value = "vnc控制器", hidden = true) @RestController @RequestMapping("/vnc") public class VncController { @Autowired private VncService vncService; private static final Logger logger = LoggerFactory.getLogger(VncController.class); @RequestMapping(path = "/getvnc") @ApiOperation(value = "图形界面", httpMethod = "POST", produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE) public JSONObject getvnc( @ApiParam(name = "tpiID", required = true, value = "实训实例的ID") @RequestParam String tpiID, @ApiParam(name = "containers", required = true, value = "需要使用的容器,base64编码") @RequestParam String containers) throws Exception{ JSONObject response = new JSONObject(); String podName = "vnc-" + tpiID; containers = Base64Util.decode(containers); // 为vnc分配port String port = JedisUtil.hget("port", podName); if (port == null) { port = PortUtil.getPort() + ""; JedisUtil.hset("port", podName, port); } vncService.getvnc(tpiID, containers); response.put("code", 0); response.put("port", port); return response; } }