| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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 |
| | |
| | | * @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)); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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); |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |