From 1ab8a27fda731a948c946a4959aafb50425af035 Mon Sep 17 00:00:00 2001 From: Max Dor Date: Sun, 12 Aug 2018 02:16:14 +0200 Subject: [PATCH] Add on/off switch for bulk lookups --- .../kamax/mxisd/config/BulkLookupConfig.java | 49 +++++++++++++++++++ .../RecursivePriorityLookupStrategy.java | 10 +++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/kamax/mxisd/config/BulkLookupConfig.java diff --git a/src/main/java/io/kamax/mxisd/config/BulkLookupConfig.java b/src/main/java/io/kamax/mxisd/config/BulkLookupConfig.java new file mode 100644 index 0000000..7da5682 --- /dev/null +++ b/src/main/java/io/kamax/mxisd/config/BulkLookupConfig.java @@ -0,0 +1,49 @@ +/* + * mxisd - Matrix Identity Server Daemon + * Copyright (C) 2018 Kamax Sarl + * + * https://www.kamax.io/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package io.kamax.mxisd.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.util.Objects; + +@Configuration +@ConfigurationProperties(prefix = "lookup.bulk") +public class BulkLookupConfig { + + private Boolean enabled; + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public void build() { + if (Objects.isNull(enabled)) { + enabled = true; + } + + } + +} diff --git a/src/main/java/io/kamax/mxisd/lookup/strategy/RecursivePriorityLookupStrategy.java b/src/main/java/io/kamax/mxisd/lookup/strategy/RecursivePriorityLookupStrategy.java index 08553b9..81abe7f 100644 --- a/src/main/java/io/kamax/mxisd/lookup/strategy/RecursivePriorityLookupStrategy.java +++ b/src/main/java/io/kamax/mxisd/lookup/strategy/RecursivePriorityLookupStrategy.java @@ -21,6 +21,7 @@ package io.kamax.mxisd.lookup.strategy; import edazdarevic.commons.net.CIDRUtils; +import io.kamax.mxisd.config.BulkLookupConfig; import io.kamax.mxisd.config.RecursiveLookupConfig; import io.kamax.mxisd.exception.ConfigurationException; import io.kamax.mxisd.lookup.*; @@ -34,6 +35,7 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -44,14 +46,16 @@ public class RecursivePriorityLookupStrategy implements LookupStrategy { private Logger log = LoggerFactory.getLogger(RecursivePriorityLookupStrategy.class); private RecursiveLookupConfig cfg; + private BulkLookupConfig bulkCfg; private List providers; private IBridgeFetcher bridge; private List allowedCidr = new ArrayList<>(); @Autowired - public RecursivePriorityLookupStrategy(RecursiveLookupConfig cfg, List providers, IBridgeFetcher bridge) { + public RecursivePriorityLookupStrategy(RecursiveLookupConfig cfg, BulkLookupConfig bulkCfg, List providers, IBridgeFetcher bridge) { this.cfg = cfg; + this.bulkCfg = bulkCfg; this.bridge = bridge; this.providers = providers.stream().filter(p -> { log.info("3PID Provider {} is enabled: {}", p.getClass().getSimpleName(), p.isEnabled()); @@ -193,6 +197,10 @@ public class RecursivePriorityLookupStrategy implements LookupStrategy { @Override public List find(BulkLookupRequest request) { + if (!bulkCfg.getEnabled()) { + return Collections.emptyList(); + } + List mapToDo = new ArrayList<>(request.getMappings()); List mapFoundAll = new ArrayList<>();