diff --git a/jami-nameserver/pom.xml b/jami-nameserver/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..bbc3931e2ecbf51696584f8677532c6888f53e37 --- /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 0000000000000000000000000000000000000000..2522fa04bd36b5e58ad09dfce06e58779d5432a7 --- /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 2505bba866fa3ee41514db9f83686a2a14eb101b..43fc409c8cb596714023388a9f3d6982d86e4c1c 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 d69c5fe39dc27fbb2b66a67372840485c5cd200f..ae5fce60369dc5d7cee2ad44b4a02cc05cbc3dcd 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 815886f130687230b3c47e7115aa2990113c3bb8..436e3813b4721f94dc57e7cd3ae71440b37eaf49 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 1f4fbb56fe5be235a3c9079eb7d00c23ae2c06a8..32158e285c05b24ad96ad61d6e0b42fef1bf1edc 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 c4773a5c17319b0806869af961ad4cbb14f6b343..8b7c767e79c0abb8390ddd41180899ccb302055b 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 5064c102dbb2e6ed71d69c4dfc77f2512f4c76a5..d2eecb42181c9d21d3c9330db2e6e7875a331605 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 bc029127c7c65c39a08e6c7db977f40ad895174a..6dcc90ac1c688a0b0f8086fd08bdaaeab10a2095 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>