From 57da9f7ffea6a9960984af0dc5e2aadd990e396a Mon Sep 17 00:00:00 2001 From: RuoYi Date: Fri, 23 Jul 2021 18:54:16 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=8D=87=E7=BA=A7oshi=E5=88=B0=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=ACv5.8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7279a36d1..62467346f 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 2.1.4 1.3.1 1.2.76 - 5.7.5 + 5.8.0 5.8.0 2.10.0 1.4 From 15c75786929375814044dc26804d7dffb72408eb Mon Sep 17 00:00:00 2001 From: RuoYi Date: Sun, 25 Jul 2021 10:36:42 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E5=90=88=E7=90=86=E5=8C=96=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index e66fe68e4..b79e9b30f 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -82,7 +82,6 @@ mybatis: # PageHelper分页插件 pagehelper: helperDialect: mysql - reasonable: true supportMethodsArguments: true params: count=countSql From 27277b51d7deb0ac33a96af660005c73ecb66c3b Mon Sep 17 00:00:00 2001 From: RuoYi Date: Wed, 28 Jul 2021 16:37:56 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BC=98=E5=8C=96XSS=E8=B7=A8=E7=AB=99?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/constant/Constants.java | 10 ++ .../com/ruoyi/common/utils/StringUtils.java | 110 +++++++++++++++++- .../java/com/ruoyi/common/xss/XssFilter.java | 33 +----- .../ruoyi/framework/config/FilterConfig.java | 8 +- 4 files changed, 127 insertions(+), 34 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 869997cda..64664e06e 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -17,6 +17,16 @@ public class Constants */ public static final String GBK = "GBK"; + /** + * http请求 + */ + public static final String HTTP = "http://"; + + /** + * https请求 + */ + public static final String HTTPS = "https://"; + /** * 通用成功标识 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java index 882e94a64..806e4ad9c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java @@ -1,7 +1,13 @@ package com.ruoyi.common.utils; +import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; +import java.util.List; import java.util.Map; +import java.util.Set; +import org.springframework.util.AntPathMatcher; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.text.StrFormatter; /** @@ -256,6 +262,68 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils return StrFormatter.format(template, params); } + /** + * 是否为http(s)://开头 + * + * @param link 链接 + * @return 结果 + */ + public static boolean ishttp(String link) + { + return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS); + } + + /** + * 字符串转set + * + * @param str 字符串 + * @param sep 分隔符 + * @return set集合 + */ + public static final Set str2Set(String str, String sep) + { + return new HashSet(str2List(str, sep, true, false)); + } + + /** + * 字符串转list + * + * @param str 字符串 + * @param sep 分隔符 + * @param filterBlank 过滤纯空白 + * @param trim 去掉首尾空白 + * @return list集合 + */ + public static final List str2List(String str, String sep, boolean filterBlank, boolean trim) + { + List list = new ArrayList(); + if (StringUtils.isEmpty(str)) + { + return list; + } + + // 过滤空白字符串 + if (filterBlank && StringUtils.isBlank(str)) + { + return list; + } + String[] split = str.split(sep); + for (String string : split) + { + if (filterBlank && StringUtils.isBlank(string)) + { + continue; + } + if (trim) + { + string = string.trim(); + } + list.add(string); + } + + return list; + } + /** * 驼峰转下划线命名 */ @@ -301,6 +369,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils } sb.append(Character.toLowerCase(c)); } + return sb.toString(); } @@ -400,9 +469,48 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils return sb.toString(); } + /** + * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串 + * + * @param str 指定字符串 + * @param strs 需要检查的字符串数组 + * @return 是否匹配 + */ + public static boolean matches(String str, List strs) + { + if (isEmpty(str) || isEmpty(strs)) + { + return false; + } + for (String pattern : strs) + { + if (isMatch(pattern, str)) + { + return true; + } + } + return false; + } + + /** + * 判断url是否与规则配置: + * ? 表示单个字符; + * * 表示一层路径内的任意字符串,不可跨层级; + * ** 表示任意层路径; + * + * @param pattern 匹配规则 + * @param url 需要匹配的url + * @return + */ + public static boolean isMatch(String pattern, String url) + { + AntPathMatcher matcher = new AntPathMatcher(); + return matcher.match(pattern, url); + } + @SuppressWarnings("unchecked") public static T cast(Object obj) { return (T) obj; } -} +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java index d307fbc9f..30fd69ce8 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/xss/XssFilter.java @@ -3,8 +3,6 @@ package com.ruoyi.common.xss; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -27,16 +25,10 @@ public class XssFilter implements Filter */ public List excludes = new ArrayList<>(); - /** - * xss过滤开关 - */ - public boolean enabled = false; - @Override public void init(FilterConfig filterConfig) throws ServletException { String tempExcludes = filterConfig.getInitParameter("excludes"); - String tempEnabled = filterConfig.getInitParameter("enabled"); if (StringUtils.isNotEmpty(tempExcludes)) { String[] url = tempExcludes.split(","); @@ -45,10 +37,6 @@ public class XssFilter implements Filter excludes.add(url[i]); } } - if (StringUtils.isNotEmpty(tempEnabled)) - { - enabled = Boolean.valueOf(tempEnabled); - } } @Override @@ -68,25 +56,14 @@ public class XssFilter implements Filter private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) { - if (!enabled) + String url = request.getServletPath(); + String method = request.getMethod(); + // GET DELETE 不过滤 + if (method == null || method.matches("GET") || method.matches("DELETE")) { return true; } - if (excludes == null || excludes.isEmpty()) - { - return false; - } - String url = request.getServletPath(); - for (String pattern : excludes) - { - Pattern p = Pattern.compile("^" + pattern); - Matcher m = p.matcher(url); - if (m.find()) - { - return true; - } - } - return false; + return StringUtils.matches(url, excludes); } @Override diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java index 92d010e80..b7d10b8f9 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import javax.servlet.DispatcherType; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -16,11 +17,9 @@ import com.ruoyi.common.xss.XssFilter; * @author ruoyi */ @Configuration +@ConditionalOnProperty(value = "xss.enabled", havingValue = "true") public class FilterConfig { - @Value("${xss.enabled}") - private String enabled; - @Value("${xss.excludes}") private String excludes; @@ -36,10 +35,9 @@ public class FilterConfig registration.setFilter(new XssFilter()); registration.addUrlPatterns(StringUtils.split(urlPatterns, ",")); registration.setName("xssFilter"); - registration.setOrder(Integer.MAX_VALUE); + registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE); Map initParameters = new HashMap(); initParameters.put("excludes", excludes); - initParameters.put("enabled", enabled); registration.setInitParameters(initParameters); return registration; } From b2e512aa53ea1eaf7774fae508d2b5655f163194 Mon Sep 17 00:00:00 2001 From: 18326186802 <862709625@qq.com> Date: Thu, 29 Jul 2021 11:31:32 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=BD=93=E8=B5=84=E6=BA=90=E5=BA=93?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E5=AD=98=E5=9C=A8trans=E5=92=8Cjob=E6=97=B6:?= =?UTF-8?q?=E4=BC=98=E5=8C=96:=E6=96=B0=E5=BB=BA=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E5=8F=AA=E8=83=BD=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2,=E6=96=B0=E5=BB=BAjob=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E5=8F=AA=E8=83=BD=E9=80=89=E6=8B=A9job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kettle/controller/XRepositoryController.java | 16 ++++++++-------- .../java/com/ruoyi/kettle/repo/XRepoManager.java | 12 ++++++------ .../kettle/service/IXRepositoryService.java | 2 +- .../service/impl/KettleTransServiceImpl.java | 8 +++++++- .../service/impl/XRepositoryServiceImpl.java | 9 ++++----- .../java/com/ruoyi/kettle/tools/KettleUtil.java | 6 ++---- .../templates/kettle/common/repository_tree.html | 7 +++---- .../main/resources/templates/kettle/job/add.html | 3 ++- .../resources/templates/kettle/trans/add.html | 3 ++- 9 files changed, 35 insertions(+), 31 deletions(-) diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/controller/XRepositoryController.java b/bps-kettle/src/main/java/com/ruoyi/kettle/controller/XRepositoryController.java index 56be3d8c6..cb8f61be1 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/controller/XRepositoryController.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/controller/XRepositoryController.java @@ -57,15 +57,15 @@ public class XRepositoryController extends BaseController List list = xRepositoryService.selectXRepositoryList(xRepository); return getDataTable(list); } - @GetMapping(value = { "/selectRepositoryTree", "/selectRepositoryTree/{excludeId}" }) - public String selectRepositoryTree( @PathVariable(value = "excludeId", required = false) String excludeId, ModelMap mmap) + @GetMapping(value = { "/selectRepositoryTree", "/selectRepositoryTree/{type}" }) + public String selectRepositoryTree( @PathVariable(value = "type", required = false) String type, ModelMap mmap) { XRepository r=new XRepository(); List repoTree = xRepositoryService.selectXRepositoryList(r); - XRepository repository=xRepositoryService.selectXRepositoryById(2L); - mmap.put("repository", repository); + //XRepository repository=xRepositoryService.selectXRepositoryById(2L); + //mmap.put("repository", repository); mmap.put("repoTree", repoTree); - mmap.put("excludeId", excludeId); + mmap.put("type", type); return "kettle/common/repository_tree"; } @GetMapping("/repositoryRoot") @@ -75,10 +75,10 @@ public class XRepositoryController extends BaseController List ztrees = xRepositoryService.selectRepoRoot(new XRepository()); return ztrees; } - @PostMapping("/qryRepoSubTree/{id}") + @PostMapping("/qryRepoSubTree/{id}/{type}") @ResponseBody - public List qryRepoSubTree(@PathVariable("id") Long id, ModelMap mmapy) { - List ztrees = xRepositoryService.selectRepoTree(id); + public List qryRepoSubTree(@PathVariable("id") Long id,@PathVariable("type") String type, ModelMap mmapy) { + List ztrees = xRepositoryService.selectRepoTree(id,type); return ztrees; } /** diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/repo/XRepoManager.java b/bps-kettle/src/main/java/com/ruoyi/kettle/repo/XRepoManager.java index 9775c6d77..ad01cc53b 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/repo/XRepoManager.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/repo/XRepoManager.java @@ -26,15 +26,15 @@ public class XRepoManager { public XRepoManager() { } - public static List getAllDirectoryTreeList(String repoId, Repository repository, String path, List allRepositoryTreeList) throws KettleException { - List repositoryTreeList = getJobAndTrans(repoId, repository, path); + public static List getAllDirectoryTreeList(String repoId, Repository repository, String path, List allRepositoryTreeList,String type) throws KettleException { + List repositoryTreeList = getJobAndTrans(repoId, repository, path,type); if (repositoryTreeList.size() != 0) { Iterator var5 = repositoryTreeList.iterator(); while(var5.hasNext()) { RepositoryTree repositoryTree = (RepositoryTree)var5.next(); if (!repositoryTree.isLasted()) { - getAllDirectoryTreeList(repoId, repository, repositoryTree.getPath(), allRepositoryTreeList); + getAllDirectoryTreeList(repoId, repository, repositoryTree.getPath(), allRepositoryTreeList,type); allRepositoryTreeList.add(repositoryTree); } else { allRepositoryTreeList.add(repositoryTree); @@ -44,7 +44,7 @@ public class XRepoManager { return allRepositoryTreeList; } - public static List getJobAndTrans(String repoId, Repository repository, String path) throws KettleException { + public static List getJobAndTrans(String repoId, Repository repository, String path,String type) throws KettleException { RepositoryDirectoryInterface rDirectory = repository.loadRepositoryDirectoryTree().findDirectory(path); List repositoryTreeList = getDirectory(repoId, repository, rDirectory); List li = repository.getJobAndTransformationObjects(rDirectory.getObjectId(), false); @@ -55,7 +55,7 @@ public class XRepoManager { RepositoryElementMetaInterface repel = (RepositoryElementMetaInterface)var6.next(); RepositoryTree repositoryTree; StringBuilder stringBuilder; - if ("job".equals(repel.getObjectType().toString())) { + if ("job".equals(repel.getObjectType().toString()) && type.equals("job")) { repositoryTree = new RepositoryTree(); stringBuilder = new StringBuilder(); stringBuilder.append("job").append(rDirectory.getObjectId().toString()).append("@").append(repel.getObjectId().toString()); @@ -71,7 +71,7 @@ public class XRepoManager { repositoryTree.setLasted(true); repositoryTree.setPath(repel.getRepositoryDirectory().getPath()); repositoryTreeList.add(repositoryTree); - } else if ("transformation".equals(repel.getObjectType().toString())) { + } else if ("transformation".equals(repel.getObjectType().toString())&& type.equals("trans")) { repositoryTree = new RepositoryTree(); stringBuilder = new StringBuilder(); stringBuilder.append("transformation").append(rDirectory.getObjectId().toString()).append("@").append(repel.getObjectId().toString()); diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/service/IXRepositoryService.java b/bps-kettle/src/main/java/com/ruoyi/kettle/service/IXRepositoryService.java index f8d8289f9..eca79054a 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/service/IXRepositoryService.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/service/IXRepositoryService.java @@ -63,7 +63,7 @@ public interface IXRepositoryService */ public int deleteXRepositoryById(Long id); - List selectRepoTree(Long id); + List selectRepoTree(Long id,String type); List selectRepoRoot(XRepository repository); } diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/KettleTransServiceImpl.java b/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/KettleTransServiceImpl.java index a856baf84..499236de8 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/KettleTransServiceImpl.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/KettleTransServiceImpl.java @@ -177,7 +177,13 @@ public class KettleTransServiceImpl implements IKettleTransService return AjaxResult.success("执行成功!"); } - + /** + * @Description:查询抓换执行日志 + * @Author: Kone.wang + * @Date: 2021/7/28 16:24 + * @param kettleTrans: + * @return: java.util.List + **/ @Override public List queryTransLog(KettleTrans kettleTrans) { List transLogs=kettleTransMapper.queryTransLog(kettleTrans.getTransName()); diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/XRepositoryServiceImpl.java b/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/XRepositoryServiceImpl.java index 28478b3c3..d103612c3 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/XRepositoryServiceImpl.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/service/impl/XRepositoryServiceImpl.java @@ -124,11 +124,10 @@ public class XRepositoryServiceImpl implements IXRepositoryService } @Override - public List selectRepoTree(Long id) { + public List selectRepoTree(Long id,String type) { XRepository xrs = xRepositoryMapper.selectXRepositoryById(id); - List repositoryTrees = getRepoTress(xrs); + List repositoryTrees = getRepoTress(xrs,type); List subTrees = new ArrayList<>(); - String type=null; String pId=String.valueOf(xrs.getId()); // try // { @@ -192,7 +191,7 @@ public class XRepositoryServiceImpl implements IXRepositoryService } return ztrees; } - private List getRepoTress(XRepository xr) { + private List getRepoTress(XRepository xr,String jobortrans) { List repositoryTrees = new ArrayList<>(); List xRepositoryList =xRepositoryMapper.selectXRepositoryList(xr); @@ -208,7 +207,7 @@ public class XRepositoryServiceImpl implements IXRepositoryService try { KettleFileRepository repository = (KettleFileRepository) KettleUtil_2. conFileRep(String.valueOf(item.getId()), item.getRepoName(), baseDir); - XRepoManager.getAllDirectoryTreeList(String.valueOf(item.getId()), repository, "/", tmpRepositoryList); + XRepoManager.getAllDirectoryTreeList(String.valueOf(item.getId()), repository, "/", tmpRepositoryList,jobortrans); if (tmpRepositoryList.size() > 0) { RepositoryDirectoryInterface rDirectory = repository.loadRepositoryDirectoryTree().findDirectory("/"); RepositoryTree repositoryTree = new RepositoryTree(); diff --git a/bps-kettle/src/main/java/com/ruoyi/kettle/tools/KettleUtil.java b/bps-kettle/src/main/java/com/ruoyi/kettle/tools/KettleUtil.java index 38a230e1e..c94960847 100644 --- a/bps-kettle/src/main/java/com/ruoyi/kettle/tools/KettleUtil.java +++ b/bps-kettle/src/main/java/com/ruoyi/kettle/tools/KettleUtil.java @@ -43,9 +43,7 @@ public class KettleUtil { public void callTrans(String transPath, String transName, Map namedParams, String[] clParams) throws Exception { KettleEnv.init(); DatabaseMeta databaseMeta=new DatabaseMeta("kettle_trans_log", "mysql", "Native(JDBC)", - "192.168.2.18","bps?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8", "3306", "root", "abc.123"); -// DatabaseMeta databaseMeta=new DatabaseMeta("kettle_trans_log", "mysql", "Native(JDBC)", -// "127.0.0.1","etl?useUniCode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=UTC","3306","root","2129"); + "xxx.xxx.x.xx","bps?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8", "3306", "root", "password"); String msg; KettleFileRepository repo = this.fileRepositoryCon(); @@ -100,7 +98,7 @@ public class KettleUtil { KettleEnv.init(); String msg; DatabaseMeta databaseMeta=new DatabaseMeta("kettle_job_log", "mysql", "Native(JDBC)", - "192.168.2.18","bps?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8", "3306", "root", "abc.123"); + "xxx.xxx.x.xx","bps?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8", "3306", "root", "password"); KettleFileRepository repo = this.fileRepositoryCon(); JobMeta jobMeta = this.loadJob(repo, jobPath, jobName); jobMeta.addDatabase(databaseMeta); diff --git a/bps-kettle/src/main/resources/templates/kettle/common/repository_tree.html b/bps-kettle/src/main/resources/templates/kettle/common/repository_tree.html index f8bf1f2d0..c3b637b95 100644 --- a/bps-kettle/src/main/resources/templates/kettle/common/repository_tree.html +++ b/bps-kettle/src/main/resources/templates/kettle/common/repository_tree.html @@ -32,9 +32,9 @@