mirror of
https://github.com/internetarchive/heritrix3.git
synced 2026-09-26 07:35:39 +00:00
Reject or accept matching a set of IP addresses.
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
*.class
|
||||
bin
|
||||
commons/target
|
||||
dist/target
|
||||
engine/target
|
||||
modules/target
|
||||
hq/target
|
||||
@@ -0,0 +1,87 @@
|
||||
package org.archive.modules.deciderules;
|
||||
|
||||
import static org.archive.modules.CoreAttributeConstants.A_DNS_SERVER_IP_LABEL;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
import org.archive.modules.CrawlURI;
|
||||
import org.archive.modules.net.CrawlHost;
|
||||
import org.archive.modules.net.ServerCache;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* <bean class="org.archive.modules.deciderules.IpAddressSetDecideRule">
|
||||
* <property name="ipAddresses">
|
||||
* <set>
|
||||
* <value>127.0.0.1</value>
|
||||
* <value>69.89.27.209</value>
|
||||
* </set>
|
||||
* </property>
|
||||
* <property name='decision' value='REJECT' />
|
||||
* </bean>
|
||||
* </pre>
|
||||
*
|
||||
* @contributor Travis Wellman <travis@archive.org>
|
||||
*/
|
||||
|
||||
class IpAddressSetDecideRule extends PredicatedDecideRule {
|
||||
|
||||
// private static final Logger LOGGER = Logger.getLogger(IpAddressSetDecideRule.class.getCanonicalName());
|
||||
private static final long serialVersionUID = -3670434739183271441L;
|
||||
private Set<String> ipAddresses;
|
||||
|
||||
/**
|
||||
* @return the addresses being matched
|
||||
*/
|
||||
public Set<String> getIpAddresses() {
|
||||
return Collections.unmodifiableSet(ipAddresses);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ipAddresses the addresses to match
|
||||
*/
|
||||
public void setIpAddresses(Set<String> ipAddresses) {
|
||||
this.ipAddresses = ipAddresses;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean evaluate(CrawlURI curi) {
|
||||
String hostAddress = getHostAddress(curi);
|
||||
System.out.println("hostAddress for "+ curi +" "+ hostAddress);
|
||||
return hostAddress != null &&
|
||||
ipAddresses.contains(hostAddress.intern());
|
||||
}
|
||||
|
||||
transient protected ServerCache serverCache;
|
||||
public ServerCache getServerCache() {
|
||||
return this.serverCache;
|
||||
}
|
||||
@Autowired
|
||||
public void setServerCache(ServerCache serverCache) {
|
||||
this.serverCache = serverCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* from WriterPoolProcessor
|
||||
*
|
||||
* @param curi CrawlURI
|
||||
* @return String of IP address
|
||||
*/
|
||||
protected String getHostAddress(CrawlURI curi) {
|
||||
// special handling for DNS URIs: want address of DNS server
|
||||
if (curi.getUURI().getScheme().toLowerCase().equals("dns")) {
|
||||
return (String)curi.getData().get(A_DNS_SERVER_IP_LABEL);
|
||||
}
|
||||
// otherwise, host referenced in URI
|
||||
// TODO:FIXME: have fetcher insert exact IP contacted into curi,
|
||||
// use that rather than inferred by CrawlHost lookup
|
||||
CrawlHost crlh = getServerCache().getHostFor(curi.getUURI());
|
||||
if (crlh == null) { return null; }
|
||||
InetAddress inetadd = crlh.getIP();
|
||||
if (inetadd == null) { return null; }
|
||||
return inetadd.getHostAddress();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user