in src/main/java/org/apache/sling/security/impl/ReferrerFilter.java [358:385]
HostInfo getHost(final String referrer) {
final int startPos = referrer.indexOf("://") + 3;
if (startPos == 2 || startPos == referrer.length()) {
// we consider this illegal
return null;
}
final HostInfo info = new HostInfo();
info.scheme = referrer.substring(0, startPos - 3);
final int paramStart = referrer.indexOf('?');
final String hostAndPath = (paramStart == -1 ? referrer : referrer.substring(0, paramStart));
final int endPos = hostAndPath.indexOf('/', startPos);
final String hostPart = (endPos == -1 ? hostAndPath.substring(startPos) : hostAndPath.substring(startPos, endPos));
final int hostNameStart = hostPart.indexOf('@') + 1;
final int hostNameEnd = hostPart.lastIndexOf(':');
if (hostNameEnd < hostNameStart) {
info.host = hostPart.substring(hostNameStart);
if (info.scheme.equals("http")) {
info.port = 80;
} else if (info.scheme.equals("https")) {
info.port = 443;
}
} else {
info.host = hostPart.substring(hostNameStart, hostNameEnd);
info.port = Integer.valueOf(hostPart.substring(hostNameEnd + 1));
}
return info;
}