Skip to content
Snippets Groups Projects
Commit 89544672 authored by Felix Sidokhine's avatar Felix Sidokhine
Browse files

reduced heavily the license and version clutter

parent 73ebf114
No related branches found
No related tags found
No related merge requests found
Showing
with 60 additions and 80 deletions
...@@ -3,11 +3,10 @@ package net.jami.jams.common.objects.responses; ...@@ -3,11 +3,10 @@ package net.jami.jams.common.objects.responses;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import net.jami.jams.common.updater.subscription.LicenseInformation; import net.jami.jams.common.updater.subscription.LicenseInformation;
import net.jami.jams.common.updater.subscription.SubscriptionType;
import java.util.HashMap; import java.util.HashMap;
import static net.jami.jams.common.utils.LicenseUtils.checkVersion; import static net.jami.jams.common.utils.VersioningUtils.checkVersion;
@Getter @Getter
@Setter @Setter
......
...@@ -6,6 +6,4 @@ public interface AppUpdater { ...@@ -6,6 +6,4 @@ public interface AppUpdater {
String getLatestVersion(); String getLatestVersion();
boolean downloadUpdates(); boolean downloadUpdates();
} }
package net.jami.jams.common.utils;
import lombok.Getter;
import lombok.Setter;
import org.zeromq.SocketType;
import org.zeromq.ZMQ;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
@Getter
@Setter
public class UpdateInterface extends Thread {
private AtomicBoolean updateAvailable = new AtomicBoolean(false);
private volatile String versions;
private ZMQ.Context context = ZMQ.context(1);
private ZMQ.Socket sender = context.socket(SocketType.REQ);
private ZMQ.Socket receiver = context.socket(SocketType.SUB);
private final static Logger logger = Logger.getLogger(UpdateInterface.class.getName());
public UpdateInterface() {
receiver.connect("tcp://localhost:4572");
sender.connect("tcp://localhost:4573");
receiver.subscribe("UPDATE");
this.start();
}
public void approveUpdate(){
sender.send("DO-UPDATE");
}
@Override
public void run() {
while(true){
try{
receiver.recv();
updateAvailable.set(true);
versions = receiver.recvStr();
}
catch (Exception e){
System.out.println(e.toString());
}
}
}
}
...@@ -2,6 +2,7 @@ package net.jami.jams.common.utils; ...@@ -2,6 +2,7 @@ package net.jami.jams.common.utils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
...@@ -10,7 +11,7 @@ import java.util.HashMap; ...@@ -10,7 +11,7 @@ import java.util.HashMap;
import java.util.jar.JarFile; import java.util.jar.JarFile;
@Slf4j @Slf4j
public class LicenseUtils { public class VersioningUtils {
private static final String IMPLEMENTATION_VERSION_FIELD = "Implementation-Version"; private static final String IMPLEMENTATION_VERSION_FIELD = "Implementation-Version";
...@@ -20,11 +21,12 @@ public class LicenseUtils { ...@@ -20,11 +21,12 @@ public class LicenseUtils {
ArrayList<Path> files = new ArrayList<>(); ArrayList<Path> files = new ArrayList<>();
Files.walk(Paths.get(System.getProperty("user.dir"))).filter(Files::isRegularFile).forEach(files::add); Files.walk(Paths.get(System.getProperty("user.dir"))).filter(Files::isRegularFile).forEach(files::add);
files.forEach( e ->{ files.forEach( e ->{
if(e.endsWith(".jar")){ if(e.toString().endsWith(".jar")){
try { try {
String version = new JarFile(e.toFile()).getManifest().getMainAttributes().getValue(IMPLEMENTATION_VERSION_FIELD); String version = new JarFile(e.toFile()).getManifest().getMainAttributes().getValue(IMPLEMENTATION_VERSION_FIELD);
res.put(e.toString(),version); String[] arr = e.toString().split(File.separator);
log.info("Found version {} of {}",e.toString(),version); res.put(arr[arr.length - 1],version);
log.info("Found version {} of {}",version,e.toString());
} }
catch (Exception e1){ catch (Exception e1){
log.error("Could detect version for file with error {}",e1.getMessage()); log.error("Could detect version for file with error {}",e1.getMessage());
......
package net.jami.jams.common.utils; package net.jami.jams.common.utils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.HashMap; import java.util.HashMap;
class LicenseUtilsTest { class VersioningUtilsTest {
@Test @Test
@Disabled
public void testFileScan(){ public void testFileScan(){
HashMap<String,String> res = LicenseUtils.checkVersion(); HashMap<String,String> res = VersioningUtils.checkVersion();
System.out.println(res); Assertions.assertEquals(6,res.size(),"Incorrect number of versions detected!");
} }
......
...@@ -34,7 +34,6 @@ import net.jami.jams.common.serialization.JsoniterRegistry; ...@@ -34,7 +34,6 @@ import net.jami.jams.common.serialization.JsoniterRegistry;
import net.jami.jams.common.server.ServerSettings; import net.jami.jams.common.server.ServerSettings;
import net.jami.jams.common.updater.AppUpdater; import net.jami.jams.common.updater.AppUpdater;
import net.jami.jams.common.utils.LibraryLoader; import net.jami.jams.common.utils.LibraryLoader;
import net.jami.jams.common.utils.UpdateInterface;
import net.jami.jams.nameserver.LocalNameServer; import net.jami.jams.nameserver.LocalNameServer;
import net.jami.jams.nameserver.PublicNameServer; import net.jami.jams.nameserver.PublicNameServer;
import net.jami.jams.server.core.TomcatLauncher; import net.jami.jams.server.core.TomcatLauncher;
...@@ -65,7 +64,6 @@ public class Server { ...@@ -65,7 +64,6 @@ public class Server {
public static AppUpdater appUpdater; public static AppUpdater appUpdater;
public static NameServer nameServer; public static NameServer nameServer;
private static TomcatLauncher tomcatLauncher = null; private static TomcatLauncher tomcatLauncher = null;
public static final UpdateInterface updateInterface = new UpdateInterface();
public static final LicenseService licenseService = null; public static final LicenseService licenseService = null;
public static void main(String[] args) { public static void main(String[] args) {
......
...@@ -22,21 +22,6 @@ public class NeedsUpdateServlet extends HttpServlet { ...@@ -22,21 +22,6 @@ public class NeedsUpdateServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) { protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain); resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain);
resp.setContentType("application/json"); resp.setContentType("application/json");
try {
HashMap<String,Object> payload = new HashMap<>();
if(!Server.updateInterface.getVersions().equals("{}")) {
payload.put("updateAvailable", Server.updateInterface.getUpdateAvailable().get());
payload.put("newVersions", Server.updateInterface.getVersions());
}
else
payload.put("updateAvailable",false);
resp.getOutputStream().write(JsonStream.serialize(payload).getBytes());
resp.setStatus(200);
}
catch (Exception e){
resp.setStatus(500);
}
} }
@Override @Override
......
...@@ -18,11 +18,5 @@ public class StartUpdateServlet extends HttpServlet { ...@@ -18,11 +18,5 @@ public class StartUpdateServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) { protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain); resp.setHeader("Access-Control-Allow-Origin", JamsCA.serverDomain);
resp.setContentType("application/json"); resp.setContentType("application/json");
try {
Server.updateInterface.approveUpdate();
}
catch (Exception e){
resp.setStatus(500);
}
} }
} }
...@@ -2,5 +2,5 @@ module updater { ...@@ -2,5 +2,5 @@ module updater {
requires jams.common; requires jams.common;
requires lombok; requires lombok;
requires org.slf4j; requires org.slf4j;
requires jeromq;
} }
\ No newline at end of file
package net.jami.jams.updater; package net.jami.jams.updater;
import lombok.extern.slf4j.Slf4j;
import net.jami.jams.common.updater.AppUpdater; import net.jami.jams.common.updater.AppUpdater;
import org.zeromq.SocketType;
import org.zeromq.ZMQ;
public class JAMSUpdater implements AppUpdater { import java.util.concurrent.atomic.AtomicBoolean;
UpdateDownloader updateDownloader = new UpdateDownloader(); @Slf4j
public class JAMSUpdater extends Thread implements AppUpdater {
private static final String IFACE_TCP_SENDER = "tcp://localhost:4573";
private static final String IFACE_TCP_SUBSCRIBER = "tcp://localhost:4572";
private static final String SUBSCRIBER_TOPIC = "UPDATE";
private final AtomicBoolean updateAvailable = new AtomicBoolean(false);
private final ZMQ.Context context = ZMQ.context(1);
private final ZMQ.Socket sender = context.socket(SocketType.REQ);
private final ZMQ.Socket receiver = context.socket(SocketType.SUB);
private final UpdateDownloader updateDownloader = new UpdateDownloader();
public JAMSUpdater() { public JAMSUpdater() {
receiver.connect(IFACE_TCP_SUBSCRIBER);
sender.connect(IFACE_TCP_SENDER);
receiver.subscribe(SUBSCRIBER_TOPIC);
this.start();
} }
@Override @Override
...@@ -23,4 +41,17 @@ public class JAMSUpdater implements AppUpdater { ...@@ -23,4 +41,17 @@ public class JAMSUpdater implements AppUpdater {
public boolean downloadUpdates() { public boolean downloadUpdates() {
return updateDownloader.doUpdate(); return updateDownloader.doUpdate();
} }
@Override
public void run() {
while(true){
try{
receiver.recv();
updateAvailable.set(true);
}
catch (Exception e){
log.error("An error has occured with details {}",e.getMessage());
}
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment