diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-04-16 14:23:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-16 14:23:33 +0200 |
commit | b5ef9172e7ba9a4dc4429918e1ae2fc26444ce33 (patch) | |
tree | 16d88702fe9fde02d5005cbd1f0ce8ecce5d18e8 /container-search/src/main/java/com | |
parent | 95162715532714931a379f35f29fba6836e57daa (diff) | |
parent | 852ae37871cc7db3447dbfc8ddea5157b6a81d4d (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.java | 27 |
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()); + } + } } |