mirror of
https://github.com/yacy/yacy_search_server.git
synced 2025-07-22 09:14:38 -04:00
fixed mess with test on localhost (which means local hosts for some
cases)
This commit is contained in:
source/net/yacy
@ -73,7 +73,8 @@ public class Domains {
|
||||
private static Method InetAddressLocatorGetLocaleInetAddressMethod;
|
||||
private static final Set<String> ccSLD_TLD = new HashSet<String>();
|
||||
private static final String PRESENT = "";
|
||||
private static final Pattern LOCAL_PATTERNS = Pattern.compile("(10\\..*)|(127\\..*)|(172\\.(1[6-9]|2[0-9]|3[0-1])\\..*)|(169\\.254\\..*)|(192\\.168\\..*)|(localhost)|(\\[?\\:\\:1/.*)|(\\[?fc.*)|(\\[?fd.*)|(\\[?(fe80|0)\\:0\\:0\\:0\\:0\\:0\\:0\\:1.*)");
|
||||
private static final Pattern LOCALHOST_PATTERNS = Pattern.compile("(127\\..*)|(localhost)|(\\[?(fe80|0)\\:0\\:0\\:0\\:0\\:0\\:0\\:1.*)");
|
||||
private static final Pattern INTRANET_PATTERNS = Pattern.compile("(10\\..*)|(127\\..*)|(172\\.(1[6-9]|2[0-9]|3[0-1])\\..*)|(169\\.254\\..*)|(192\\.168\\..*)|(localhost)|(\\[?\\:\\:1/.*)|(\\[?fc.*)|(\\[?fd.*)|(\\[?(fe80|0)\\:0\\:0\\:0\\:0\\:0\\:0\\:1.*)");
|
||||
|
||||
private static final int MAX_NAME_CACHE_HIT_SIZE = 10000;
|
||||
private static final int MAX_NAME_CACHE_MISS_SIZE = 1000;
|
||||
@ -1029,6 +1030,15 @@ public class Domains {
|
||||
return (isLocal(host, hostaddress)) ? TLD_Local_ID : TLD_Generic_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* check the host ip string against localhost names
|
||||
* @param host
|
||||
* @return true if the host from the string is the localhost
|
||||
*/
|
||||
public static boolean isLocalhost(final String host) {
|
||||
return (host != null && LOCALHOST_PATTERNS.matcher(host).matches());
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a given host is the name for a local host address
|
||||
* this method will return true if noLocalCheck is switched on. This means that
|
||||
@ -1038,11 +1048,11 @@ public class Domains {
|
||||
* @param host
|
||||
* @return
|
||||
*/
|
||||
public static boolean isLocalhost(final String host) {
|
||||
public static boolean isIntranet(final String host) {
|
||||
return (noLocalCheck || // DO NOT REMOVE THIS! it is correct to return true if the check is off
|
||||
(host != null && LOCAL_PATTERNS.matcher(host).matches()));
|
||||
(host != null && INTRANET_PATTERNS.matcher(host).matches()));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* check if the given host is a local address.
|
||||
* the hostaddress is optional and shall be given if the address is already known
|
||||
@ -1061,9 +1071,9 @@ public class Domains {
|
||||
host.isEmpty()) return true;
|
||||
|
||||
// check local ip addresses
|
||||
if (isLocalhost(host)) return true;
|
||||
if (isIntranet(host)) return true;
|
||||
if (hostaddress != null && (
|
||||
isLocalhost(hostaddress.getHostAddress()) ||
|
||||
isIntranet(hostaddress.getHostAddress()) ||
|
||||
isLocal(hostaddress)
|
||||
)) return true;
|
||||
|
||||
|
@ -183,7 +183,7 @@ public class Jetty8YaCySecurityHandler extends SecurityHandler {
|
||||
refererHost = null;
|
||||
}
|
||||
final boolean accessFromLocalhost = Domains.isLocalhost(request.getRemoteHost()) && (refererHost == null || refererHost.length() == 0 || Domains.isLocalhost(refererHost));
|
||||
// ! note : accessFromLocalhost compares localhost ip pattern ( ! currently also any intranet host is a local host)
|
||||
// ! note : accessFromLocalhost compares localhost ip pattern
|
||||
final boolean grantedForLocalhost = adminAccountForLocalhost && accessFromLocalhost;
|
||||
boolean protectedPage = (pathInContext.indexOf("_p.") > 0);
|
||||
// check "/gsa" and "/solr" if not publicSearchpage
|
||||
|
@ -765,8 +765,8 @@ public class Network
|
||||
}
|
||||
seedURL = new DigestURL(seedURLStr);
|
||||
final String host = seedURL.getHost();
|
||||
if (Domains.isLocalhost(host)) { // check seedlist reacheable
|
||||
final String errorMsg = "seedURL in localhost rejected (localhost can't be reached from outside)";
|
||||
if (Domains.isIntranet(host)) { // check seedlist reacheable
|
||||
final String errorMsg = "seedURL in local network rejected (local hosts can't be reached from outside)";
|
||||
log.warn("SaveSeedList: " + errorMsg);
|
||||
return errorMsg;
|
||||
}
|
||||
|
@ -1087,8 +1087,8 @@ public class Seed implements Cloneable, Comparable<Seed>, Comparator<Seed>
|
||||
try {
|
||||
final URL url = new URL(seedURL);
|
||||
final String host = url.getHost();
|
||||
if (Domains.isLocalhost(host)) {
|
||||
return "seedURL in localhost rejected";
|
||||
if (Domains.isIntranet(host)) {
|
||||
return "seedURL in local network rejected";
|
||||
}
|
||||
} catch (final MalformedURLException e ) {
|
||||
return "seedURL malformed";
|
||||
|
Reference in New Issue
Block a user