diff --git a/agents-audit/pom.xml b/agents-audit/pom.xml index 8ac1edf4f6..eeeaddc038 100644 --- a/agents-audit/pom.xml +++ b/agents-audit/pom.xml @@ -102,6 +102,12 @@ guava ${google.guava.version} + + org.apache.solr + solr-core + 7.7.1 + compile + diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java index 7631e5882e..0bbeb46971 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java @@ -27,15 +27,15 @@ import org.apache.ranger.audit.provider.MiscUtil; import org.apache.ranger.audit.utils.InMemoryJAASConfiguration; import org.apache.ranger.audit.utils.SolrAppUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.impl.HttpClientUtil; -import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder; -import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder; -import org.apache.solr.client.solrj.impl.LBHttpSolrClient; -import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.SolrInputDocument; +import org.apache.ranger.index.solr.SolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.CloudSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpClientUtil; +import org.apache.ranger.index.solr.client.solrj.impl.Krb5HttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.impl.SolrHttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.impl.LBHttpSolrClient; +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrException; +import org.apache.ranger.index.solr.common.SolrInputDocument; import java.io.File; import java.io.FileInputStream; diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java b/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java index dac006c6e3..1c4fe9f4cc 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/solr/SolrAuditProvider.java @@ -32,10 +32,10 @@ import org.apache.ranger.audit.model.AuthzAuditEvent; import org.apache.ranger.audit.provider.MiscUtil; import org.apache.ranger.audit.utils.SolrAppUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.HttpSolrClient; -import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.common.SolrInputDocument; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpSolrClient; +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrInputDocument; public class SolrAuditProvider extends AuditDestination { private static final Log LOG = LogFactory.getLog(SolrAuditProvider.class); diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java b/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java index 5cb8b1be1f..3850f48c1b 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/utils/SolrAppUtil.java @@ -20,9 +20,10 @@ package org.apache.ranger.audit.utils; import org.apache.ranger.audit.provider.MiscUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.common.SolrInputDocument; +import org.apache.ranger.index.solr.SolrClient; +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrException; +import org.apache.ranger.index.solr.common.SolrInputDocument; import java.security.PrivilegedExceptionAction; import java.util.Collection; diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java new file mode 100644 index 0000000000..e3e14e7332 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/SolrClient.java @@ -0,0 +1,22 @@ +package org.apache.ranger.index.solr; + +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrInputDocument; +import org.apache.solr.client.solrj.SolrServerException; + +import java.io.IOException; +import java.util.Collection; +import java.util.stream.Collectors; + +public class SolrClient { + public final org.apache.solr.client.solrj.SolrClient inner; + + public SolrClient(org.apache.solr.client.solrj.SolrClient inner) { + this.inner = inner; + } + + public UpdateResponse add(Collection docs) throws IOException, SolrServerException { + return new UpdateResponse(inner.add(docs.stream().map(x->x.inner).collect(Collectors.toList()))); + } + +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java new file mode 100644 index 0000000000..2ec7ea4bf8 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrClient.java @@ -0,0 +1,30 @@ +package org.apache.ranger.index.solr.client.solrj; + +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrInputDocument; +import org.apache.solr.client.solrj.SolrServerException; + +import java.io.IOException; +import java.util.Collection; +import java.util.stream.Collectors; + +public class SolrClient extends org.apache.ranger.index.solr.SolrClient { + public final org.apache.solr.client.solrj.SolrClient inner; + + public SolrClient(org.apache.solr.client.solrj.SolrClient inner) { + super(inner); + this.inner = inner; + } + + public UpdateResponse add(Collection docs) throws IOException, SolrServerException { + return new UpdateResponse(inner.add(docs.stream().map(x->x.inner).collect(Collectors.toList()))); + } + + public void close() throws IOException { + inner.close(); + } + + public UpdateResponse add(SolrInputDocument document) throws IOException, SolrServerException { + return new UpdateResponse(inner.add(document.inner)); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java new file mode 100644 index 0000000000..bd250e7eec --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrQuery.java @@ -0,0 +1,48 @@ +package org.apache.ranger.index.solr.client.solrj; + +public class SolrQuery { + public final org.apache.solr.client.solrj.SolrQuery inner; + + public SolrQuery(org.apache.solr.client.solrj.SolrQuery inner) { + this.inner = inner; + } + + public SolrQuery() { + this(new org.apache.solr.client.solrj.SolrQuery()); + } + + public void setQuery(String s) { + inner.setQuery(s); + } + + public void addFilterQuery(String fq) { + inner.addFilterQuery(fq); + } + + public void setStart(int startIndex) { + inner.setStart(startIndex); + } + + public void setRows(int maxRows) { + inner.setRows(maxRows); + } + + public void addSort(String querySortBy, ORDER order) { + inner.addSort(querySortBy, order.inner); + } + + public void setRequestHandler(String queryStr) { + inner.setRequestHandler(queryStr); + } + + public enum ORDER { + asc(org.apache.solr.client.solrj.SolrQuery.ORDER.asc), + desc(org.apache.solr.client.solrj.SolrQuery.ORDER.desc); + + public final org.apache.solr.client.solrj.SolrQuery.ORDER inner; + + ORDER(org.apache.solr.client.solrj.SolrQuery.ORDER inner) { + this.inner = inner; + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java new file mode 100644 index 0000000000..b3c62b03b8 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrRequest.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.client.solrj; + +public class SolrRequest { + public enum METHOD { + POST(org.apache.solr.client.solrj.SolrRequest.METHOD.POST); + + public final org.apache.solr.client.solrj.SolrRequest.METHOD inner; + + METHOD(org.apache.solr.client.solrj.SolrRequest.METHOD post) { + inner = post; + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java new file mode 100644 index 0000000000..9aa75993e1 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrResponse.java @@ -0,0 +1,16 @@ +package org.apache.ranger.index.solr.client.solrj; + +import org.apache.ranger.index.solr.common.util.NamedList; +import org.apache.solr.client.solrj.response.CollectionAdminResponse; + +public class SolrResponse { + private final org.apache.solr.client.solrj.SolrResponse inner; + + public SolrResponse(org.apache.solr.client.solrj.SolrResponse process) { + this.inner = process; + } + + public NamedList getResponse() { + return new NamedList<>(inner.getResponse()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrServerException.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrServerException.java new file mode 100644 index 0000000000..39b2be7e8a --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/SolrServerException.java @@ -0,0 +1,9 @@ +package org.apache.ranger.index.solr.client.solrj; + +public class SolrServerException extends Exception { + public final org.apache.solr.client.solrj.SolrServerException inner; + + public SolrServerException(org.apache.solr.client.solrj.SolrServerException inner) { + this.inner = inner; + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/BinaryRequestWriter.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/BinaryRequestWriter.java new file mode 100644 index 0000000000..06805f73ab --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/BinaryRequestWriter.java @@ -0,0 +1,5 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +public class BinaryRequestWriter { + public final org.apache.solr.client.solrj.impl.BinaryRequestWriter inner = new org.apache.solr.client.solrj.impl.BinaryRequestWriter(); +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Builder.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Builder.java new file mode 100644 index 0000000000..74e6632843 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Builder.java @@ -0,0 +1,5 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +public class Builder { + public final org.apache.solr.client.solrj.impl.Builder inner = new org.apache.solr.client.solrj.impl.Builder(); +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/CloudSolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/CloudSolrClient.java new file mode 100644 index 0000000000..33611ef72f --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/CloudSolrClient.java @@ -0,0 +1,51 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.impl.ClusterStateProvider; +import org.apache.solr.client.solrj.impl.LBHttpSolrClient; +import org.apache.ranger.index.solr.common.cloud.ZkStateReader; + +import java.util.List; +import java.util.Optional; + +public class CloudSolrClient extends SolrClient { + + public final org.apache.solr.client.solrj.impl.CloudSolrClient inner; + + public CloudSolrClient(org.apache.solr.client.solrj.impl.CloudSolrClient inner) { + super(inner); + this.inner = inner; + } + + public void setDefaultCollection(String collectionName) { + inner.setDefaultCollection(collectionName); + } + + public LBHttpSolrClient getLbClient() { + return inner.getLbClient(); + } + + public ZkStateReader getZkStateReader() { + return new ZkStateReader(inner.getZkStateReader()); + } + + public ClusterStateProvider getClusterStateProvider() { + return this.inner.getClusterStateProvider(); + } + + public static class Builder { + public final org.apache.solr.client.solrj.impl.CloudSolrClient.Builder inner; + + public Builder(List zkhosts, Optional empty) { + inner = new org.apache.solr.client.solrj.impl.CloudSolrClient.Builder(zkhosts, empty); + } + + public CloudSolrClient build() { + return new CloudSolrClient(inner.build()); + } + } + + public void connect() { + inner.connect(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpClientUtil.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpClientUtil.java new file mode 100644 index 0000000000..c061c829bc --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpClientUtil.java @@ -0,0 +1,7 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +public class HttpClientUtil { + public static void setHttpClientBuilder(SolrHttpClientBuilder kb) { + org.apache.solr.client.solrj.impl.HttpClientUtil.setHttpClientBuilder(kb.inner); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpSolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpSolrClient.java new file mode 100644 index 0000000000..80f86efc6e --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/HttpSolrClient.java @@ -0,0 +1,36 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +import org.apache.ranger.index.solr.client.solrj.SolrClient; + +public class HttpSolrClient extends SolrClient { + public final org.apache.solr.client.solrj.impl.HttpSolrClient inner; + + public HttpSolrClient(org.apache.solr.client.solrj.impl.HttpSolrClient inner) { + super(new org.apache.solr.client.solrj.SolrClient()); + this.inner = inner; + } + + public void setRequestWriter(BinaryRequestWriter binaryRequestWriter) { + inner.setRequestWriter(binaryRequestWriter.inner); + } + + public static class Builder { + public final org.apache.solr.client.solrj.impl.HttpSolrClient.Builder inner = new org.apache.solr.client.solrj.impl.HttpSolrClient.Builder(); + + public void withBaseSolrUrl(String solrURL) { + inner.withBaseSolrUrl(solrURL); + } + + public void allowCompression(boolean b) { + inner.allowCompression(b); + } + + public void withConnectionTimeout(int i) { + inner.withConnectionTimeout(i); + } + + public HttpSolrClient build() { + return new HttpSolrClient(inner.build()); + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Krb5HttpClientBuilder.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Krb5HttpClientBuilder.java new file mode 100644 index 0000000000..0595dba3c3 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/Krb5HttpClientBuilder.java @@ -0,0 +1,8 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +public class Krb5HttpClientBuilder { + public final org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder inner = new org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder(); + public SolrHttpClientBuilder getBuilder() { + return new SolrHttpClientBuilder(inner.getBuilder()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/LBHttpSolrClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/LBHttpSolrClient.java new file mode 100644 index 0000000000..b44f235904 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/LBHttpSolrClient.java @@ -0,0 +1,33 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +import org.apache.ranger.index.solr.SolrClient; + +import java.net.MalformedURLException; + +public class LBHttpSolrClient extends SolrClient { + private final org.apache.solr.client.solrj.impl.LBHttpSolrClient inner; + + public LBHttpSolrClient(org.apache.solr.client.solrj.impl.LBHttpSolrClient inner) { + super(new org.apache.solr.client.solrj.SolrClient()); + this.inner = inner; + } + + public void addSolrServer(String s) throws MalformedURLException { + inner.addSolrServer(s); + } + + public static class Builder { + public final org.apache.solr.client.solrj.impl.LBHttpSolrClient.Builder inner = new org.apache.solr.client.solrj.impl.LBHttpSolrClient.Builder(); + public void withBaseSolrUrl(String s) { + inner.withBaseSolrUrl(s); + } + + public void withConnectionTimeout(int i) { + inner.withConnectionTimeout(i); + } + + public LBHttpSolrClient build() { + return new LBHttpSolrClient(inner.build()); + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/SolrHttpClientBuilder.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/SolrHttpClientBuilder.java new file mode 100644 index 0000000000..fbfc67e356 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/impl/SolrHttpClientBuilder.java @@ -0,0 +1,9 @@ +package org.apache.ranger.index.solr.client.solrj.impl; + +public class SolrHttpClientBuilder { + public final org.apache.solr.client.solrj.impl.SolrHttpClientBuilder inner; + + public SolrHttpClientBuilder(org.apache.solr.client.solrj.impl.SolrHttpClientBuilder builder) { + this.inner = builder; + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CollectionAdminRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CollectionAdminRequest.java new file mode 100644 index 0000000000..f76ba1236d --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CollectionAdminRequest.java @@ -0,0 +1,68 @@ +package org.apache.ranger.index.solr.client.solrj.request; + +import org.apache.ranger.index.solr.SolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrResponse; +import org.apache.ranger.index.solr.client.solrj.SolrServerException; +import org.apache.ranger.index.solr.client.solrj.response.CollectionAdminResponse; + +import java.io.IOException; + +public class CollectionAdminRequest { + public final org.apache.solr.client.solrj.request.CollectionAdminRequest inner; + + public CollectionAdminRequest(org.apache.solr.client.solrj.request.CollectionAdminRequest inner) { + this.inner = inner; + } + + public static Create createCollection(String solr_collection_name, String solr_config_name, int no_of_shards, int no_of_replicas) { + return new Create(org.apache.solr.client.solrj.request.CollectionAdminRequest.createCollection(solr_collection_name, solr_config_name, no_of_shards, no_of_replicas)); + } + + public void setBasicAuthCredentials(String username, String decPassword) { + inner.setBasicAuthCredentials(username, decPassword); + } + + public SolrResponse process(SolrClient solrClient) throws IOException, SolrServerException { + try { + return new SolrResponse(inner.process(solrClient.inner)); + } catch (org.apache.solr.client.solrj.SolrServerException e) { + throw new SolrServerException(e); + } + } + + public static class Create { + private final org.apache.solr.client.solrj.request.CollectionAdminRequest.Create inner; + + public Create(org.apache.solr.client.solrj.request.CollectionAdminRequest.Create collection) { + this.inner = collection; + } + + public void setMaxShardsPerNode(int max_node_per_shards) { + inner.setMaxShardsPerNode(max_node_per_shards); + } + + public CollectionAdminResponse process(SolrClient solrClient) throws IOException, SolrServerException { + try { + return new CollectionAdminResponse(inner.process(solrClient.inner)); + } catch (org.apache.solr.client.solrj.SolrServerException e) { + throw new SolrServerException(e); + } + } + } + + public static class List extends CollectionAdminRequest { + public List() { + super(new org.apache.solr.client.solrj.request.CollectionAdminRequest.List()); + } + + public CollectionAdminResponse process(SolrClient solrClient) throws SolrServerException, IOException { + try { + return new CollectionAdminResponse(inner.process(solrClient.inner)); + } catch (org.apache.solr.client.solrj.SolrServerException e) { + throw new SolrServerException(e); + } catch (IOException e) { + throw e; + } + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CoreAdminRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CoreAdminRequest.java new file mode 100644 index 0000000000..374aab384d --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/CoreAdminRequest.java @@ -0,0 +1,32 @@ +package org.apache.ranger.index.solr.client.solrj.request; + +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.response.CoreAdminResponse; +import org.apache.ranger.index.solr.common.params.CoreAdminParams; +import org.apache.solr.client.solrj.SolrServerException; + +import java.io.IOException; + +public class CoreAdminRequest { + public final org.apache.solr.client.solrj.request.CoreAdminRequest inner; + + public CoreAdminRequest(org.apache.solr.client.solrj.request.CoreAdminRequest inner) { + this.inner = inner; + } + + public CoreAdminRequest() { + this(new org.apache.solr.client.solrj.request.CoreAdminRequest()); + } + + public void setAction(CoreAdminParams.CoreAdminAction status) { + inner.setAction(status.inner); + } + + public void setBasicAuthCredentials(String username, String decPassword) { + inner.setBasicAuthCredentials(username, decPassword); + } + + public CoreAdminResponse process(SolrClient solrClient) throws IOException, SolrServerException { + return new CoreAdminResponse(inner.process(solrClient.inner)); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/QueryRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/QueryRequest.java new file mode 100644 index 0000000000..13a221a991 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/request/QueryRequest.java @@ -0,0 +1,29 @@ +package org.apache.ranger.index.solr.client.solrj.request; + +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrQuery; +import org.apache.ranger.index.solr.client.solrj.SolrRequest.METHOD; +import org.apache.ranger.index.solr.client.solrj.response.QueryResponse; +import org.apache.solr.client.solrj.SolrServerException; + +import java.io.IOException; + +public class QueryRequest { + public final org.apache.solr.client.solrj.request.QueryRequest inner; + + public QueryRequest(SolrQuery solrQuery, METHOD post) { + inner = new org.apache.solr.client.solrj.request.QueryRequest(solrQuery.inner, post.inner); + } + + public QueryRequest(SolrQuery query) { + inner = new org.apache.solr.client.solrj.request.QueryRequest(query.inner); + } + + public void setBasicAuthCredentials(String username, String password) { + inner.setBasicAuthCredentials(username, password); + } + + public QueryResponse process(SolrClient solrClient) throws IOException, SolrServerException { + return new QueryResponse(inner.process(solrClient.inner)); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CollectionAdminResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CollectionAdminResponse.java new file mode 100644 index 0000000000..804f940942 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CollectionAdminResponse.java @@ -0,0 +1,15 @@ +package org.apache.ranger.index.solr.client.solrj.response; + +import org.apache.ranger.index.solr.client.solrj.SolrResponse; + +public class CollectionAdminResponse extends SolrResponse { + public final org.apache.solr.client.solrj.response.CollectionAdminResponse inner; + + public CollectionAdminResponse(org.apache.solr.client.solrj.response.CollectionAdminResponse process) { + this.inner = process; + } + + public int getStatus() { + return inner.getStatus(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CoreAdminResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CoreAdminResponse.java new file mode 100644 index 0000000000..f0e168862c --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/CoreAdminResponse.java @@ -0,0 +1,16 @@ +package org.apache.ranger.index.solr.client.solrj.response; + + +import org.apache.ranger.index.solr.common.util.NamedList; + +public class CoreAdminResponse { + private final org.apache.solr.client.solrj.response.CoreAdminResponse inner; + + public CoreAdminResponse(org.apache.solr.client.solrj.response.CoreAdminResponse process) { + this.inner = process; + } + + public NamedList> getCoreStatus() { + return new NamedList<>(inner.getCoreStatus()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/QueryResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/QueryResponse.java new file mode 100644 index 0000000000..a3951e4b38 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/QueryResponse.java @@ -0,0 +1,24 @@ +package org.apache.ranger.index.solr.client.solrj.response; + +import org.apache.ranger.index.solr.common.SolrDocumentList; +import org.apache.ranger.index.solr.common.util.NamedList; + +public class QueryResponse { + private final org.apache.solr.client.solrj.response.QueryResponse inner; + + public QueryResponse(org.apache.solr.client.solrj.response.QueryResponse response) { + this.inner = response; + } + + public int getStatus() { + return inner.getStatus(); + } + + public SolrDocumentList getResults() { + return new SolrDocumentList(inner.getResults()); + } + + public NamedList getResponse() { + return new NamedList<>(inner.getResponse()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/UpdateResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/UpdateResponse.java new file mode 100644 index 0000000000..30dc7f342c --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/response/UpdateResponse.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.client.solrj.response; + +public class UpdateResponse { + private final org.apache.solr.client.solrj.response.UpdateResponse inner; + + public UpdateResponse(org.apache.solr.client.solrj.response.UpdateResponse updateResponse) { + this.inner = updateResponse; + } + + public int getStatus() { + return inner.getStatus(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/util/ClientUtils.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/util/ClientUtils.java new file mode 100644 index 0000000000..27b6d15138 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/client/solrj/util/ClientUtils.java @@ -0,0 +1,8 @@ +package org.apache.ranger.index.solr.client.solrj.util; + +public class ClientUtils { + + public static String escapeQueryChars(String toLowerCase) { + return org.apache.solr.client.solrj.util.ClientUtils.escapeQueryChars(toLowerCase); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocument.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocument.java new file mode 100644 index 0000000000..9bb14fa2a5 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocument.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.common; + +public class SolrDocument { + private final org.apache.solr.common.SolrDocument inner; + + public SolrDocument(org.apache.solr.common.SolrDocument document) { + this.inner = document; + } + + public Object getFieldValue(String id) { + return inner.getFieldValue(id); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocumentList.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocumentList.java new file mode 100644 index 0000000000..41d3b694de --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrDocumentList.java @@ -0,0 +1,25 @@ +package org.apache.ranger.index.solr.common; + +public class SolrDocumentList { + private final org.apache.solr.common.SolrDocumentList inner; + + public SolrDocumentList(org.apache.solr.common.SolrDocumentList documents) { + this.inner = documents; + } + + public int size() { + return inner.size(); + } + + public SolrDocument get(int i) { + return new SolrDocument(inner.get(i)); + } + + public long getNumFound() { + return inner.getNumFound(); + } + + public long getStart() { + return inner.getStart(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrException.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrException.java new file mode 100644 index 0000000000..8f1c35d733 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrException.java @@ -0,0 +1,18 @@ +package org.apache.ranger.index.solr.common; + +public class SolrException extends RuntimeException { + public final org.apache.solr.common.SolrException inner; + + public SolrException(ErrorCode unauthorized, String s) { + inner = new org.apache.solr.common.SolrException(unauthorized.inner, s); + } + + public enum ErrorCode { + UNAUTHORIZED(org.apache.solr.common.SolrException.ErrorCode.UNAUTHORIZED); + public final org.apache.solr.common.SolrException.ErrorCode inner; + + ErrorCode(org.apache.solr.common.SolrException.ErrorCode unauthorized) { + inner = unauthorized; + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputDocument.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputDocument.java new file mode 100644 index 0000000000..7707d7808e --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputDocument.java @@ -0,0 +1,25 @@ +package org.apache.ranger.index.solr.common; + +public class SolrInputDocument { + public final org.apache.solr.common.SolrInputDocument inner; + + public SolrInputDocument(org.apache.solr.common.SolrInputDocument inner) { + this.inner = inner; + } + + public SolrInputDocument() { + this(new org.apache.solr.common.SolrInputDocument()); + } + + public void addField(String access, Object accessType) { + inner.addField(access, accessType); + } + + public void setField(String event_count, Object eventCount) { + inner.setField(event_count, eventCount); + } + + public SolrInputField getField(String id) { + return new SolrInputField(inner.getField(id)); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputField.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputField.java new file mode 100644 index 0000000000..d9d21b45eb --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/SolrInputField.java @@ -0,0 +1,9 @@ +package org.apache.ranger.index.solr.common; + +public class SolrInputField { + private final org.apache.solr.common.SolrInputField inner; + + public SolrInputField(org.apache.solr.common.SolrInputField field) { + this.inner = field; + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/StringUtils.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/StringUtils.java new file mode 100644 index 0000000000..cc146d6cbf --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/StringUtils.java @@ -0,0 +1,8 @@ +package org.apache.ranger.index.solr.common; + +public class StringUtils { + + public static boolean isEmpty(String zoneName) { + return org.apache.solr.common.StringUtils.isEmpty(zoneName); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZkClient.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZkClient.java new file mode 100644 index 0000000000..ddcf48c364 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZkClient.java @@ -0,0 +1,9 @@ +package org.apache.ranger.index.solr.common.cloud; + +public class SolrZkClient extends org.apache.solr.common.cloud.SolrZkClient { + private final org.apache.solr.common.cloud.SolrZkClient inner; + + public SolrZkClient(org.apache.solr.common.cloud.SolrZkClient zkClient) { + this.inner = zkClient; + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZooKeeper.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZooKeeper.java new file mode 100644 index 0000000000..1bfa969890 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/SolrZooKeeper.java @@ -0,0 +1,4 @@ +package org.apache.ranger.index.solr.common.cloud; + +public class SolrZooKeeper { +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkConfigManager.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkConfigManager.java new file mode 100644 index 0000000000..f9edcb1271 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkConfigManager.java @@ -0,0 +1,15 @@ +package org.apache.ranger.index.solr.common.cloud; + +import java.io.IOException; + +public class ZkConfigManager { + public final org.apache.ranger.index.solr.common.cloud.ZkConfigManager inner; + + public ZkConfigManager(SolrZkClient zkClient) { + this.inner = new org.apache.ranger.index.solr.common.cloud.ZkConfigManager(zkClient); + } + + public boolean configExists(String solr_config_name) throws IOException { + return inner.configExists(solr_config_name); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkStateReader.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkStateReader.java new file mode 100644 index 0000000000..977fcd8598 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/cloud/ZkStateReader.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.common.cloud; + +public class ZkStateReader { + public final org.apache.solr.common.cloud.ZkStateReader inner; + + public ZkStateReader(org.apache.solr.common.cloud.ZkStateReader zkStateReader) { + this.inner = zkStateReader; + } + + public org.apache.ranger.index.solr.common.cloud.SolrZkClient getZkClient() { + return new SolrZkClient(inner.getZkClient()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/CoreAdminParams.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/CoreAdminParams.java new file mode 100644 index 0000000000..dc189bea7f --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/CoreAdminParams.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.common.params; + +public class CoreAdminParams { + public enum CoreAdminAction { + STATUS(org.apache.solr.common.params.CoreAdminParams.CoreAdminAction.STATUS); + + public final org.apache.solr.common.params.CoreAdminParams.CoreAdminAction inner; + + CoreAdminAction(org.apache.solr.common.params.CoreAdminParams.CoreAdminAction inner) { + this.inner = inner; + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/ModifiableSolrParams.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/ModifiableSolrParams.java new file mode 100644 index 0000000000..468b6226d3 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/ModifiableSolrParams.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.common.params; + +public class ModifiableSolrParams { + public final org.apache.solr.common.params.ModifiableSolrParams inner; + + public ModifiableSolrParams(SolrParams params) { + inner = new org.apache.solr.common.params.ModifiableSolrParams(params.inner); + } + + public void add(String fq, String filterQuery) { + inner.add(fq, filterQuery); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/SolrParams.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/SolrParams.java new file mode 100644 index 0000000000..ae29141b67 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/params/SolrParams.java @@ -0,0 +1,21 @@ +package org.apache.ranger.index.solr.common.params; + +public class SolrParams { + public final org.apache.solr.common.params.SolrParams inner; + + public SolrParams(org.apache.solr.common.params.SolrParams toSolrParams) { + this.inner = toSolrParams; + } + + public String get(String authFieldProp, String defaultAuthField) { + return inner.get(authFieldProp, defaultAuthField); + } + + public boolean getBool(String enabledProp, boolean b) { + return inner.getBool(enabledProp, b); + } + + public String toQueryString() { + return inner.toQueryString(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/NamedList.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/NamedList.java new file mode 100644 index 0000000000..1c63c975d1 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/NamedList.java @@ -0,0 +1,27 @@ +package org.apache.ranger.index.solr.common.util; + +import org.apache.ranger.index.solr.common.params.SolrParams; + +public class NamedList { + public final org.apache.solr.common.util.NamedList inner; + + public NamedList(org.apache.solr.common.util.NamedList response) { + this.inner = response; + } + + public SolrParams toSolrParams() { + return new SolrParams(inner.toSolrParams()); + } + + public O get(String name) { + return inner.get(name); + } + + public int size() { + return inner.size(); + } + + public String getName(int i) { + return inner.getName(i); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/SimpleOrderedMap.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/SimpleOrderedMap.java new file mode 100644 index 0000000000..35eaac1bde --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/common/util/SimpleOrderedMap.java @@ -0,0 +1,12 @@ +package org.apache.ranger.index.solr.common.util; + +public class SimpleOrderedMap extends NamedList { + + public SimpleOrderedMap(org.apache.solr.common.util.SimpleOrderedMap inner) { + super(inner); + } + + public T get(String name) { + return inner.get(name); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrConfig.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrConfig.java new file mode 100644 index 0000000000..fccda6630f --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrConfig.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.core; + +public class SolrConfig { + public final org.apache.solr.core.SolrConfig inner; + + public SolrConfig(org.apache.solr.core.SolrConfig inner) { + this.inner = inner; + } + + public boolean getBool(String s, boolean b) { + return inner.getBool(s,b); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrCore.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrCore.java new file mode 100644 index 0000000000..47c6558b5e --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/core/SolrCore.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.core; + +public class SolrCore { + public final org.apache.solr.core.SolrCore inner; + + public SolrCore(org.apache.solr.core.SolrCore inner) { + this.inner = inner; + } + + public SolrConfig getSolrConfig() { + return new SolrConfig(inner.getSolrConfig()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/ResponseBuilder.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/ResponseBuilder.java new file mode 100644 index 0000000000..af1b3e802e --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/ResponseBuilder.java @@ -0,0 +1,24 @@ +package org.apache.ranger.index.solr.handler.component; + +import org.apache.ranger.index.solr.common.params.ModifiableSolrParams; +import org.apache.ranger.index.solr.common.params.SolrParams; +import org.apache.ranger.index.solr.request.SolrQueryRequest; + +public class ResponseBuilder { + public final org.apache.solr.handler.component.ResponseBuilder inner; + + public SolrQueryRequest req; + + public ResponseBuilder(org.apache.solr.handler.component.ResponseBuilder inner) { + this.inner = inner; + this.req = new SolrQueryRequest(inner.req); + } + + public SolrParams req_getParams() { + return new SolrParams(req.inner.getParams()); + } + + public void req_setParams(ModifiableSolrParams newParams) { + req.inner.setParams(newParams.inner); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/SearchComponent.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/SearchComponent.java new file mode 100644 index 0000000000..217a4faf8e --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/handler/component/SearchComponent.java @@ -0,0 +1,41 @@ +package org.apache.ranger.index.solr.handler.component; + +import org.apache.ranger.index.solr.common.util.NamedList; +import org.apache.ranger.index.solr.security.AuthorizationContext; +import org.apache.ranger.index.solr.security.AuthorizationResponse; + +import java.io.IOException; +import java.util.Map; + +public abstract class SearchComponent { + public abstract void init(NamedList args); + + /* + * (non-Javadoc) + * + * @see org.apache.ranger.index.solr.security.SolrAuthorizationPlugin#init(java.util.Map) + */ + public abstract void init(Map initInfo); + + /* + * (non-Javadoc) + * + * @see java.io.Closeable#close() + */ + public abstract void close() throws IOException; + + /* + * (non-Javadoc) + * + * @see + * org.apache.ranger.index.solr.security.SolrAuthorizationPlugin#authorize(org.apache + * .solr.security.SolrRequestContext) + */ + public abstract AuthorizationResponse authorize(AuthorizationContext context); + + public abstract void prepare(ResponseBuilder rb) throws IOException; + + public abstract void process(ResponseBuilder rb) throws IOException; + + public abstract String getDescription(); +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/request/LocalSolrQueryRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/request/LocalSolrQueryRequest.java new file mode 100644 index 0000000000..adaa1b1135 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/request/LocalSolrQueryRequest.java @@ -0,0 +1,7 @@ +package org.apache.ranger.index.solr.request; + +public class LocalSolrQueryRequest extends SolrQueryRequest { + public LocalSolrQueryRequest() { + super(new org.apache.solr.request.SolrQueryRequest()); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/request/SolrQueryRequest.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/request/SolrQueryRequest.java new file mode 100644 index 0000000000..491a9b6a02 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/request/SolrQueryRequest.java @@ -0,0 +1,21 @@ +package org.apache.ranger.index.solr.request; + +import org.apache.ranger.index.solr.core.SolrCore; + +import java.util.Map; + +public class SolrQueryRequest { + public final org.apache.solr.request.SolrQueryRequest inner; + + public SolrQueryRequest(org.apache.solr.request.SolrQueryRequest inner) { + this.inner = inner; + } + + public SolrCore getCore() { + return new SolrCore(inner.getCore()); + } + + public Map getContext() { + return inner.getContext(); + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationContext.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationContext.java new file mode 100644 index 0000000000..c94b180834 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationContext.java @@ -0,0 +1,71 @@ +package org.apache.ranger.index.solr.security; + +import org.apache.ranger.index.solr.common.params.ModifiableSolrParams; +import org.apache.ranger.index.solr.common.params.SolrParams; + +import java.security.Principal; +import java.util.Enumeration; +import java.util.List; +import java.util.stream.Collectors; + +public class AuthorizationContext { + public final org.apache.solr.security.AuthorizationContext inner; + + public AuthorizationContext(org.apache.solr.security.AuthorizationContext inner) { + this.inner = inner; + } + + public RequestType getRequestType() { + return RequestType.valueOf(inner.getRequestType().name()); + } + + public Principal getUserPrincipal() { + return inner.getUserPrincipal(); + } + + public String getRemoteAddr() { + return inner.getRemoteAddr(); + } + + public String getResource() { + return inner.getResource(); + } + + public String getHttpHeader(String proxyIPHeader) { + return inner.getHttpHeader(proxyIPHeader); + } + + public List getCollectionRequests() { + return inner.getCollectionRequests().stream().map(x->new CollectionRequest(x)).collect(Collectors.toList()); + } + + public Enumeration getHeaderNames() { + return inner.getHeaderNames(); + } + + public SolrParams getParams() { + return new SolrParams(inner.getParams()); + } + + public class CollectionRequest { + public final org.apache.solr.security.AuthorizationContext.CollectionRequest inner; + public Object collectionName; + + public CollectionRequest(org.apache.solr.security.AuthorizationContext.CollectionRequest inner) { + this.inner = inner; + } + } + + public enum RequestType { + READ(org.apache.solr.security.AuthorizationContext.RequestType.READ), + WRITE(org.apache.solr.security.AuthorizationContext.RequestType.WRITE), + UNKNOWN(org.apache.solr.security.AuthorizationContext.RequestType.UNKNOWN), + ADMIN(org.apache.solr.security.AuthorizationContext.RequestType.ADMIN); + + public final org.apache.solr.security.AuthorizationContext.RequestType inner; + + RequestType(org.apache.solr.security.AuthorizationContext.RequestType read) { + inner = read; + } + } +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationPlugin.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationPlugin.java new file mode 100644 index 0000000000..4d7833c850 --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationPlugin.java @@ -0,0 +1,12 @@ +package org.apache.ranger.index.solr.security; + +import java.io.IOException; +import java.util.Map; + +public interface AuthorizationPlugin { + void init(Map initInfo); + + void close() throws IOException; + + AuthorizationResponse authorize(AuthorizationContext context); +} diff --git a/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationResponse.java b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationResponse.java new file mode 100644 index 0000000000..1a820641bb --- /dev/null +++ b/agents-audit/src/main/java/org/apache/ranger/index/solr/security/AuthorizationResponse.java @@ -0,0 +1,13 @@ +package org.apache.ranger.index.solr.security; + +public class AuthorizationResponse { + public final org.apache.solr.security.AuthorizationResponse inner; + + public AuthorizationResponse(int i) { + inner = new org.apache.solr.security.AuthorizationResponse(i); + } + + public String getMessage() { + return inner.getMessage(); + } +} diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicyResourceSignature.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicyResourceSignature.java index 2bb65891a6..e07a7f8da5 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicyResourceSignature.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicyResourceSignature.java @@ -33,7 +33,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition; -import org.apache.solr.common.StringUtils; +import org.apache.ranger.index.solr.common.StringUtils; public class RangerPolicyResourceSignature { diff --git a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBootstrapper.java b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBootstrapper.java index ce268fd67e..f84ea161b3 100644 --- a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBootstrapper.java +++ b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBootstrapper.java @@ -45,18 +45,18 @@ import org.apache.http.util.EntityUtils; import org.apache.ranger.authorization.utils.StringUtil; import org.apache.ranger.plugin.util.XMLUtils; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.impl.HttpClientUtil; -import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder; -import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.response.CollectionAdminResponse; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.cloud.SolrZooKeeper; -import org.apache.solr.common.cloud.ZkConfigManager; +import org.apache.ranger.index.solr.SolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrServerException; +import org.apache.ranger.index.solr.client.solrj.impl.CloudSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpClientUtil; +import org.apache.ranger.index.solr.client.solrj.impl.Krb5HttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.impl.SolrHttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.ranger.index.solr.client.solrj.response.CollectionAdminResponse; +import org.apache.ranger.index.solr.common.SolrException; +import org.apache.ranger.index.solr.common.cloud.SolrZkClient; +import org.apache.ranger.index.solr.common.cloud.SolrZooKeeper; +import org.apache.ranger.index.solr.common.cloud.ZkConfigManager; import org.apache.zookeeper.CreateMode; import org.noggit.JSONParser; import org.noggit.ObjectBuilder; diff --git a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java index 46d0f66055..c3e075f01b 100644 --- a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java +++ b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java @@ -39,20 +39,20 @@ import org.apache.ranger.plugin.policyengine.RangerAccessResult; import org.apache.ranger.plugin.service.RangerBasePlugin; import org.apache.ranger.plugin.util.RangerPerfTracer; -import org.apache.solr.common.SolrException; -import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.params.SolrParams; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.core.SolrCore; -import org.apache.solr.handler.component.ResponseBuilder; -import org.apache.solr.handler.component.SearchComponent; -import org.apache.solr.request.LocalSolrQueryRequest; -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.security.AuthorizationContext.RequestType; -import org.apache.solr.security.AuthorizationPlugin; -import org.apache.solr.security.AuthorizationResponse; -import org.apache.solr.security.AuthorizationContext; -import org.apache.solr.security.AuthorizationContext.CollectionRequest; +import org.apache.ranger.index.solr.common.SolrException; +import org.apache.ranger.index.solr.common.params.ModifiableSolrParams; +import org.apache.ranger.index.solr.common.params.SolrParams; +import org.apache.ranger.index.solr.common.util.NamedList; +import org.apache.ranger.index.solr.core.SolrCore; +import org.apache.ranger.index.solr.handler.component.ResponseBuilder; +import org.apache.ranger.index.solr.handler.component.SearchComponent; +import org.apache.ranger.index.solr.request.LocalSolrQueryRequest; +import org.apache.ranger.index.solr.request.SolrQueryRequest; +import org.apache.ranger.index.solr.security.AuthorizationContext.RequestType; +import org.apache.ranger.index.solr.security.AuthorizationPlugin; +import org.apache.ranger.index.solr.security.AuthorizationResponse; +import org.apache.ranger.index.solr.security.AuthorizationContext; +import org.apache.ranger.index.solr.security.AuthorizationContext.CollectionRequest; import javax.servlet.http.HttpServletRequest; @@ -132,7 +132,7 @@ public void init(NamedList args) { /* * (non-Javadoc) * - * @see org.apache.solr.security.SolrAuthorizationPlugin#init(java.util.Map) + * @see org.apache.ranger.index.solr.security.SolrAuthorizationPlugin#init(java.util.Map) */ @Override public void init(Map initInfo) { @@ -206,7 +206,7 @@ public void close() throws IOException { * (non-Javadoc) * * @see - * org.apache.solr.security.SolrAuthorizationPlugin#authorize(org.apache + * org.apache.ranger.index.solr.security.SolrAuthorizationPlugin#authorize(org.apache * .solr.security.SolrRequestContext) */ @Override @@ -330,9 +330,9 @@ public void prepare(ResponseBuilder rb) throws IOException { } else { filterQuery = getConjunctiveFilterQueryStr(roles); } - ModifiableSolrParams newParams = new ModifiableSolrParams(rb.req.getParams()); + ModifiableSolrParams newParams = new ModifiableSolrParams(rb.req_getParams()); newParams.add("fq", filterQuery); - rb.req.setParams(newParams); + rb.req_setParams(newParams); if (logger.isDebugEnabled()) { logger.debug("Adding filter query {" + filterQuery + "} for user {" + userName + "} with roles {" + roles + "}"); } diff --git a/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrClient.java b/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrClient.java index d2f9055b23..bc3419af81 100644 --- a/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrClient.java +++ b/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrClient.java @@ -30,20 +30,20 @@ import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; +import org.apache.ranger.index.solr.common.params.CoreAdminParams; import org.apache.ranger.plugin.client.BaseClient; import org.apache.ranger.plugin.service.ResourceLookupContext; import org.apache.ranger.plugin.util.PasswordUtils; import org.apache.ranger.plugin.util.TimedEventUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrResponse; -import org.apache.solr.client.solrj.request.CollectionAdminRequest; -import org.apache.solr.client.solrj.request.CoreAdminRequest; -import org.apache.solr.client.solrj.request.QueryRequest; -import org.apache.solr.client.solrj.response.CoreAdminResponse; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction; -import org.apache.solr.common.util.SimpleOrderedMap; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrQuery; +import org.apache.ranger.index.solr.client.solrj.SolrResponse; +import org.apache.ranger.index.solr.client.solrj.request.CollectionAdminRequest; +import org.apache.ranger.index.solr.client.solrj.request.CoreAdminRequest; +import org.apache.ranger.index.solr.client.solrj.request.QueryRequest; +import org.apache.ranger.index.solr.client.solrj.response.CoreAdminResponse; +import org.apache.ranger.index.solr.client.solrj.response.QueryResponse; +import org.apache.ranger.index.solr.common.util.SimpleOrderedMap; import org.apache.commons.collections.CollectionUtils; public class ServiceSolrClient { @@ -127,7 +127,7 @@ public List getCollectionList(List ignoreCollectionList) public List getCoresList(List ignoreCollectionList) throws Exception { CoreAdminRequest request = new CoreAdminRequest(); - request.setAction(CoreAdminAction.STATUS); + request.setAction(CoreAdminParams.CoreAdminAction.STATUS); String decPassword = getDecryptedPassword(); if (username != null && decPassword != null) { request.setBasicAuthCredentials(username, decPassword); diff --git a/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrConnectionMgr.java b/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrConnectionMgr.java index f56373b0bf..2fad7d3795 100644 --- a/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrConnectionMgr.java +++ b/plugin-solr/src/main/java/org/apache/ranger/services/solr/client/ServiceSolrConnectionMgr.java @@ -21,8 +21,8 @@ import java.util.Map; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpSolrClient; public class ServiceSolrConnectionMgr { diff --git a/pom.xml b/pom.xml index 21400288c0..749d11f547 100644 --- a/pom.xml +++ b/pom.xml @@ -956,6 +956,11 @@ + + org.glassfish + javax.el + 3.0.1-b11 + junit junit diff --git a/ranger-solr-plugin-shim/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java b/ranger-solr-plugin-shim/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java index cfede467f7..1a7af29ce7 100644 --- a/ranger-solr-plugin-shim/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java +++ b/ranger-solr-plugin-shim/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java @@ -26,12 +26,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.ranger.plugin.classloader.RangerPluginClassLoader; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.handler.component.ResponseBuilder; -import org.apache.solr.handler.component.SearchComponent; -import org.apache.solr.security.AuthorizationContext; -import org.apache.solr.security.AuthorizationPlugin; -import org.apache.solr.security.AuthorizationResponse; +import org.apache.ranger.index.solr.common.util.NamedList; +import org.apache.ranger.index.solr.handler.component.ResponseBuilder; +import org.apache.ranger.index.solr.handler.component.SearchComponent; +import org.apache.ranger.index.solr.security.AuthorizationContext; +import org.apache.ranger.index.solr.security.AuthorizationPlugin; +import org.apache.ranger.index.solr.security.AuthorizationResponse; public class RangerSolrAuthorizer extends SearchComponent implements AuthorizationPlugin { private static final Log LOG = LogFactory diff --git a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangePasswordUtil.java b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangePasswordUtil.java index 65b9ccbeb5..f42700f626 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangePasswordUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangePasswordUtil.java @@ -26,7 +26,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.ranger.entity.XXPortalUser; import org.apache.ranger.patch.BaseLoader; import org.apache.ranger.util.CLIUtil; -import org.apache.solr.common.StringUtils; +import org.apache.ranger.index.solr.common.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangeUserNameUtil.java b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangeUserNameUtil.java index ee8011dfe7..3cb11a0004 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangeUserNameUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/ChangeUserNameUtil.java @@ -24,7 +24,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.ranger.entity.XXPortalUser; import org.apache.ranger.patch.BaseLoader; import org.apache.ranger.util.CLIUtil; -import org.apache.solr.common.StringUtils; +import org.apache.ranger.index.solr.common.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/DbToSolrMigrationUtil.java b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/DbToSolrMigrationUtil.java index c20bcfab80..868b2ab3dd 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/DbToSolrMigrationUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/DbToSolrMigrationUtil.java @@ -44,16 +44,16 @@ import org.apache.ranger.common.DateUtil; import org.apache.ranger.common.PropertiesUtil; import org.apache.ranger.util.CLIUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.BinaryRequestWriter; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.impl.HttpClientUtil; -import org.apache.solr.client.solrj.impl.HttpSolrClient; -import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder; -import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder; -import org.apache.solr.client.solrj.response.UpdateResponse; -import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.SolrInputField; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.BinaryRequestWriter; +import org.apache.ranger.index.solr.client.solrj.impl.CloudSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpClientUtil; +import org.apache.ranger.index.solr.client.solrj.impl.HttpSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.Krb5HttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.impl.SolrHttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.response.UpdateResponse; +import org.apache.ranger.index.solr.common.SolrInputDocument; +import org.apache.ranger.index.solr.common.SolrInputField; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; diff --git a/security-admin/src/main/java/org/apache/ranger/solr/SolrAccessAuditsService.java b/security-admin/src/main/java/org/apache/ranger/solr/SolrAccessAuditsService.java index b422e7c00d..352abb43c9 100644 --- a/security-admin/src/main/java/org/apache/ranger/solr/SolrAccessAuditsService.java +++ b/security-admin/src/main/java/org/apache/ranger/solr/SolrAccessAuditsService.java @@ -45,10 +45,10 @@ import org.apache.ranger.view.VXAccessAudit; import org.apache.ranger.view.VXAccessAuditList; import org.apache.ranger.view.VXLong; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.common.SolrDocument; -import org.apache.solr.common.SolrDocumentList; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.response.QueryResponse; +import org.apache.ranger.index.solr.common.SolrDocument; +import org.apache.ranger.index.solr.common.SolrDocumentList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; diff --git a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java index f4eab6433d..66b7bc2112 100644 --- a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java +++ b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java @@ -25,13 +25,13 @@ import org.apache.ranger.audit.utils.InMemoryJAASConfiguration; import org.apache.ranger.biz.RangerBizUtil; import org.apache.ranger.common.PropertiesUtil; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.impl.BinaryRequestWriter; -import org.apache.solr.client.solrj.impl.CloudSolrClient; -import org.apache.solr.client.solrj.impl.HttpClientUtil; -import org.apache.solr.client.solrj.impl.HttpSolrClient; -import org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder; -import org.apache.solr.client.solrj.impl.SolrHttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.BinaryRequestWriter; +import org.apache.ranger.index.solr.client.solrj.impl.CloudSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.HttpClientUtil; +import org.apache.ranger.index.solr.client.solrj.impl.HttpSolrClient; +import org.apache.ranger.index.solr.client.solrj.impl.Krb5HttpClientBuilder; +import org.apache.ranger.index.solr.client.solrj.impl.SolrHttpClientBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/security-admin/src/main/java/org/apache/ranger/solr/SolrUtil.java b/security-admin/src/main/java/org/apache/ranger/solr/SolrUtil.java index 3ba8a3e201..fe31e012e6 100644 --- a/security-admin/src/main/java/org/apache/ranger/solr/SolrUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/solr/SolrUtil.java @@ -34,13 +34,13 @@ import org.apache.ranger.common.SortField; import org.apache.ranger.common.StringUtil; import org.apache.ranger.common.SearchField.SEARCH_TYPE; -import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrQuery.ORDER; -import org.apache.solr.client.solrj.SolrRequest.METHOD; -import org.apache.solr.client.solrj.request.QueryRequest; -import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.client.solrj.util.ClientUtils; +import org.apache.ranger.index.solr.client.solrj.SolrClient; +import org.apache.ranger.index.solr.client.solrj.SolrQuery; +import org.apache.ranger.index.solr.client.solrj.SolrQuery.ORDER; +import org.apache.ranger.index.solr.client.solrj.SolrRequest.METHOD; +import org.apache.ranger.index.solr.client.solrj.request.QueryRequest; +import org.apache.ranger.index.solr.client.solrj.response.QueryResponse; +import org.apache.ranger.index.solr.client.solrj.util.ClientUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;