Source/UBCS/ubcs-service/ubcs-deploy/src/main/java/com/vci/ubcs/deploy/service/impl/DeployAppsServiceImpl.java
@@ -8,20 +8,16 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.vci.ubcs.deploy.entity.CmdConfig;
import com.vci.ubcs.deploy.entity.DeployApps;
import com.vci.ubcs.deploy.enumpack.CmdConfigEnum;
import com.vci.ubcs.deploy.mapper.DeployAppsMapper;
import com.vci.ubcs.deploy.service.IDeployAppsService;
import com.vci.ubcs.deploy.vo.DeployAppsVO;
import com.vci.ubcs.starter.util.HttpUtils;
import jodd.io.StreamGobbler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
@@ -29,20 +25,14 @@
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.net.InetAddress;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -51,10 +41,8 @@
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
/**
 * @author ludc
@@ -202,8 +190,12 @@
    * @throws ServiceException
    */
   @Override
   public boolean saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException {
      return this.saveOrUpdate(deployAppsVO);
   public R saveOrUpdateServiceInfo(DeployAppsVO deployAppsVO) throws ServiceException {
      boolean checkBoolean = checkCmdVer(deployAppsVO.getStartCmd()) && checkCmdVer(deployAppsVO.getStopCmd()) && checkCmdVer(deployAppsVO.getRestartCmd());
      if(checkBoolean){
         return R.fail("配置的命令中包含危险命令,如:rm、mv、rm -rf、chmod等命令和关键字! ");
      }
      return R.status(this.saveOrUpdate(deployAppsVO));
   }
   /**
@@ -349,6 +341,9 @@
         if(Func.isEmpty(cmd)){
            return "The executed command is empty";
         }
         if(checkCmdVer(cmd)){
            return "配置的命令中包含危险命令,如:rm、mv、rm -rf、chmod等命令和关键词! ";
         }
         // 执行Linux命令
         log.info("开始执行命令:"+cmd);
         // Process process = Runtime.getRuntime().exec(cmd);
@@ -429,4 +424,22 @@
      return "8080";
   }
   /**
    * 启动、停止、重启命令校验
    * @param cmd
    * @return true: 包含高风险命令, false:不包含
    */
   private boolean checkCmdVer(String cmd){
      if(Func.isEmpty(cmd)){
         return false;
      }
      String[] highRiskCommands = {"rm", "rmdir", "mv", "unlink", "rm -rf", "mv -rf", "dd", "chmod", "chown", "mkfs", "shutdown", "reboot", "kill"};
      for(String highRiskCmd : highRiskCommands){
         if(cmd.contains(highRiskCmd)){
            return true;
         }
      }
      return false;
   }
}