diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-04-15 11:58:21 +0200 |
---|---|---|
committer | Morten Tokle <mortent@verizonmedia.com> | 2021-04-15 12:01:30 +0200 |
commit | 96c2e442cbb798f0c85990d3f0c760c60ee9a5b3 (patch) | |
tree | 3e3559545df8686955d083b65eb239baa8c09505 /container-search | |
parent | 81fad70d16a8494ce0464af6ee4ba9c0e12f6a6e (diff) |
Custom acl mapping
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/abi-spec.json | 3 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json index 75b8814ecb0..9e5963e5152 100644 --- a/container-search/abi-spec.json +++ b/container-search/abi-spec.json @@ -4235,7 +4235,8 @@ "public com.yahoo.search.Result searchAndFill(com.yahoo.search.Query, com.yahoo.component.chain.Chain)", "public com.yahoo.processing.rendering.Renderer getRendererCopy(com.yahoo.component.ComponentSpecification)", "public com.yahoo.search.searchchain.SearchChainRegistry getSearchChainRegistry()", - "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)" + "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)", + "public com.yahoo.container.jdisc.RequestHandlerSpec requestHandlerSpec()" ], "fields": [ "public static final java.lang.String defaultSearchChainName" 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..e95e085ed5c 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,26 @@ 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: + return AclMapping.Action.update; + case DELETE: + return AclMapping.Action.delete; + default: + return AclMapping.Action.create; + } + } } |