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 4aaef1cfe3f1ef5e5552849d2d68b771aaf90dc9..f2080882668fe0b60014fe1eef6e5cd3d72f3cdb 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 @@ -49,8 +49,6 @@ import java.util.stream.Collectors; @Slf4j public class UserProfileService { - private static final HashMap<String, String> fieldMap = ADConnector.settings.getFieldMappings(); - public List<UserProfile> getUserProfile(String queryString, String field,boolean exactMatch) { Endpoint endpoint = ADConnector.getConnection(); try { @@ -92,6 +90,7 @@ public class UserProfileService { } public static QueryRequest buildRequest(Endpoint endpoint) { + HashMap<String, String> fieldMap = ADConnector.settings.getFieldMappings(); QueryRequest queryRequest = new QueryRequest(); queryRequest.setDirectoryType(DirectoryType.MS_ACTIVE_DIRECTORY); queryRequest.setEndpoints(new ArrayList<>() {{ @@ -108,6 +107,8 @@ public class UserProfileService { public static UserProfile profileFromResponse(List<Field> fields) { //Use reflection to remap. + HashMap<String, String> fieldMap = ADConnector.settings.getFieldMappings(); + try { UserProfile userProfile = new UserProfile(); for (Field field : fields) { diff --git a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java index b5af7748e41a18e62574c293494a9739dcb62f80..9ca1769c68f5b69fee9a8d0bf43fa1d5525e966e 100644 --- a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java +++ b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java @@ -60,7 +60,7 @@ public abstract class AbstractDao<T> { return result; } catch (Exception e){ - log.error("An error has occurred while trying to fetch a device: " + e.toString()); + log.error("An error has occurred while trying to fetch an object: " + e.toString()); return null; } finally { 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 f0a5cb48fba2ea99adebc5b1204140f629ac6999..4e1bdccb371a93572ae01a8bc728aa8ce45afcde 100644 --- a/datastore/src/main/java/net/jami/datastore/main/DataStore.java +++ b/datastore/src/main/java/net/jami/datastore/main/DataStore.java @@ -43,6 +43,7 @@ import net.jami.jams.common.objects.user.User; import net.jami.jams.common.objects.user.UserProfile; import org.flywaydb.core.Flyway; +import java.util.ArrayList; import java.util.List; @Getter @@ -106,6 +107,9 @@ public class DataStore implements AuthenticationSource { } else userList = userProfileDao.getObjects(null); + if (userList == null) + userList = new ArrayList<>(); + return userList; } diff --git a/jams-common/src/main/java/net/jami/jams/common/objects/responses/SubscriptionStatusResponse.java b/jams-common/src/main/java/net/jami/jams/common/objects/responses/SubscriptionStatusResponse.java index 30e348945b58638acef32556c634883a1740e5ec..6274841f041d6df5fef2b75f7c4add1d796b312d 100644 --- a/jams-common/src/main/java/net/jami/jams/common/objects/responses/SubscriptionStatusResponse.java +++ b/jams-common/src/main/java/net/jami/jams/common/objects/responses/SubscriptionStatusResponse.java @@ -24,19 +24,12 @@ package net.jami.jams.common.objects.responses; import lombok.Getter; import lombok.Setter; -import net.jami.jams.common.updater.FileDescription; import net.jami.jams.common.updater.subscription.LicenseInformation; -import java.util.HashMap; - -import static net.jami.jams.common.utils.VersioningUtils.checkVersion; - @Getter @Setter public class SubscriptionStatusResponse { private LicenseInformation licenseInformation; private Boolean activated; - private HashMap<String, FileDescription> versions = checkVersion(null); - } diff --git a/jams-common/src/main/java/net/jami/jams/common/utils/VersioningUtils.java b/jams-common/src/main/java/net/jami/jams/common/utils/VersioningUtils.java index 133f95cb9ed722fa82b6b620e892951c436eff5f..ee6ab8ad1bea7164452a0e77e41ec3a71a7b20ff 100644 --- a/jams-common/src/main/java/net/jami/jams/common/utils/VersioningUtils.java +++ b/jams-common/src/main/java/net/jami/jams/common/utils/VersioningUtils.java @@ -34,45 +34,36 @@ import java.security.MessageDigest; import java.util.ArrayList; import java.util.HashMap; import java.util.jar.JarFile; +import java.util.stream.Stream; @Slf4j public class VersioningUtils { - private static final String IMPLEMENTATION_VERSION_FIELD = "Implementation-Version"; - private static final String MAIN_CLASS_FIELD = "Main-Class"; - private static MessageDigest messageDigest; - - static { - try { - messageDigest = MessageDigest.getInstance("MD5"); - } - catch (Exception e){ - messageDigest = null; - } - } - public static HashMap<String, FileDescription> checkVersion(String baseLocation) { try { + MessageDigest messageDigest = MessageDigest.getInstance("MD5"); HashMap<String,FileDescription> res = new HashMap<>(); ArrayList<Path> files = new ArrayList<>(); if(baseLocation == null) baseLocation = System.getProperty("user.dir"); - Files.walk(Paths.get(baseLocation)).filter(Files::isRegularFile).forEach(files::add); - files.forEach( e ->{ - if(e.toString().endsWith(".jar")){ + Stream<Path> stream = Files.walk(Paths.get(baseLocation)); + stream.filter(Files::isRegularFile).forEach(files::add); + stream.close(); + files.forEach( e -> { + String fileName = e.toString(); + if (fileName.endsWith(".jar")) { try { JarFile file = new JarFile(e.toFile()); - String version = file.getManifest().getMainAttributes().getValue(IMPLEMENTATION_VERSION_FIELD); - String className = file.getManifest().getMainAttributes().getValue(MAIN_CLASS_FIELD); + String version = file.getManifest().getMainAttributes().getValue("Implementation-Version"); + String className = file.getManifest().getMainAttributes().getValue("Main-Class"); String md5 = Hex.toHexString(messageDigest.digest(Files.readAllBytes(e.toAbsolutePath()))); String[] arr = e.toString().split(File.separator); - res.put(arr[arr.length - 1],new FileDescription(arr[arr.length - 1],version,md5,className)); - log.info("Found version {} of {}",version,e.toString()); - } - catch (Exception e1){ - log.error("Could detect version for file with error {}",e1.getMessage()); + res.put(arr[arr.length - 1], new FileDescription(arr[arr.length - 1], version, md5, className)); + log.info("Found version {} of {}", version, fileName); + } catch (Exception e1) { + log.error("Could detect version for file with error {}", e1.getMessage()); } } - } ); + }); return res; } catch (Exception e){ diff --git a/jams-launcher/src/main/resources/oem/config.json b/jams-launcher/src/main/resources/oem/config.json index 38f19fa03ae297b2da6c142c89afbe85a41f5aae..6be3477e23e1cdb9c8edef464a305941be9cc325 100644 --- a/jams-launcher/src/main/resources/oem/config.json +++ b/jams-launcher/src/main/resources/oem/config.json @@ -1,4 +1,4 @@ { "UPDATE_URL": "https://updates.jami.net", - "UPDATE_INTERVAL": 20000 + "UPDATE_INTERVAL": 120000 } diff --git a/jams-react-client/src/auth.js b/jams-react-client/src/auth.js index baa784b75532b19032954db64692e412172fcc82..217e576bb8527089069761a0c12c4d885b6a7860 100644 --- a/jams-react-client/src/auth.js +++ b/jams-react-client/src/auth.js @@ -158,7 +158,6 @@ class Auth { checkForUpdates(cb) { if (this.installed && this.authenticated) { axios(configApiCall(api_path_get_subscription_status, 'GET', null, null)).then((response) => { - this.localVersion = response.data['versions']['jams-server.jar']['version']; this.activated = response.data['activated']; cb() }) diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java index eabe92fe596b0d2c8932ce36197631b7c49b7e60..bed20b4a1c90452de9ea1f6d19c0579aae0db913 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java @@ -51,6 +51,7 @@ public class SubscriptionServlet extends HttpServlet { subscriptionStatusResponse.setLicenseInformation(Server.licenseService.getLicenseInformation()); subscriptionStatusResponse.setActivated(Server.activated.get()); resp.getOutputStream().write(JsonStream.serialize(subscriptionStatusResponse).getBytes()); + resp.getOutputStream().close(); } //Upload the license here, which is really just uploading a base64 representation of the keypair - and store it diff --git a/jams-server/src/main/java/net/jami/jams/server/update/JAMSUpdater.java b/jams-server/src/main/java/net/jami/jams/server/update/JAMSUpdater.java index 1bba5c3fc1f3c8b5aab111a002dfe6af36e3f587..cae39d5ae38158b229493b0b21a0307910fa955c 100644 --- a/jams-server/src/main/java/net/jami/jams/server/update/JAMSUpdater.java +++ b/jams-server/src/main/java/net/jami/jams/server/update/JAMSUpdater.java @@ -29,7 +29,6 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import net.jami.jams.common.updater.AppUpdater; import net.jami.jams.common.updater.FileDescription; -import net.jami.jams.common.utils.VersioningUtils; import net.jami.jams.server.Server; import java.io.IOException; @@ -76,7 +75,7 @@ public class JAMSUpdater implements AppUpdater { @Override public HashMap<String, FileDescription> getLocalVersions() { - return VersioningUtils.checkVersion(null); + return updateCheckTask.getLocalData(); } @Override diff --git a/jams-server/src/main/java/net/jami/jams/server/update/UpdateCheckTask.java b/jams-server/src/main/java/net/jami/jams/server/update/UpdateCheckTask.java index 306fe0f19fec101bb05ebb4fcbc9bf882c6f7ffe..6fc231ebc4db6bc04db434c53206707d4fdb9772 100644 --- a/jams-server/src/main/java/net/jami/jams/server/update/UpdateCheckTask.java +++ b/jams-server/src/main/java/net/jami/jams/server/update/UpdateCheckTask.java @@ -51,7 +51,7 @@ import java.util.TimerTask; public class UpdateCheckTask extends TimerTask { private HashMap<String, FileDescription> remoteData = new HashMap<>(); - private HashMap<String, FileDescription> localData; + private HashMap<String, FileDescription> localData = new HashMap<>(); private SSLContext sslContext; private volatile KeyStore trustStore; protected static volatile String UPDATE_SERVER_URI; @@ -89,7 +89,6 @@ public class UpdateCheckTask extends TimerTask { JAMSUpdater.updateAvailable.set(true); } }); - } catch (Exception e){ log.error("Could not check for updates with error: {}",e.getMessage()); diff --git a/jams-server/src/main/resources/oem/config.json b/jams-server/src/main/resources/oem/config.json index 38f19fa03ae297b2da6c142c89afbe85a41f5aae..6be3477e23e1cdb9c8edef464a305941be9cc325 100644 --- a/jams-server/src/main/resources/oem/config.json +++ b/jams-server/src/main/resources/oem/config.json @@ -1,4 +1,4 @@ { "UPDATE_URL": "https://updates.jami.net", - "UPDATE_INTERVAL": 20000 + "UPDATE_INTERVAL": 120000 } 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 83beaca0c3d5ec02db479661816b9e1dbb820a41..29e026f063ca552d6fbe36f72a44be7fb93badc6 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 @@ -43,8 +43,6 @@ import static net.jami.jams.server.Server.dataStore; @Slf4j public class UserProfileService { - - private static final HashMap<String,String> fieldMap = LDAPConnector.settings.getFieldMappings(); private final ConnectionFactory connectionFactory; public UserProfileService(ConnectionFactory connectionFactory) { @@ -112,6 +110,8 @@ public class UserProfileService { public static UserProfile profileFromResponse(LdapEntry entry){ //Use reflection to remap. + HashMap<String,String> fieldMap = LDAPConnector.settings.getFieldMappings(); + try { UserProfile userProfile = new UserProfile(); for (String attribute : entry.getAttributeNames()) { @@ -123,7 +123,7 @@ public class UserProfileService { return userProfile; } catch (Exception e){ - log.error("An error occured while trying to invoke methods: " + e.toString()); + log.error("An error occurred while trying to invoke methods: " + e.toString()); return null; } }