From a0ad38385f809d189fd3b68af7f1658803c8b465 Mon Sep 17 00:00:00 2001
From: Felix Sidokhine <felix.sidokhine@savoirfairelinux.com>
Date: Thu, 18 Jun 2020 02:31:20 +0300
Subject: [PATCH] fixed connectivity and lookups

Change-Id: Iaf7150237d8fbafd2afd8ff4b8595f04776df43b
---
 .../ad/connector/service/UserProfileService.java     |  2 --
 .../jams/authmodule/UserAuthenticationModule.java    |  1 -
 .../src/main/java/net/jami/datastore/dao/JwtDao.java |  3 ---
 .../net/jami/jams/nameserver/LocalNameServer.java    |  6 ++++--
 .../responses/DeviceRegistrationResponse.java        |  2 +-
 .../common/serialization/decoders/CSRDecoder.java    | 12 +++++++++++-
 .../src/main/java/net/jami/jams/server/Server.java   |  3 ---
 .../api/auth/directory/SearchDirectoryServlet.java   |  2 --
 8 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
index 101d79a7..7d002e79 100644
--- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
+++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
@@ -39,8 +39,6 @@ import lombok.extern.slf4j.Slf4j;
 import net.jami.jams.ad.connector.ADConnector;
 import net.jami.jams.common.objects.user.UserProfile;
 
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
diff --git a/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java b/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
index 899feccc..07849099 100644
--- a/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
+++ b/authentication-module/src/main/java/net/jami/jams/authmodule/UserAuthenticationModule.java
@@ -23,7 +23,6 @@
 package net.jami.jams.authmodule;
 
 import com.nimbusds.jwt.SignedJWT;
-import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.authentication.AuthenticationSource;
diff --git a/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java b/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
index 78cd9661..9f40420f 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java
@@ -7,10 +7,7 @@ import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 
 import java.sql.PreparedStatement;
-import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
 import java.util.List;
 
 @Slf4j
diff --git a/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java b/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java
index c0cce956..f9bae1a0 100644
--- a/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java
+++ b/jami-nameserver/src/main/java/net/jami/jams/nameserver/LocalNameServer.java
@@ -40,6 +40,8 @@ import java.util.List;
 @Slf4j
 public class LocalNameServer implements NameServer {
 
+    private static final String NAME_SERVER_PATH = "/api/nameserver";
+
     private final DataStore dataStore;
     private final String nameserverURI;
     private final AuthenticationModule authenticationModule;
@@ -91,7 +93,7 @@ public class LocalNameServer implements NameServer {
     @Override
     public String getNameFromAddress(String address) {
         StatementList statementList = new StatementList();
-        StatementElement statementElement = new StatementElement("ethAddress","=",address,"");
+        StatementElement statementElement = new StatementElement("jamiId","=",address,"");
         statementList.addStatement(statementElement);
         List<User> results = dataStore.getUserDao().getObjects(statementList);
         if(results.size() == 0) return null;
@@ -100,6 +102,6 @@ public class LocalNameServer implements NameServer {
 
     @Override
     public String getURI() {
-        return this.nameserverURI;
+        return this.nameserverURI + NAME_SERVER_PATH;
     }
 }
diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
index 44d2d8f7..0e271218 100644
--- a/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
+++ b/jams-common/src/main/java/net/jami/jams/common/objects/responses/DeviceRegistrationResponse.java
@@ -41,7 +41,7 @@ public class DeviceRegistrationResponse {
 
     public void setCertificateChain(X509Certificate[] certificateChain){
         StringBuilder stringBuilder = new StringBuilder();
-        for(int i=0;i<certificateChain.length;i++){
+        for(int i=certificateChain.length-1;i > 0;i--){
             stringBuilder.append(X509Utils.getPEMStringFromCertificate(certificateChain[i])).append("\n");
         }
         //remove the last \n because it's useless.
diff --git a/jams-common/src/main/java/net/jami/jams/common/serialization/decoders/CSRDecoder.java b/jams-common/src/main/java/net/jami/jams/common/serialization/decoders/CSRDecoder.java
index 59d664a0..dd99f792 100644
--- a/jams-common/src/main/java/net/jami/jams/common/serialization/decoders/CSRDecoder.java
+++ b/jams-common/src/main/java/net/jami/jams/common/serialization/decoders/CSRDecoder.java
@@ -30,8 +30,18 @@ import java.io.IOException;
 
 public class CSRDecoder implements Decoder {
 
+    private static final String CSR_HEAD = "-----BEGIN NEW CERTIFICATE REQUEST-----\n";
+    private static final String CSR_TAIL = "\n-----END NEW CERTIFICATE REQUEST-----";
+
     @Override
     public Object decode(JsonIterator jsonIterator) throws IOException {
-        return X509Utils.getCSRFromString(jsonIterator.readString());
+        //This is legacy code, we need to sanitize the string
+        String input = jsonIterator.readString();
+        input = input.replace(CSR_HEAD,"");
+        input = input.replace(CSR_TAIL,"");
+        input = input.replace("\n","");
+        input = CSR_HEAD + input + CSR_TAIL;
+        //Once all legacy clients stop existing, this can safely be removed leaving only the jsonIter.readString()
+        return X509Utils.getCSRFromString(input);
     }
 }
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 b4c0ada2..582bb165 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
@@ -26,7 +26,6 @@ import com.jsoniter.JsonIterator;
 import javassist.ClassPool;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
-import net.jami.jams.common.annotations.ScopedServletAnnotationScanner;
 import net.jami.jams.common.authentication.AuthenticationSourceType;
 import net.jami.jams.common.authentication.local.LocalAuthSettings;
 import net.jami.jams.common.authmodule.AuthenticationModule;
@@ -42,12 +41,10 @@ import net.jami.jams.server.core.TomcatLauncher;
 import net.jami.jams.server.licensing.LicenseService;
 import net.jami.jams.server.startup.AuthModuleLoader;
 import net.jami.jams.server.startup.CryptoEngineLoader;
-import net.jami.jams.server.startup.PackageScanner;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
-import java.util.HashSet;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 @Slf4j
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
index 01da9c32..e7a5e858 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java
@@ -31,8 +31,6 @@ import jakarta.servlet.http.HttpServletResponse;
 import net.jami.jams.common.objects.user.UserProfile;
 
 import java.io.IOException;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-- 
GitLab