Skip to content
Snippets Groups Projects
Commit ce0f6f17 authored by Emeric Bernet-Rollande's avatar Emeric Bernet-Rollande
Browse files

IP Anonymisation Update Processor

parent 8b512d26
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.11</java.version>
<java.version>11</java.version>
<solr.version>8.11.2</solr.version>
</properties>
......
......@@ -23,20 +23,11 @@ import org.apache.solr.common.params.SolrParams;
import org.apache.solr.update.AddUpdateCommand;
import org.apache.solr.update.processor.UpdateRequestProcessor;
public class ReplaceUrlUpdateProcessor extends UpdateRequestProcessor {
public class AnonymiseIpUpdateProcessor extends UpdateRequestProcessor {
private static final String CLIENT_IP = "client_ip";
private final String SOURCE_FIELD_PARAM = "source.field";
private final String sourceField;
public ReplaceUrlUpdateProcessor(final SolrParams params, final UpdateRequestProcessor next) {
public AnonymiseIpUpdateProcessor(final SolrParams params, final UpdateRequestProcessor next) {
super(next);
// Try to retrieve the parameter "source.field"
if (params != null) {
sourceField = params.get(SOURCE_FIELD_PARAM, "");
} else {
sourceField = "";
}
}
@Override
......@@ -44,10 +35,13 @@ public class ReplaceUrlUpdateProcessor extends UpdateRequestProcessor {
final SolrInputDocument doc = cmd.getSolrInputDocument();
// If the sourceField parameter is set and that the doc contains it, extract its value and replace the url field value by this one
if (sourceField != null && !sourceField.isEmpty() && doc.containsKey(sourceField) && doc.getFieldValue(sourceField) != null && !doc.getFieldValue(sourceField).toString().isEmpty()) {
doc.remove("url");
final String newUrl = doc.getFieldValue(sourceField).toString();
doc.addField("url", newUrl);
if (doc != null && !"".equals(doc.getFieldValue(CLIENT_IP))) {
final String newIp = String.valueOf(doc.getFieldValue(CLIENT_IP)
.toString()
.hashCode());
if (!"".equals(newIp) ) {
doc.setField(CLIENT_IP, newIp);
}
}
// VERY IMPORTANT ! without this line of code any other Update Processor declared AFTER this one in the conf WILL NOT EXECUTE
......
......@@ -22,7 +22,7 @@ import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.update.processor.UpdateRequestProcessor;
import org.apache.solr.update.processor.UpdateRequestProcessorFactory;
public class ReplaceUrlUpdateProcessorFactory extends UpdateRequestProcessorFactory {
public class AnonymiseIpUpdateProcessorFactory extends UpdateRequestProcessorFactory {
private SolrParams params = null;
......@@ -37,7 +37,7 @@ public class ReplaceUrlUpdateProcessorFactory extends UpdateRequestProcessorFact
@Override
public UpdateRequestProcessor getInstance(final SolrQueryRequest req, final SolrQueryResponse rsp, final UpdateRequestProcessor next) {
// Pass the parameters retrieved in the init (if any) to the update processor
return new ReplaceUrlUpdateProcessor(params, next);
return new AnonymiseIpUpdateProcessor(params, next);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment