diff options
| author | doufenghu <[email protected]> | 2023-10-15 21:38:18 +0800 |
|---|---|---|
| committer | doufenghu <[email protected]> | 2023-10-15 21:38:18 +0800 |
| commit | a2bb23ba3c4b496e925bda425d84ac9de8535888 (patch) | |
| tree | 46d03949fbd243e41ab17d58b4425b2bd727f52f | |
| parent | f380e68add244c4cfab9c51d646bbf5729488541 (diff) | |
fix(FormatUtils) CN-1369 非法URL将抛出IllegalArgumentException
| -rw-r--r-- | src/main/java/com/geedgenetworks/utils/FormatUtils.java | 93 | ||||
| -rw-r--r-- | src/main/java/com/geedgenetworks/utils/IPUtil.java | 5 | ||||
| -rw-r--r-- | src/test/java/com/geedgenetworks/test/FormatUtilTest.java | 14 |
3 files changed, 68 insertions, 44 deletions
diff --git a/src/main/java/com/geedgenetworks/utils/FormatUtils.java b/src/main/java/com/geedgenetworks/utils/FormatUtils.java index 35d1c8a..30912b0 100644 --- a/src/main/java/com/geedgenetworks/utils/FormatUtils.java +++ b/src/main/java/com/geedgenetworks/utils/FormatUtils.java @@ -15,6 +15,29 @@ public class FormatUtils { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + private static final String HTTP_PROTOCOL_HEADER = "http://"; + private static final String HTTPS_PROTOCOL_HEADER = "https://"; + private static final String FTP_PROTOCOL_HEADER = "ftp://"; + + private FormatUtils(Builder builder) { + init(builder); + } + + private synchronized void init(Builder builder) { + try { + + if (builder.idDefault) { + logger.info("FormatUtils begin with default PZ."); + } else { + logger.info("FormatUtils begin with user-defined PZ."); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** * 将List<HashMap<String,Object>>中HashMap的key全部转化为变量形式,<br> * 如{"BRH_ID":"1234","BRH_NAME":"机构"}改为{"brhId":"1234","brhName":"机构"} @@ -82,29 +105,13 @@ public class FormatUtils { return result.toString(); } - private FormatUtils(Builder builder) { - init(builder); - } - private synchronized void init(Builder builder) { - try { - - if (builder.isDefalult) { - logger.info("FormatUtils begin with default PZ."); - } else { - logger.info("FormatUtils begin with user-defined PZ."); - } - - } catch (Exception e) { - e.printStackTrace(); - } - } public static final class Builder { - boolean isDefalult; + boolean idDefault; public Builder(boolean isDefalult) { - this.isDefalult = isDefalult; + this.idDefault = isDefalult; } public FormatUtils build() { @@ -171,39 +178,43 @@ public class FormatUtils { * @return 返回截取后的域名地址 */ public static String getDomain(String url) { - + String domain = null; if(StringUtil.isBlank(url)){ return StringUtil.EMPTY; } - if (url.indexOf("http://") >= 0) { - url = url.substring("http://".length(), url.length()); - } else if (url.indexOf("https://", 0) >= 0) { - url = url.substring("https://".length(), url.length()); - } else if (url.indexOf("ftp://", 0) >= 0) { - url = url.substring("ftp://".length(), url.length()); - } else { - url = url; - } + try { + if (url.startsWith(HTTP_PROTOCOL_HEADER)) { + domain = url.substring(HTTP_PROTOCOL_HEADER.length(), url.length()); + } else if (url.startsWith(HTTPS_PROTOCOL_HEADER)) { + domain = url.substring(HTTPS_PROTOCOL_HEADER.length(), url.length()); + } else if (url.startsWith(FTP_PROTOCOL_HEADER)) { + domain = url.substring(FTP_PROTOCOL_HEADER.length(), url.length()); + } else { + domain = url; + } - if (url.indexOf("www.") == 0) { - url = url.substring(url.indexOf(".") + 1, url.length()); - } + if (domain.indexOf("www.") == 0) { + domain = domain.substring(domain.indexOf(".") + 1, url.length()); + } - if (url.indexOf(":") >= 0) { - url = url.substring(0, url.indexOf(":")); - } + if (domain.indexOf(":") >= 0) { + domain = domain.substring(0, domain.indexOf(":")); + } - if (url.indexOf("/", 0) >= 0) { - url = url.substring(0, url.indexOf("/", 1)); - } + if (domain.indexOf("/", 0) >= 0 ) { + domain = domain.substring(0, domain.indexOf("/", 1)); + } - if (url.indexOf("?") >= 0) { - url = url.substring(0, url.indexOf("?")); - } + if (domain.indexOf("?") >= 0) { + domain = domain.substring(0, domain.indexOf("?")); + } + } catch (RuntimeException e) { + throw new IllegalArgumentException("Invalid URL=["+url+"]", e); + } - return url; + return domain; } /** diff --git a/src/main/java/com/geedgenetworks/utils/IPUtil.java b/src/main/java/com/geedgenetworks/utils/IPUtil.java index 5c33273..e351b46 100644 --- a/src/main/java/com/geedgenetworks/utils/IPUtil.java +++ b/src/main/java/com/geedgenetworks/utils/IPUtil.java @@ -31,6 +31,10 @@ public class IPUtil { private static final String LOCALHOST_IPV4_ADDRESS = "127.0.0.1"; private static final String LOCALHOST_NAME = "localhost"; private static byte pos []= new byte []{(byte)128,64,32,16,8,4,2,1}; + + private IPUtil() { + throw new IllegalStateException("Utility Class"); + } private static final Pattern IPV4Pattern = Pattern. compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b"); private static final Pattern IPV6_STD_PATTERN = @@ -56,6 +60,7 @@ public class IPUtil { */ public static String getIpString(String ip10) { StringBuffer sb = new StringBuffer(""); + if (ip10.indexOf("-") > -1) { Integer intIP = Integer.parseInt(setStrEmpty(ip10)); diff --git a/src/test/java/com/geedgenetworks/test/FormatUtilTest.java b/src/test/java/com/geedgenetworks/test/FormatUtilTest.java index fddc4f0..6f28e1f 100644 --- a/src/test/java/com/geedgenetworks/test/FormatUtilTest.java +++ b/src/test/java/com/geedgenetworks/test/FormatUtilTest.java @@ -37,17 +37,25 @@ public class FormatUtilTest { @Test public void testGetDomain() { Assert.assertEquals(FormatUtils.getDomain("https://pan.baidu.com/s/1wejv5ZceAL0NQGExvPQm-Q#list/path=%2F&parentPath=%2Fsharelink3477893581-1028235543414583"), "pan.baidu.com"); - Assert.assertEquals(FormatUtils.getDomain("www.baidu.com"), "baidu.com"); Assert.assertEquals(FormatUtils.getDomain("www.baidu.com.cn"), "baidu.com.cn"); Assert.assertEquals(FormatUtils.getDomain("www.baidu.cc"),"baidu.cc"); - - Assert.assertEquals(FormatUtils.getDomain("com.cn"), "com.cn"); Assert.assertEquals(FormatUtils.getDomain("baidu.com.hk:80/abc.html"), "baidu.com.hk"); } + @Test(expected=IllegalArgumentException.class) + public void testGetDomainExpectedException() { + System.out.println(FormatUtils.getDomain("http:///test")); + System.out.println(FormatUtils.getDomain("https:///test")); + System.out.println(FormatUtils.getDomain("/test")); + System.out.println(FormatUtils.getDomain("www./test")); + System.out.println(FormatUtils.getDomain("http://www./test")); + } + + + @Test public void testBase64Decode() { |
