summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-04-16 14:23:33 +0200
committerGitHub <noreply@github.com>2021-04-16 14:23:33 +0200
commitb5ef9172e7ba9a4dc4429918e1ae2fc26444ce33 (patch)
tree16d88702fe9fde02d5005cbd1f0ce8ecce5d18e8 /container-search/src/main/java/com
parent95162715532714931a379f35f29fba6836e57daa (diff)
parent852ae37871cc7db3447dbfc8ddea5157b6a81d4d (diff)
Merge pull request #17440 from vespa-engine/mortent/custom-acl-mapping
Custom acl mapping
Diffstat (limited to 'container-search/src/main/java/com')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index 2b27f60ef73..e7c5511f259 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -14,11 +14,14 @@ import com.yahoo.container.handler.threadpool.ContainerThreadPool;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.LoggingRequestHandler;
+import com.yahoo.container.jdisc.RequestHandlerSpec;
import com.yahoo.container.jdisc.VespaHeaders;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.io.IOUtils;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Request;
+import com.yahoo.container.jdisc.AclMapping;
+import com.yahoo.container.jdisc.RequestView;
import com.yahoo.language.Linguistics;
import com.yahoo.net.HostName;
import com.yahoo.net.UriTools;
@@ -103,6 +106,8 @@ public class SearchHandler extends LoggingRequestHandler {
private final AtomicLong numRequestsLeftToTrace;
+ private final static RequestHandlerSpec REQUEST_HANDLER_SPEC = RequestHandlerSpec.builder().withAclMapping(SearchHandler::mapRequestToAction).build();
+
private final class MeanConnections implements Callback {
@Override
@@ -631,6 +636,28 @@ public class SearchHandler extends LoggingRequestHandler {
});
}
+ @Override
+ public RequestHandlerSpec requestHandlerSpec() {
+ return REQUEST_HANDLER_SPEC;
+ }
+
+ private static AclMapping.Action mapRequestToAction(RequestView requestMeta) {
+ switch (requestMeta.method()){
+ case GET:
+ case POST:
+ case HEAD:
+ case OPTIONS:
+ return AclMapping.Action.READ;
+ case PUT:
+ case DELETE:
+ case CONNECT:
+ case TRACE:
+ case PATCH:
+ return AclMapping.Action.WRITE;
+ default:
+ throw new IllegalArgumentException("Illegal method " + requestMeta.method());
+ }
+ }
}