summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2023-10-15 21:38:18 +0800
committerdoufenghu <[email protected]>2023-10-15 21:38:18 +0800
commita2bb23ba3c4b496e925bda425d84ac9de8535888 (patch)
tree46d03949fbd243e41ab17d58b4425b2bd727f52f
parentf380e68add244c4cfab9c51d646bbf5729488541 (diff)
fix(FormatUtils) CN-1369 非法URL将抛出IllegalArgumentException
-rw-r--r--src/main/java/com/geedgenetworks/utils/FormatUtils.java93
-rw-r--r--src/main/java/com/geedgenetworks/utils/IPUtil.java5
-rw-r--r--src/test/java/com/geedgenetworks/test/FormatUtilTest.java14
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&lt;HashMap&lt;String,Object&gt;&gt;中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() {