diff --git a/jami-nameserver/pom.xml b/jami-nameserver/pom.xml index bbc3931e2ecbf51696584f8677532c6888f53e37..1e7327f7fb083db500109dfcb0c058b6b5d67b81 100644 --- a/jami-nameserver/pom.xml +++ b/jami-nameserver/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>jams3-parent</artifactId> <groupId>net.jami</groupId> - <version>2.0</version> + <version>${revision}</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -14,13 +14,13 @@ <dependency> <groupId>net.jami</groupId> <artifactId>jams-common</artifactId> - <version>2.0</version> + <version>${revision}</version> <scope>compile</scope> </dependency> <dependency> <groupId>net.jami</groupId> <artifactId>datastore</artifactId> - <version>2.0</version> + <version>${revision}</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/jami-nameserver/src/main/java/module-info.java b/jami-nameserver/src/main/java/module-info.java index 2522fa04bd36b5e58ad09dfce06e58779d5432a7..5c278edb57d106193f03d305b760d3f699a417c6 100644 --- a/jami-nameserver/src/main/java/module-info.java +++ b/jami-nameserver/src/main/java/module-info.java @@ -1,3 +1,8 @@ module jami.nameserver { + requires jams.common; + requires datastore; + requires lombok; exports net.jami.jams.nameserver; + requires org.slf4j; + requires jsoniter; } \ No newline at end of file diff --git a/jams-server/src/main/java/module-info.java b/jams-server/src/main/java/module-info.java index 32158e285c05b24ad96ad61d6e0b42fef1bf1edc..27fec84671cea9ebd16130d4d9ffe3eacedc54ca 100644 --- a/jams-server/src/main/java/module-info.java +++ b/jams-server/src/main/java/module-info.java @@ -16,4 +16,5 @@ module jams.server { exports net.jami.jams.server.servlets.api.auth.login to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.api.auth.device to org.apache.tomcat.embed.core; exports net.jami.jams.server.servlets.api.install to org.apache.tomcat.embed.core; + exports net.jami.jams.server.servlets.api.jaminameserver to org.apache.tomcat.embed.core; } \ No newline at end of file diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java index 4d2aac960b895d17ae4b7d88b3cc06e10b681cbc..fd112ef37d6f2fb04ef33c8b89188a868f812134 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java @@ -7,6 +7,8 @@ import net.jami.jams.common.objects.roots.X509Fields; import net.jami.jams.common.objects.system.SystemAccount; import net.jami.jams.common.objects.system.SystemAccountType; import net.jami.jams.common.server.ServerSettings; +import net.jami.jams.nameserver.LocalNameServer; +import net.jami.jams.nameserver.PublicNameServer; import net.jami.jams.server.Server; import net.jami.jams.server.servlets.api.install.CachedObjects; import net.jami.jams.server.startup.AuthModuleLoader; @@ -26,13 +28,25 @@ public class InstallationFinalizer { log.info("Building configuration from submitted variables..."); ServerSettings serverSettings = new ServerSettings(); serverSettings.setCaConfiguration(JsonStream.serialize(CachedObjects.certificateAuthorityConfig)); - if (CachedObjects.activeDirectorySettings != null) + if (CachedObjects.activeDirectorySettings != null) { serverSettings.setActiveDirectoryConfiguration(JsonStream.serialize(CachedObjects.activeDirectorySettings)); - if (CachedObjects.ldapSettings != null) + nameServer = new LocalNameServer(dataStore); + log.info("Server configured to use Active Directory as the authentication backend!"); + } + if (CachedObjects.ldapSettings != null) { serverSettings.setLdapConfiguration(JsonStream.serialize(CachedObjects.ldapSettings)); - if (CachedObjects.localAuthSettings != null) + nameServer = new LocalNameServer(dataStore); + log.info("Server configured to use LDAP as the authentication backend!"); + } + if (CachedObjects.localAuthSettings != null) { serverSettings.setLocalDirectoryConfiguration(JsonStream.serialize(CachedObjects.localAuthSettings)); - + if(CachedObjects.localAuthSettings.getPublicNames()){ + nameServer = new PublicNameServer(CachedObjects.localAuthSettings.getPublicNameServer()); + log.warn("Server configured to use {} as the nameserver for Jami clients !",CachedObjects.localAuthSettings.getPublicNameServer()); + } + else nameServer = new LocalNameServer(dataStore); + log.info("Server is configured to use local authentication engine"); + } //Now flush the server settings. OutputStream os = new FileOutputStream(new File("config.json")); os.write(JsonStream.serialize(serverSettings).getBytes()); @@ -66,7 +80,7 @@ public class InstallationFinalizer { if(serverSettings.getLdapConfiguration() != null) userAuthenticationModule.attachAuthSource(AuthenticationSourceType.LDAP,serverSettings.getLdapConfiguration()); Server.isInstalled.set(true); - log.info("The installation has completed succesfully, you can now use JAMS!"); + log.info("The installation has completed successfully, you can now use JAMS!"); } catch (Exception e) { log.error("Could not save settings to disk with error: " + e.toString()); return false; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java index c9b8cdb9c1014512d6713eefabecb6a6d265cf4e..f4ae4cb0a726338d635914ba1272172c2c1a2cb1 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java @@ -17,8 +17,7 @@ public class NameServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - String[] path = req.getServletPath().split("/"); - NameLookupResponse nameLookupResponse = nameServer.getAddressFromName(path[path.length - 1]); + NameLookupResponse nameLookupResponse = nameServer.getAddressFromName(req.getPathInfo().replace("/","")); if(nameLookupResponse == null) resp.sendError(404); else resp.getOutputStream().write(JsonStream.serialize(nameLookupResponse).getBytes()); } 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 d2eecb42181c9d21d3c9330db2e6e7875a331605..bb9e0578444ae42134e32b49a651f1062db6cbbd 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 @@ -3,6 +3,7 @@ package net.jami.jams.server.core.jaminamserver; import net.jami.jams.common.jami.NameLookupResponse; import net.jami.jams.common.jami.NameRegistrationRequest; import net.jami.jams.common.jami.NameServer; +import net.jami.jams.nameserver.PublicNameServer; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test;