From a0704bdc1c87dc6c661950c173e5d9442199ec02 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Wed, 13 May 2020 11:20:20 +0300 Subject: [PATCH] Added nameserver logic --- jami-nameserver/pom.xml | 29 +++++++++++++++++++ .../src/main/java/module-info.java | 3 ++ .../jams/nameserver}/LocalNameServer.java | 11 ++++--- .../jams/nameserver}/PublicNameServer.java | 2 +- jams-server/pom.xml | 6 ++++ jams-server/src/main/java/module-info.java | 1 + .../java/net/jami/jams/server/Server.java | 10 ++++++- .../jaminamserver/PublicNameServerTest.java | 2 -- pom.xml | 1 + 9 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 jami-nameserver/pom.xml create mode 100644 jami-nameserver/src/main/java/module-info.java rename {jams-server/src/main/java/net/jami/jams/server/core/jaminamserver => jami-nameserver/src/main/java/net/jami/jams/nameserver}/LocalNameServer.java (89%) rename {jams-server/src/main/java/net/jami/jams/server/core/jaminamserver => jami-nameserver/src/main/java/net/jami/jams/nameserver}/PublicNameServer.java (98%) diff --git a/jami-nameserver/pom.xml b/jami-nameserver/pom.xml new file mode 100644 index 00000000..bbc3931e --- /dev/null +++ b/jami-nameserver/pom.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>jams3-parent</artifactId> + <groupId>net.jami</groupId> + <version>2.0</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>jami-nameserver</artifactId> + <dependencies> + <dependency> + <groupId>net.jami</groupId> + <artifactId>jams-common</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>net.jami</groupId> + <artifactId>datastore</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> + </dependencies> + + +</project> \ No newline at end of file diff --git a/jami-nameserver/src/main/java/module-info.java b/jami-nameserver/src/main/java/module-info.java new file mode 100644 index 00000000..2522fa04 --- /dev/null +++ b/jami-nameserver/src/main/java/module-info.java @@ -0,0 +1,3 @@ +module jami.nameserver { + exports net.jami.jams.nameserver; +} \ No newline at end of file diff --git a/jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/LocalNameServer.java b/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java similarity index 89% rename from jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/LocalNameServer.java rename to jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java index 2505bba8..43fc409c 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/LocalNameServer.java +++ b/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java @@ -1,6 +1,7 @@ -package net.jami.jams.server.core.jaminamserver; +package net.jami.jams.nameserver; import lombok.extern.slf4j.Slf4j; +import net.jami.datastore.main.DataStore; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.jami.NameLookupResponse; @@ -10,14 +11,16 @@ import net.jami.jams.common.objects.user.User; import java.util.List; -import static net.jami.jams.server.Server.dataStore; - @Slf4j public class LocalNameServer implements NameServer { - //This always returns 200, for obvious reasons. + private final DataStore dataStore; + public LocalNameServer(DataStore dataStore) { + this.dataStore = dataStore; + } + //This always returns 200, for obvious reasons. @Override public Integer registerName(String username, NameRegistrationRequest nameRegistrationRequest) { return 200; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/PublicNameServer.java b/jami-nameserver/src/main/java/net/jami/jams/nameserver/PublicNameServer.java similarity index 98% rename from jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/PublicNameServer.java rename to jami-nameserver/src/main/java/net/jami/jams/nameserver/PublicNameServer.java index d69c5fe3..ae5fce60 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/jaminamserver/PublicNameServer.java +++ b/jami-nameserver/src/main/java/net/jami/jams/nameserver/PublicNameServer.java @@ -1,4 +1,4 @@ -package net.jami.jams.server.core.jaminamserver; +package net.jami.jams.nameserver; import com.jsoniter.JsonIterator; import com.jsoniter.output.JsonStream; diff --git a/jams-server/pom.xml b/jams-server/pom.xml index 815886f1..436e3813 100644 --- a/jams-server/pom.xml +++ b/jams-server/pom.xml @@ -44,6 +44,12 @@ <version>${javax.servlet.version}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>net.jami</groupId> + <artifactId>jami-nameserver</artifactId> + <version>2.0</version> + <scope>compile</scope> + </dependency> </dependencies> <build> diff --git a/jams-server/src/main/java/module-info.java b/jams-server/src/main/java/module-info.java index 1f4fbb56..32158e28 100644 --- a/jams-server/src/main/java/module-info.java +++ b/jams-server/src/main/java/module-info.java @@ -10,6 +10,7 @@ module jams.server { requires javassist; requires datastore; requires org.apache.xbean.classloader; + requires jami.nameserver; exports net.jami.jams.server.servlets.general to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.filters to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.api.auth.login to org.apache.tomcat.embed.core; diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java index c4773a5c..8b7c767e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/Server.java +++ b/jams-server/src/main/java/net/jami/jams/server/Server.java @@ -4,12 +4,15 @@ import com.jsoniter.JsonIterator; import lombok.extern.slf4j.Slf4j; import net.jami.datastore.main.DataStore; import net.jami.jams.common.authentication.AuthenticationSourceType; +import net.jami.jams.common.authentication.local.LocalAuthSettings; import net.jami.jams.common.authmodule.AuthenticationModule; import net.jami.jams.common.cryptoengineapi.CertificateAuthority; import net.jami.jams.common.jami.NameServer; import net.jami.jams.common.serialization.JsoniterRegistry; import net.jami.jams.common.server.ServerSettings; import net.jami.jams.common.utils.LibraryLoader; +import net.jami.jams.nameserver.LocalNameServer; +import net.jami.jams.nameserver.PublicNameServer; import net.jami.jams.server.core.TomcatLauncher; import net.jami.jams.server.startup.AuthModuleLoader; import net.jami.jams.server.startup.CryptoEngineLoader; @@ -63,7 +66,12 @@ public class Server { userAuthenticationModule.attachAuthSource(AuthenticationSourceType.AD, serverSettings.getActiveDirectoryConfiguration()); } - //init the nameserver here. + if(serverSettings.getLocalDirectoryConfiguration() != null){ + LocalAuthSettings settings = JsonIterator.deserialize(serverSettings.getActiveDirectoryConfiguration(), LocalAuthSettings.class); + if(settings.getPublicNames()) nameServer = new PublicNameServer(settings.getPublicNameServer()); + else nameServer = new LocalNameServer(dataStore); + } + else nameServer = new LocalNameServer(dataStore); } catch (Exception e){ log.error("Could not load configuration file or initialize some components - this is critical"); diff --git a/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java b/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java index 5064c102..d2eecb42 100644 --- a/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java +++ b/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java @@ -9,8 +9,6 @@ import org.junit.jupiter.api.Test; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; - class PublicNameServerTest { private static NameServer nameServer; diff --git a/pom.xml b/pom.xml index bc029127..6dcc90ac 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ <module>datastore</module> <module>jami-dht</module> <module>authentication-module</module> + <module>jami-nameserver</module> </modules> <properties> -- GitLab