From 4ef0f42fc840d89891c843f9840e5f2ab2675036 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@savoirfairelinux.com> Date: Sun, 30 Aug 2020 12:34:35 +0300 Subject: [PATCH] fixed issue with missing annotation, cleaned up imports, added missing methods, added config to Device response Change-Id: I0a9d4fe5d5c08b3bfc83531ca020aa2f2170b765 --- .../net/jami/datastore/dao/DeviceDao.java | 1 - .../java/net/jami/datastore/dao/JwtDao.java | 4 -- .../net/jami/datastore/dao/SystemDao.java | 1 - .../jami/datastore/dao/UserProfileDao.java | 2 - .../net/jami/datastore/main/DataStore.java | 11 ++++- .../java/net/jami/datastore/dao/DAOTest.java | 3 -- .../common/annotations/PackageScanner.java | 1 - .../ScopedServletAnnotationScanner.java | 5 ++- .../responses/DeviceRegistrationResponse.java | 40 ++++++++++++++++++- .../jami/jams/common/objects/user/Group.java | 3 -- .../jami/jams/common/objects/user/Policy.java | 4 -- .../jams/common/objects/user/PolicyData.java | 26 ++++++++++++ .../jami/jams/common/objects/user/User.java | 1 + .../common/objects/user/UserGroupMapping.java | 6 --- .../jams/common/objects/user/UserProfile.java | 1 - .../common/objects/contacts/ContactTest.java | 2 - .../java/net/jami/jams/server/Server.java | 1 - .../jami/jams/server/core/TomcatLauncher.java | 1 - .../core/workflows/AddUserToGroupFlow.java | 7 ---- .../core/workflows/RegisterDeviceFlow.java | 5 ++- .../directory/DirectoryEntryServlet.java | 32 +++++++-------- .../api/admin/group/GroupServlet.java | 9 ++--- .../api/admin/group/PolicyServlet.java | 3 +- .../api/admin/update/UpdateServlet.java | 2 - .../auth/directory/DirectoryEntryServlet.java | 19 +++++++++ .../directory/SearchDirectoryServlet.java | 7 ++-- .../servlets/api/auth/user/UserServlet.java | 1 - .../api/install/InstallLastStepServlet.java | 1 - .../server/servlets/filters/CorsFilter.java | 13 ------ .../servlets/general/ServerStatusServlet.java | 1 - .../jams/server/update/UpdateInterface.java | 1 - .../connector/service/UserProfileService.java | 4 -- 32 files changed, 125 insertions(+), 93 deletions(-) create mode 100644 jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java diff --git a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java index 88fb2fce..8b2ff85b 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java @@ -30,7 +30,6 @@ import net.jami.jams.common.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.devices.Device; import java.sql.PreparedStatement; -import java.sql.SQLException; @Slf4j public class DeviceDao extends AbstractDao<Device> { 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 f989d057..33b0b0b7 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/JwtDao.java @@ -25,12 +25,8 @@ package net.jami.datastore.dao; import com.nimbusds.jwt.SignedJWT; import lombok.extern.slf4j.Slf4j; -import net.jami.datastore.main.DataStore; import net.jami.jams.common.dao.StatementList; -import net.jami.jams.common.dao.connectivity.SQLConnection; -import java.sql.PreparedStatement; -import java.sql.SQLException; import java.util.List; @Slf4j diff --git a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java index 99becf31..65f7d7b8 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java @@ -30,7 +30,6 @@ import net.jami.jams.common.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.system.SystemAccount; import java.sql.PreparedStatement; -import java.sql.SQLException; @Slf4j public class SystemDao extends AbstractDao<SystemAccount> { diff --git a/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java b/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java index 9e278045..56d06de6 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/UserProfileDao.java @@ -25,13 +25,11 @@ package net.jami.datastore.dao; 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.dao.connectivity.SQLConnection; import net.jami.jams.common.objects.user.UserProfile; import java.sql.PreparedStatement; -import java.sql.SQLException; @Slf4j public class UserProfileDao extends AbstractDao<UserProfile> { diff --git a/datastore/src/main/java/net/jami/datastore/main/DataStore.java b/datastore/src/main/java/net/jami/datastore/main/DataStore.java index fb1c51c8..f0a5cb48 100644 --- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java +++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java @@ -24,7 +24,15 @@ package net.jami.datastore.main; import lombok.Getter; import lombok.Setter; -import net.jami.datastore.dao.*; +import net.jami.datastore.dao.ContactDao; +import net.jami.datastore.dao.DeviceDao; +import net.jami.datastore.dao.GroupDao; +import net.jami.datastore.dao.JwtDao; +import net.jami.datastore.dao.PolicyDao; +import net.jami.datastore.dao.SystemDao; +import net.jami.datastore.dao.UserDao; +import net.jami.datastore.dao.UserGroupMappingsDao; +import net.jami.datastore.dao.UserProfileDao; import net.jami.jams.common.authentication.AuthenticationSource; import net.jami.jams.common.authentication.AuthenticationSourceInfo; import net.jami.jams.common.authentication.AuthenticationSourceType; @@ -35,7 +43,6 @@ import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import org.flywaydb.core.Flyway; -import java.util.Arrays; import java.util.List; @Getter diff --git a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java index 3902fa90..de5eeff8 100644 --- a/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java +++ b/datastore/src/test/java/net/jami/datastore/dao/DAOTest.java @@ -22,7 +22,6 @@ */ package net.jami.datastore.dao; -import com.jsoniter.JsonIterator; import net.jami.datastore.main.DataStore; import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.dao.StatementElement; @@ -31,13 +30,11 @@ import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.User; import net.jami.jams.common.utils.X509Utils; -import org.flywaydb.core.Flyway; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.io.InputStream; -import java.util.ArrayList; class DAOTest { diff --git a/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java b/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java index 6e680edc..5204358e 100644 --- a/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java +++ b/jams-common/src/main/java/net/jami/jams/common/annotations/PackageScanner.java @@ -25,7 +25,6 @@ package net.jami.jams.common.annotations; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; -import java.util.HashSet; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; diff --git a/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java b/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java index 22af00b8..cd2eef11 100644 --- a/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java +++ b/jams-common/src/main/java/net/jami/jams/common/annotations/ScopedServletAnnotationScanner.java @@ -22,12 +22,15 @@ */ package net.jami.jams.common.annotations; -import javassist.*; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtMethod; import javassist.bytecode.AnnotationsAttribute; import javassist.bytecode.AttributeInfo; import javassist.bytecode.MethodInfo; import javassist.bytecode.annotation.Annotation; import lombok.extern.slf4j.Slf4j; + import java.util.ArrayList; @Slf4j 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 aa0f9bb4..29533cc0 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 @@ -22,8 +22,10 @@ */ package net.jami.jams.common.objects.responses; +import com.jsoniter.JsonIterator; import lombok.Getter; import lombok.Setter; +import net.jami.jams.common.objects.user.PolicyData; import net.jami.jams.common.utils.X509Utils; import java.security.cert.X509Certificate; @@ -38,7 +40,23 @@ public class DeviceRegistrationResponse { private String deviceReceipt; private String receiptSignature; private String userPhoto; - private String policy; + //Backward compatibility fix so all the fields are included here. + private Boolean allowPeersFromHistory; + private Boolean allowPeersFromTrusted; + private Boolean proxyEnabled; + private String dhtProxyListUrl; + private String proxyServer; + private Boolean accountPublish; + private Boolean autoAnswer; + private String turnServer; + private String turnServerUserName; + private String turnServerPassword; + private Boolean videoEnabled; + private Boolean turnEnabled; + private Boolean allowPeersFromContact; + private Boolean accountDiscovery; + private Boolean peerDiscovery; + private Boolean upnpEnabled; public void setCertificateChain(X509Certificate[] certificateChain){ StringBuilder stringBuilder = new StringBuilder(); @@ -50,5 +68,25 @@ public class DeviceRegistrationResponse { this.certificateChain = stringBuilder.toString(); } + public void setPolicyData(String policyData){ + PolicyData policy = JsonIterator.deserialize(policyData,PolicyData.class); + this.allowPeersFromHistory = policy.getAllowPeersFromHistory(); + this.allowPeersFromTrusted = policy.getAllowPeersFromTrusted(); + this.proxyEnabled = policy.getProxyEnabled(); + this.dhtProxyListUrl = policy.getDhtProxyListUrl(); + this.proxyServer = policy.getProxyServer(); + this.accountPublish = policy.getAccountPublish(); + this.autoAnswer = policy.getAutoAnswer(); + this.turnServer = policy.getTurnServer(); + this.turnServerUserName = policy.getTurnServerUserName(); + this.turnServerPassword = policy.getTurnServerPassword(); + this.videoEnabled = policy.getVideoEnabled(); + this.turnEnabled = policy.getTurnEnabled(); + this.allowPeersFromContact = policy.getAllowPeersFromContact(); + this.accountDiscovery = policy.getAccountDiscovery(); + this.peerDiscovery = policy.getPeerDiscovery(); + this.upnpEnabled = policy.getUpnpEnabled(); + } + } diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java index e01e18c4..0bd5a5d8 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/Group.java @@ -4,10 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import net.jami.jams.common.authentication.AuthenticationSourceType; -import net.jami.jams.common.objects.roots.X509Entity; import net.jami.jams.common.serialization.database.DatabaseObject; -import net.jami.jams.common.utils.X509Utils; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java index 6f9c9226..b25f79e3 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/Policy.java @@ -4,11 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import net.jami.jams.common.objects.roots.X509Entity; import net.jami.jams.common.serialization.database.DatabaseObject; -import net.minidev.json.JSONArray; -import net.minidev.json.JSONObject; -import net.minidev.json.parser.JSONParser; import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java new file mode 100644 index 00000000..7198e403 --- /dev/null +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/PolicyData.java @@ -0,0 +1,26 @@ +package net.jami.jams.common.objects.user; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PolicyData { + + private Boolean allowPeersFromHistory; + private Boolean allowPeersFromTrusted; + private Boolean proxyEnabled; + private String dhtProxyListUrl; + private String proxyServer; + private Boolean accountPublish; + private Boolean autoAnswer; + private String turnServer; + private String turnServerUserName; + private String turnServerPassword; + private Boolean videoEnabled; + private Boolean turnEnabled; + private Boolean allowPeersFromContact; + private Boolean accountDiscovery; + private Boolean peerDiscovery; + private Boolean upnpEnabled; +} diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java index 0fe93e3d..b7404ce2 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/User.java @@ -31,6 +31,7 @@ import net.jami.jams.common.objects.roots.BlockchainEntity; import net.jami.jams.common.objects.roots.X509Entity; import net.jami.jams.common.serialization.database.DatabaseObject; import net.jami.jams.common.utils.X509Utils; + import java.sql.PreparedStatement; import java.sql.ResultSet; diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java index c09db112..15162888 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserGroupMapping.java @@ -1,19 +1,13 @@ package net.jami.jams.common.objects.user; -import com.jsoniter.JsonIterator; -import com.jsoniter.output.JsonStream; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import net.jami.jams.common.serialization.database.DatabaseObject; -import net.minidev.json.JSONArray; -import net.minidev.json.JSONObject; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.Arrays; -import java.util.List; @AllArgsConstructor @NoArgsConstructor diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java index be3f1321..3ed4f1dd 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/user/UserProfile.java @@ -22,7 +22,6 @@ */ package net.jami.jams.common.objects.user; -import com.jsoniter.JsonIterator; import com.jsoniter.annotation.JsonIgnore; import com.jsoniter.output.JsonStream; import ezvcard.Ezvcard; diff --git a/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java b/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java index 88ac4ae8..a2a84931 100644 --- a/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java +++ b/jams-common/src/test/java/net/jami/jams/common/objects/contacts/ContactTest.java @@ -12,8 +12,6 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; - class ContactTest { @BeforeAll 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 450f1a39..32c29703 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 @@ -32,7 +32,6 @@ 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; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java index 0f3e9783..b91bbb1e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/TomcatLauncher.java @@ -28,7 +28,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.catalina.WebResourceRoot; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.StandardContext; -import org.apache.catalina.filters.CorsFilter; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.webresources.DirResourceSet; import org.apache.catalina.webresources.JarResourceSet; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java index f3dae339..cd154ff9 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/AddUserToGroupFlow.java @@ -1,20 +1,13 @@ package net.jami.jams.server.core.workflows; - import lombok.extern.slf4j.Slf4j; -import net.jami.jams.common.authentication.AuthenticationSource; -import net.jami.jams.common.authmodule.AuthModuleKey; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; -import net.jami.jams.common.objects.user.Group; -import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserGroupMapping; import net.jami.jams.common.objects.user.UserProfile; -import net.minidev.json.JSONArray; import java.util.ArrayList; import java.util.List; -import java.util.Map; import static net.jami.jams.server.Server.dataStore; import static net.jami.jams.server.Server.userAuthenticationModule; diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java index 0b1ce55a..b1f4a5e2 100644 --- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java +++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/RegisterDeviceFlow.java @@ -22,6 +22,7 @@ */ package net.jami.jams.server.core.workflows; +import com.jsoniter.JsonIterator; import lombok.extern.slf4j.Slf4j; import net.jami.jams.common.authmodule.AuthModuleKey; import net.jami.jams.common.dao.StatementElement; @@ -29,8 +30,8 @@ import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.devices.Device; import net.jami.jams.common.objects.requests.DeviceRegistrationRequest; import net.jami.jams.common.objects.responses.DeviceRegistrationResponse; -import net.jami.jams.common.objects.user.Group; import net.jami.jams.common.objects.user.Policy; +import net.jami.jams.common.objects.user.PolicyData; import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import net.jami.jams.dht.DeviceReceiptGenerator; @@ -74,7 +75,7 @@ public class RegisterDeviceFlow { StatementList statementList1 = new StatementList(); statementList1.addStatement(st); Policy policy = dataStore.getPolicyDao().getObjects(statementList1).get(0); - response.setPolicy(policy.getPolicyData()); + response.setPolicyData(policy.getPolicyData()); }); //We need to set the device receipt.... String[] devReceipt = DeviceReceiptGenerator.generateReceipt(user.getPrivateKey(), user.getCertificate().getPublicKey(), diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java index 2e77ff26..929d42a8 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/directory/DirectoryEntryServlet.java @@ -45,8 +45,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; -import static net.jami.jams.server.Server.userAuthenticationModule; import static net.jami.jams.server.Server.dataStore; +import static net.jami.jams.server.Server.userAuthenticationModule; @Slf4j @WebServlet("/api/admin/directory/entry") @@ -84,25 +84,21 @@ public class DirectoryEntryServlet extends HttpServlet { } @Override - protected void doPut(HttpServletRequest req, HttpServletResponse resp) { + @ScopedServletMethod(securityGroups = {AccessLevel.ADMIN}) + protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws IOException { //Update a user's profile. - try{ - //Check if he is AD/LDAP - then return a 500, because we can't update those profile datas. - UserProfile userProfile = JsonIterator.deserialize(req.getInputStream().readAllBytes(), UserProfile.class); - StatementList select = new StatementList(); - StatementElement st = new StatementElement("username","=",userProfile.getUsername(),""); - select.addStatement(st); - if(dataStore.getUserDao().getObjects(select).get(0).getUserType() != AuthenticationSourceType.LOCAL){ - resp.sendError(500,"The user is not a local user, therefore we cannot change his data!"); - return; - } - if(dataStore.updateUserProfile(userProfile)) - resp.setStatus(200); - else resp.sendError(500,"could not update the users's profile information"); - } - catch(Exception e){ - System.out.println(e); + //Check if he is AD/LDAP - then return a 500, because we can't update those profile datas. + UserProfile userProfile = JsonIterator.deserialize(req.getInputStream().readAllBytes(), UserProfile.class); + StatementList select = new StatementList(); + StatementElement st = new StatementElement("username","=",userProfile.getUsername(),""); + select.addStatement(st); + if(dataStore.getUserDao().getObjects(select).get(0).getUserType() != AuthenticationSourceType.LOCAL){ + resp.sendError(500,"The user is not a local user, therefore we cannot change his data!"); + return; } + if(dataStore.updateUserProfile(userProfile)) + resp.setStatus(200); + else resp.sendError(500,"could not update the users's profile information"); } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java index efb4509a..d171bebc 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/GroupServlet.java @@ -11,16 +11,15 @@ import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; -import net.jami.jams.common.objects.user.*; -import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler; +import net.jami.jams.common.objects.user.AccessLevel; +import net.jami.jams.common.objects.user.Group; +import net.jami.jams.common.objects.user.UserGroupMapping; +import net.jami.jams.common.objects.user.UserProfile; import net.jami.jams.server.core.workflows.AddUserToGroupFlow; -import net.jami.jams.server.core.workflows.RegisterDeviceFlow; -import net.jami.jams.common.annotations.JsonContent; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.UUID; import java.util.stream.Collectors; import static net.jami.jams.server.Server.dataStore; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java index a97ecb99..916050ce 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/PolicyServlet.java @@ -10,7 +10,8 @@ import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; -import net.jami.jams.common.objects.user.*; +import net.jami.jams.common.objects.user.AccessLevel; +import net.jami.jams.common.objects.user.Policy; import org.json.JSONObject; import java.io.IOException; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java index e6ffcf3e..12419d10 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java @@ -28,12 +28,10 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import net.jami.jams.ca.JamsCA; import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.updater.FullSystemStatusResponse; -import net.jami.jams.server.Server; import java.io.IOException; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java index aa73eaf5..735bb96a 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java @@ -30,12 +30,16 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.authmodule.AuthModuleKey; +import net.jami.jams.common.dao.StatementElement; +import net.jami.jams.common.dao.StatementList; +import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static net.jami.jams.server.Server.dataStore; import static net.jami.jams.server.Server.userAuthenticationModule; //This is an endpoint to manipulate directory entry-data, this make sense only for local setups. @@ -191,6 +195,21 @@ public class DirectoryEntryServlet extends HttpServlet { */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + if(req.getParameter("jamiId") != null){ + StatementList statementList = new StatementList(); + StatementElement statementElement = new StatementElement("jamiId","=",req.getParameter("jamiId"),null); + statementList.addStatement(statementElement); + User user = dataStore.getUserDao().getObjects(statementList).get(0); + List<UserProfile> userProfiles = new ArrayList<>(); + userAuthenticationModule.getAuthSources().forEach((k, v) -> { + userProfiles.addAll(v.searchUserProfiles(user.getUsername(), "LOGON_NAME")); + }); + if(req.getParameter("format") != null && req.getParameter("format").equals("vcard")){ + resp.getOutputStream().write(userProfiles.get(0).getAsVCard().getBytes()); + } + else resp.getOutputStream().write(JsonStream.serialize(userProfiles.get(0)).getBytes()); + return; + } if (req.getParameter("directory") != null && req.getParameter("directoryType") != null) { List<UserProfile> profiles = userAuthenticationModule.getAuthSources() .get(new AuthModuleKey(req.getParameter("directory"), AuthenticationSourceType.fromString(req.getParameter("directoryType")))) 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 89309eb7..b63f692d 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 @@ -28,17 +28,18 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.User; -import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.objects.user.UserGroupMapping; import net.jami.jams.common.objects.user.UserProfile; import java.io.IOException; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import static net.jami.jams.server.Server.dataStore; import static net.jami.jams.server.Server.nameServer; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java index 39baf1f0..c732284e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/user/UserServlet.java @@ -34,7 +34,6 @@ import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.user.AccessLevel; import net.jami.jams.common.objects.user.User; -import net.jami.jams.common.utils.PasswordGenerator; import java.io.IOException; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java index 86a07e90..7a3ae218 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/install/InstallLastStepServlet.java @@ -27,7 +27,6 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import net.jami.jams.ca.JamsCA; import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.common.annotations.ScopedServletMethod; import net.jami.jams.common.objects.user.AccessLevel; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java index a4f0fe0d..9325a9a0 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java @@ -1,21 +1,8 @@ package net.jami.jams.server.servlets.filters; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebFilter; import jakarta.servlet.annotation.WebInitParam; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.EnumSet; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - @WebFilter(urlPatterns = {"*"}, initParams={@WebInitParam(name = "cors.allowed.origins",value = "*")}) public class CorsFilter extends org.apache.catalina.filters.CorsFilter { } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java index de608648..8bcc524f 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/general/ServerStatusServlet.java @@ -27,7 +27,6 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import net.jami.jams.ca.JamsCA; import net.jami.jams.common.annotations.JsonContent; import net.jami.jams.server.Server; diff --git a/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java b/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java index 1a10e5d4..e54e92ed 100644 --- a/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java +++ b/jams-server/src/main/java/net/jami/jams/server/update/UpdateInterface.java @@ -6,7 +6,6 @@ import org.zeromq.SocketType; import org.zeromq.ZMQ; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.logging.Logger; @Getter @Setter diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java index 854944b0..553d7096 100644 --- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java +++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java @@ -32,11 +32,7 @@ import org.ldaptive.SearchOperation; import org.ldaptive.SearchRequest; import org.ldaptive.SearchResponse; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; -- GitLab