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 88fb2fce3577f1ba9d87860e8aba4d409a95036b..8b2ff85b67578408fdf86558f9f6fb048c170c30 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 f989d0572c4fc7682ca4eca3f4f02cd16c1e56f0..33b0b0b72802a973cbf3995fe2201a45a59995db 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 99becf31c77e0deeb0bc6cbe85694dd8d7c85fb2..65f7d7b88d74828bff93ce2b361625a7aa3e09ba 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 9e278045f8786c9c7a70b5aa769bd0879949bdf0..56d06de63995072ce7e05a415638e76f42ec586a 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 fb1c51c8248df0bbc301ffebc54e8df339262626..f0a5cb48fba2ea99adebc5b1204140f629ac6999 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 3902fa90c9bac040745a92ad6e29b74ef2dc577a..de5eeff816669fc4bbd8fa2eed660ad77d667b31 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 6e680edc2c73d0ac5a707ae753b61820e34f73bd..5204358e45dd3cad6e9ec6831b78964a7c476812 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 22af00b8ee1e8a2674a856979647566910fda9d2..cd2eef1191a1f9559fca38cd1a1f434bdb1eccf1 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 aa0f9bb4e23d011b815ff1a6f2a2590da97fe7d1..29533cc072655bb1bc0805590291f490a108d815 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 e01e18c45414036c73c723b2bf995a4e10769c39..0bd5a5d883a3c17ae8c5b950e6f3b8ec2c5e5b71 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 6f9c9226c72ad2817442cba2af31c3daec0607c5..b25f79e32f186a3cf02353072df23fa30e89c586 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 0000000000000000000000000000000000000000..7198e403108677333acca1ccb833548bb9b17748 --- /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 0fe93e3d8daad24b3aa149371a8fc3622d42701a..b7404ce215450c30fbe4fc54e94fa6a54b6a71ff 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 c09db1124a3ffb7abbe779dace48fa4eac05e91a..1516288842dd39a748d0596c3ad4fcb12e4443bf 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 be3f13210dd5a418dce13603993eac9adcf81c2f..3ed4f1ddc26792ebdb445cb124a2e07418b4ef85 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 88ac4ae89149ea2c252395d5a5b63d8599d54eca..a2a84931027a3d095ccf3b06aefd2e24eff55b58 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 450f1a3934c5168e6177bceb15bb8a35ce4560ba..32c29703b12bfa8a85e4c0572be8549060e8de61 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 0f3e978336b61e1eb29155ada0ba0de61c4928ab..b91bbb1e879ddce760f58944d11f62ab36992442 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 f3dae3392a08cd0de60243a85546fa221cadf291..cd154ff95543f7b036fa46106146381b59e7c9cc 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 0b1ce55a6d813e897d50d4faca1e4f6bba0e1bc3..b1f4a5e21935a7faf99536bad4f96c5d756f1052 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 2e77ff26a067e6e58de85fa576ec9580f55219bd..929d42a8d965b4140999ad4e6de0eef543e47a3e 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 efb4509a4f28d6bd1cc07144da85dbed03c69af5..d171bebcd5d83eb9c860b9267ab6a747f6b29edd 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 a97ecb993586c6a9dc83d9ff3aad00171845322f..916050cea8a1ba54a9a1e36d064f90c1b10fb271 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 e6ffcf3e8e2c5d9e0b7520bb7174fb6fd455d6f0..12419d105d4f9a9cda39258dac48df249f797816 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 aa73eaf5118249b8351bd391bca0ca93f3099bcd..735bb96aacbdb382a7d8def9747d6d97194f0594 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 89309eb75526d5e603c995118d0555e3f79a2ff1..b63f692dcdd2a2078192af3e77ece50d1bdf6bbe 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 39baf1f0d9b04653298a4c892334db2dc3b0b7a5..c732284ec898ae7d302f053a2a2ba81157aff0b0 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 86a07e90bc93e643417c514362af52bb6ea74921..7a3ae21828967dff0fad92de298d7a2163dfd72f 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 a4f0fe0d36dad91d96d2958ce7687a927c0b2724..9325a9a088e765675436b86966edeb6a91b9ee57 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 de6086486b71c06e2949febf64031732ff9b7833..8bcc524f65d1234e52d252271a93afd17fd3b056 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 1a10e5d45fb003bd1603960b841850745f7b6cc2..e54e92ed37afbce04f6c59aa883926a3b8aa044c 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 854944b01e1cad67c23a75dec332734aac6d69c6..553d7096db0bba69f564b2cb09e036eb068f1954 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;