diff --git a/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java b/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..b9d262caf820f62ff62f6eba1434486765e5b511 --- /dev/null +++ b/jams-common/src/main/java/net/jami/jams/common/updater/FullSystemStatusResponse.java @@ -0,0 +1,16 @@ +package net.jami.jams.common.updater; + +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; + +@Getter +@Setter +public class FullSystemStatusResponse { + + private HashMap<String,FileDescription> localVersions; + private HashMap<String, FileDescription> remoteVersions; + private Boolean updateAvailable; + +} diff --git a/jams-launcher/pom.xml b/jams-launcher/pom.xml index c1357c67bb62caa2bb0c2e008c703723157a39e6..89656bc34ed86ca4f30a605da38754ee2acc9101 100644 --- a/jams-launcher/pom.xml +++ b/jams-launcher/pom.xml @@ -57,6 +57,8 @@ implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class>launcher.AppStarter</Main-Class> + <Implementation-Title>${project.artifactId}</Implementation-Title> + <Implementation-Version>${project.version}</Implementation-Version> <Class-Path>.</Class-Path> </manifestEntries> </transformer> diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java similarity index 96% rename from jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java rename to jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java index d98eb268c63e0377f99cb64b85d5c7e5134084a6..976a5d7c8a74490e5330fd9fa4d9e816e381c65c 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/SubscriptionServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/SubscriptionServlet.java @@ -1,4 +1,4 @@ -package net.jami.jams.server.servlets.api.update; +package net.jami.jams.server.servlets.api.admin.update; import com.jsoniter.output.JsonStream; import jakarta.servlet.ServletException; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java similarity index 51% rename from jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java rename to jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java index 3d5464613c9184b396022e96448d36426cf3d246..48f53164eeeabbe0c240c1aaa6c9bccb792915f4 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/update/UpdateServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/update/UpdateServlet.java @@ -1,25 +1,35 @@ -package net.jami.jams.server.servlets.api.update; +package net.jami.jams.server.servlets.api.admin.update; +import com.jsoniter.output.JsonStream; import jakarta.servlet.ServletException; 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.updater.FullSystemStatusResponse; import java.io.IOException; +import static net.jami.jams.server.Server.appUpdater; + @WebServlet("/api/update") public class UpdateServlet extends HttpServlet { //Return the current version number and the available version number. @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doGet(req, resp); + FullSystemStatusResponse response = new FullSystemStatusResponse(); + response.setLocalVersions(appUpdater.getLocalVersions()); + response.setRemoteVersions(appUpdater.getRemoteVersions()); + response.setUpdateAvailable(appUpdater.getUpdateAvailable()); + resp.getOutputStream().write(JsonStream.serialize(response).getBytes()); } //This is the do-update button. @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - super.doPost(req, resp); + if(appUpdater.getUpdateAvailable()){ + appUpdater.doUpdate(); + } } } diff --git a/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java b/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java index 49d20953b7eba551f379a6104e92da03e12b3b43..12b675b4f48f419c8738368b9fb57f231b14ae6e 100644 --- a/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java +++ b/updater/src/main/java/net/jami/jams/updater/UpdateCheckTask.java @@ -69,7 +69,8 @@ public class UpdateCheckTask extends TimerTask { ); //Compare and set to to true up-stream localData.forEach((k,v) -> { - if(remoteData.get(k).compareTo(v) > 0){ + if(remoteData.containsKey(k) && remoteData.get(k).compareTo(v) > 0){ + log.info("Detected a new version on SFL servers!"); JAMSUpdater.updateAvailable.set(true); } });