Skip to content

Commit 2b78864

Browse files
committed
fix: make hostname extraction work with IPv6 addresses
1 parent 587b938 commit 2b78864

File tree

2 files changed

+21
-31
lines changed

2 files changed

+21
-31
lines changed

modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.axiom.om.OMFactory;
2424
import org.apache.axiom.om.OMNamespace;
2525
import org.apache.axiom.om.OMNode;
26-
import org.apache.axis2.AxisFault;
2726
import org.apache.axis2.addressing.AddressingConstants;
2827
import org.apache.axis2.description.*;
2928
import org.apache.axis2.description.java2wsdl.Java2WSDLConstants;
@@ -36,12 +35,15 @@
3635
import org.apache.neethi.PolicyReference;
3736

3837
import javax.xml.namespace.QName;
38+
import java.net.URI;
39+
import java.net.URISyntaxException;
3940
import java.util.*;
4041

4142
/**
4243
* Helps the AxisService to WSDL process
4344
*/
4445
public class WSDLSerializationUtil {
46+
private static final OnDemandLogger log = new OnDemandLogger(WSDLSerializationUtil.class);
4547

4648
public static final String CDATA_START = "<![CDATA[";
4749
public static final String CDATA_START_REGEX = "<!\\[CDATA\\[";
@@ -422,29 +424,31 @@ private static AxisService getAxisService(AxisDescription description) {
422424
}
423425
}
424426

425-
public static String extractHostIP(String serviceURL){
426-
427+
public static String extractHostIP(String serviceURL) {
428+
try {
429+
return new URI(serviceURL).getHost();
430+
} catch (URISyntaxException | NullPointerException e) {
431+
log.debug("encountered invalid URI when trying to extract host ip, will try to parse manually now", e);
427432
String ip = null;
428-
433+
429434
if (serviceURL != null) {
430-
435+
431436
int ipindex = serviceURL.indexOf("//");
432-
437+
433438
if (ipindex >= 0) {
434-
ip = serviceURL.substring(ipindex + 2, serviceURL.length());
439+
ip = serviceURL.substring(ipindex + 2);
435440
int seperatorIndex = ip.indexOf(":");
436441
int slashIndex = ip.indexOf("/");
437-
442+
438443
if (seperatorIndex >= 0) {
439444
ip = ip.substring(0, seperatorIndex);
440445
} else {
441446
ip = ip.substring(0, slashIndex);
442-
}
447+
}
443448
}
444449
}
445-
446-
return ip;
447-
}
448450

449-
451+
return ip;
452+
}
453+
}
450454
}

modules/transport/http/src/main/java/org/apache/axis2/transport/http/ListingAgent.java

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@
2727
import org.apache.axis2.description.Parameter;
2828
import org.apache.axis2.description.PolicyInclude;
2929
import org.apache.axis2.transport.http.server.HttpUtils;
30-
import org.apache.axis2.util.ExternalPolicySerializer;
31-
import org.apache.axis2.util.IOUtils;
32-
import org.apache.axis2.util.JavaUtils;
33-
import org.apache.axis2.util.OnDemandLogger;
30+
import org.apache.axis2.util.*;
3431
import org.apache.neethi.Policy;
3532
import org.apache.neethi.PolicyComponent;
3633
import org.apache.neethi.PolicyRegistry;
@@ -46,11 +43,12 @@
4643
import java.io.IOException;
4744
import java.io.InputStream;
4845
import java.io.OutputStream;
46+
import java.net.URI;
47+
import java.net.URISyntaxException;
4948
import java.util.Collection;
5049
import java.util.Enumeration;
5150
import java.util.HashMap;
5251
import java.util.Iterator;
53-
import java.util.List;
5452

5553
public class ListingAgent extends AbstractAgent {
5654

@@ -99,19 +97,7 @@ protected void processIndex(HttpServletRequest httpServletRequest,
9997
}
10098

10199
private String extractHost(String filePart) {
102-
int ipindex = filePart.indexOf("//");
103-
String ip = null;
104-
if (ipindex >= 0) {
105-
ip = filePart.substring(ipindex + 2, filePart.length());
106-
int seperatorIndex = ip.indexOf(":");
107-
int slashIndex = ip.indexOf("/");
108-
if (seperatorIndex >= 0) {
109-
ip = ip.substring(0, seperatorIndex);
110-
} else {
111-
ip = ip.substring(0, slashIndex);
112-
}
113-
}
114-
return ip;
100+
return WSDLSerializationUtil.extractHostIP(filePart);
115101
}
116102

117103
public void processExplicitSchemaAndWSDL(HttpServletRequest req,

0 commit comments

Comments
 (0)