From feb37112b26a44b436c67e980fe62aec7fcb1c5d Mon Sep 17 00:00:00 2001 From: Max Dor Date: Wed, 15 Aug 2018 11:25:41 +0200 Subject: [PATCH] Add on/off switch for 3PID in directory lookups --- docs/features/directory.md | 7 +++++++ .../kamax/mxisd/config/DirectoryConfig.java | 19 +++++++++++++++++++ .../mxisd/directory/DirectoryManager.java | 14 +++++++++----- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/docs/features/directory.md b/docs/features/directory.md index 9e3955e..22b3d24 100644 --- a/docs/features/directory.md +++ b/docs/features/directory.md @@ -140,3 +140,10 @@ To disable Homeserver results, set the following in mxisd configuration file: ```yaml directory.exclude.homeserver: true ``` + +### 3PID exclusion in search +You can configure if the 3PID should also be included when doing a directory search. +By default, a search is performed on the 3PIDs. If you would like to not include them: +```yaml +directory.exclude.threepid: true +``` diff --git a/src/main/java/io/kamax/mxisd/config/DirectoryConfig.java b/src/main/java/io/kamax/mxisd/config/DirectoryConfig.java index ae22000..1738426 100644 --- a/src/main/java/io/kamax/mxisd/config/DirectoryConfig.java +++ b/src/main/java/io/kamax/mxisd/config/DirectoryConfig.java @@ -25,6 +25,8 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import javax.annotation.PostConstruct; + @Configuration @ConfigurationProperties("directory") public class DirectoryConfig { @@ -34,6 +36,7 @@ public class DirectoryConfig { public static class Exclude { private boolean homeserver; + private boolean threepid; public boolean getHomeserver() { return homeserver; @@ -44,6 +47,14 @@ public class DirectoryConfig { return this; } + public boolean getThreepid() { + return threepid; + } + + public void setThreepid(boolean threepid) { + this.threepid = threepid; + } + } private Exclude exclude = new Exclude(); @@ -56,4 +67,12 @@ public class DirectoryConfig { this.exclude = exclude; } + @PostConstruct + public void buid() { + log.info("--- Directory config ---"); + log.info("Exclude:"); + log.info("\tHomeserver: {}", getExclude().getHomeserver()); + log.info("\t3PID: {}", getExclude().getThreepid()); + } + } diff --git a/src/main/java/io/kamax/mxisd/directory/DirectoryManager.java b/src/main/java/io/kamax/mxisd/directory/DirectoryManager.java index 47dd02b..c06cdb4 100644 --- a/src/main/java/io/kamax/mxisd/directory/DirectoryManager.java +++ b/src/main/java/io/kamax/mxisd/directory/DirectoryManager.java @@ -129,11 +129,15 @@ public class DirectoryManager { result.setLimited(true); } - resultProvider = provider.searchBy3pid(query); - log.info("Threepid: found {} match(es) for '{}'", resultProvider.getResults().size(), query); - result.getResults().addAll(resultProvider.getResults()); - if (resultProvider.isLimited()) { - result.setLimited(true); + if (cfg.getExclude().getThreepid()) { + log.info("Skipping 3PID data, disabled in config"); + } else { + resultProvider = provider.searchBy3pid(query); + log.info("Threepid: found {} match(es) for '{}'", resultProvider.getResults().size(), query); + result.getResults().addAll(resultProvider.getResults()); + if (resultProvider.isLimited()) { + result.setLimited(true); + } } }