From 29a53955b6128a48a1260ee6bf26a51e47c4d352 Mon Sep 17 00:00:00 2001 From: heavyrain2012 Date: Wed, 22 Dec 2021 09:58:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=8F=E6=84=9F=E8=AF=8D=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E8=B7=B3=E8=BF=87=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/win/liyufan/im/SensitiveFilter.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/broker/src/main/java/win/liyufan/im/SensitiveFilter.java b/broker/src/main/java/win/liyufan/im/SensitiveFilter.java index 78166cdf..1af29883 100644 --- a/broker/src/main/java/win/liyufan/im/SensitiveFilter.java +++ b/broker/src/main/java/win/liyufan/im/SensitiveFilter.java @@ -25,6 +25,28 @@ public class SensitiveFilter { return false; } + private int getUrlLength(String text, int i) { + boolean startUrl = false; + if(text.charAt(i) == 'h') { + if(text.length() > i + 6 && text.substring(i, i+7).equals("http://")) { + startUrl = true; + } else if(text.length() > i + 7 && text.substring(i, i+8).equals("https://")) { + startUrl = true; + } + } + + if(startUrl) { + for (int j = i+1; j < text.length(); j++) { + char ch = text.charAt(j); + if(ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t') { + return j-i; + } + } + return text.length() - i - 1; + } + return 0; + } + public Set getSensitiveWords(String text,MatchType matchType){ Set sensitiveWords=new HashSet<>(); if(text==null||text.trim().length()==0){ @@ -34,6 +56,11 @@ public class SensitiveFilter { String originalText = text; text = text.toLowerCase(); for(int i=0;i 0) { + i = i + urlLength; + continue; + } int sensitiveWordLength = getSensitiveWordLength(text, i, matchType); if(sensitiveWordLength>0){ String sensitiveWord = originalText.substring(i, i + sensitiveWordLength); @@ -117,5 +144,29 @@ public class SensitiveFilter { } } + public static void main(String[] args) { + Set words = new HashSet<>(); + words.add("sb"); + words.add("xx"); + SensitiveFilter sensitiveFilter = new SensitiveFilter(words); + String text1 = "u sb a"; + Set ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH); + System.out.println(ss.size()); + text1 = "u xx"; + ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH); + System.out.println(ss.size()); + + text1 = "a url is https://sdsbhe.com here"; + ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH); + System.out.println(ss.size()); + + text1 = "a url is https://sdsbhe.com"; + ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH); + System.out.println(ss.size()); + + text1 = "a url is https://sdsbhe.com\nsb"; + ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH); + System.out.println(ss.size()); + } }