diff --git a/Mage.Updater/pom.xml b/Mage.Updater/pom.xml deleted file mode 100644 index e4e00936ab..0000000000 --- a/Mage.Updater/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - mage-root - org.mage - 1.4.37 - - 4.0.0 - - mage-updater - Mage Updater - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - com.magefree.update.Updater - - - - - - - \ No newline at end of file diff --git a/Mage.Updater/src/main/java/com/magefree/update/Updater.java b/Mage.Updater/src/main/java/com/magefree/update/Updater.java deleted file mode 100644 index fdceb24444..0000000000 --- a/Mage.Updater/src/main/java/com/magefree/update/Updater.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.magefree.update; - -import com.magefree.update.helpers.ChecksumHelper; -import com.magefree.update.helpers.FileHelper; - -import java.io.File; -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Scanner; - -/** - * Mage Updater for updating Mage based on metadata from remote server. - * - * @author Loki, noxx - */ -public class Updater { - - /** - * URL to get metadata and files from. - */ - private static final String URL_PREFIX = "http://download.magefree.com/update/"; - - /** - * Main. Application Entry Point. - * - * @param args No args are used. - * - * @throws Exception - */ - public static void main(String[] args) throws Exception { - Updater m = new Updater(); - - // check files on local machine - HashMap local = m.readLocalData(); - - // request information for files on update server - HashMap remote = m.downloadAndParseUpdateData(); - - // compare to find updated files - List downloadList = m.findUpdated(local, remote); - downloadList.addAll(m.findNew(local, remote)); - - // download and replace - m.downloadAndUpdate(downloadList); - - // remove odd files - List removeList = m.findRemoved(local, remote); - m.removeFiles(removeList); - - if (downloadList.isEmpty() && removeList.isEmpty()) { - System.out.println("Already up-to-date."); - } - } - - /** - * Gets lists of files on local machine. - * For each such file an map's entry is created with path and checksum. - * - * @return - * @throws Exception - */ - public HashMap readLocalData() throws Exception { - HashMap result = new HashMap<>(); - for (File f : findFiles()) { - result.put(f.getPath().replaceAll("\\\\", "/"), ChecksumHelper.getSHA1Checksum(f.getPath())); - } - return result; - } - - /** - * Get required files. - * - * @return - * @throws Exception - */ - public List findFiles() throws Exception { - ArrayList result = new ArrayList<>(); - result.addAll(FileHelper.findAllFilesInDir("mage-client/lib")); - result.addAll(FileHelper.findAllFilesInDir("mage-client/plugins")); - result.addAll(FileHelper.findAllFilesInDir("mage-server/lib")); - result.addAll(FileHelper.findAllFilesInDir("mage-server/plugins")); - return result; - } - - /** - * Downloads metadata from remote server getting checksums for files. - * This information will be used to find out what files should be downloaded and replaced or removed locally. - * - * @return - * @throws Exception - */ - public HashMap downloadAndParseUpdateData() throws Exception { - HashMap result = new HashMap<>(); - URL url = new URL(URL_PREFIX + "update-data.txt"); - URLConnection urlConnection = url.openConnection(); - urlConnection.connect(); - Scanner scanner = new Scanner(urlConnection.getInputStream()); - while (scanner.hasNextLine()) { - String[] lines = scanner.nextLine().split(" "); - if (lines.length == 2) { - result.put(lines[1], lines[0]); - System.out.println("jar " + lines[1] + ", checksum " + lines[0]); - } - } - return result; - } - - /** - * Finds the list of files that have been updated and should be replaced. - * The fact of being changed is determined based on checksum received from remote server. - * - * @param local List of local files with check sums to be compared with remote. - * @param remote List of remove files with check sum to be compared with local. - * - * @return List of files to be replaced with newer versions. - */ - public List findUpdated(HashMap local, HashMap remote) { - ArrayList result = new ArrayList<>(); - for (String remoteFile : remote.keySet()) { - if (local.containsKey(remoteFile)) { - if (!local.get(remoteFile).equals(remote.get(remoteFile))) { -// System.out.println("jar need to be updated - " + remoteFile + " local: " + local.get(remoteFile) + ", remoteL " + remote.get(remoteFile)); - result.add(remoteFile); - } - } - } - return result; - } - - public List findNew(HashMap local, HashMap remote) { - ArrayList result = new ArrayList<>(); - for (String remoteFile : remote.keySet()) { - if (!local.containsKey(remoteFile)) { - //System.out.println("new jar found - " + remoteFile); - result.add(remoteFile); - } - } - return result; - } - - /** - * Finds files that should be removed. - * - * @param local List of local files with check sums to be compared with remote. - * @param remote List of remove files with check sum to be compared with local. - * - * @return List of files to be removed. - */ - public List findRemoved(HashMap local, HashMap remote) { - ArrayList result = new ArrayList<>(); - for (String localFile : local.keySet()) { - if (!remote.containsKey(localFile)) { - //System.out.println("deleted jar found - " + localFile); - result.add(localFile); - } - } - return result; - } - - /** - * Downloads files and updated them. - * - * @param downloadList - * @throws IOException - */ - public void downloadAndUpdate(List downloadList) throws IOException { - for (String filename : downloadList) { - URL url = new URL(URL_PREFIX + filename); - HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); - urlConnection.connect(); - - if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { - FileHelper.downloadFile(filename, urlConnection); - } else { - System.out.println(filename + " error status : " + urlConnection.getResponseMessage()); - } - } - } - - /** - * Removes files from the list. - * - * @param files - */ - public void removeFiles(List files) { - FileHelper.removeFiles(files); - } -} diff --git a/Mage.Updater/src/main/java/com/magefree/update/helpers/ChecksumHelper.java b/Mage.Updater/src/main/java/com/magefree/update/helpers/ChecksumHelper.java deleted file mode 100644 index c815ede0db..0000000000 --- a/Mage.Updater/src/main/java/com/magefree/update/helpers/ChecksumHelper.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.magefree.update.helpers; - -import java.io.FileInputStream; -import java.io.InputStream; -import java.security.MessageDigest; - -/** - * @author Loki - */ -public final class ChecksumHelper { - - public static byte[] createChecksum(String filename) throws Exception { - InputStream fis = null; - MessageDigest complete; - - try { - fis = new FileInputStream(filename); - - byte[] buffer = new byte[1024]; - complete = MessageDigest.getInstance("SHA1"); - - int numRead; - do { - numRead = fis.read(buffer); - if (numRead > 0) { - complete.update(buffer, 0, numRead); - } - } while (numRead != -1); - - return complete.digest(); - } finally { - if (fis != null) { - fis.close(); - } - } - } - - // see this How-to for a faster way to convert - // a byte array to a HEX string - public static String getSHA1Checksum(String filename) throws Exception { - byte[] b = createChecksum(filename); - String result = ""; - for (int i = 0; i < b.length; i++) { - result += - Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1); - } - return result; - } -} diff --git a/Mage.Updater/src/main/java/com/magefree/update/helpers/FileHelper.java b/Mage.Updater/src/main/java/com/magefree/update/helpers/FileHelper.java deleted file mode 100644 index 6ca8233d86..0000000000 --- a/Mage.Updater/src/main/java/com/magefree/update/helpers/FileHelper.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.magefree.update.helpers; - -import java.io.*; -import java.net.HttpURLConnection; -import java.util.ArrayList; -import java.util.List; -import java.io.Closeable; -/** - * Helper for file operations. - * - * @author noxx - */ -public final class FileHelper { - - private FileHelper() { - } - - /** - * Filters out dirs. - */ - private static final FileFilter anyFileFilter = f -> f.isFile(); - - /** - * Filters out jars. - */ - private static final FilenameFilter jarFileFilter = (dir, name) -> name.endsWith(".jar"); - - /** - * Gets .jar files from specified folder. - * - * @param dir Folder to scan for rile - * @return - */ - public static List findJarsInDir(String dir) { - ArrayList result = new ArrayList<>(); - File directory = new File(dir); - if (directory.exists() && directory.isDirectory()) { - for (File jar : directory.listFiles(jarFileFilter)) { - result.add(jar); - } - } - return result; - } - - /** - * Gets non-dir files from specified folder. - * - * @param dir Folder to scan for rile - * @return - */ - public static List findAllFilesInDir(String dir) { - ArrayList result = new ArrayList<>(); - File directory = new File(dir); - if (directory.exists() && directory.isDirectory()) { - for (File jar : directory.listFiles(anyFileFilter)) { - result.add(jar); - } - } - return result; - } - - /** - * Removes all files from the list. - * - * @param files - */ - public static void removeFiles(List files) { - for (String filename : files) { - File f = new File(filename); - if (f.exists()) { - if(f.delete()) { - System.out.println("File has been deleted: " + filename); - } - } else { - System.out.println("ERROR. Couldn't find file to delete: " + filename); - } - } - } - - /** - * Downloads specified file. - * - * @param filename - * @param urlConnection - */ - public static void downloadFile(String filename, HttpURLConnection urlConnection) { - System.out.println("Downloading " + filename); - try (InputStream in = urlConnection.getInputStream() ; FileOutputStream out = new FileOutputStream(filename)){ - File f = new File(filename); - if (!f.exists() && f.getParentFile() != null) { - if(f.getParentFile().mkdirs()) { - System.out.println("Directories have been created: " + f.getParentFile().getPath()); - } - } - - byte[] buf = new byte[4 * 1024]; - int bytesRead; - - while ((bytesRead = in.read(buf)) != -1) { - out.write(buf, 0, bytesRead); - } - - System.out.println("File has been updated: " + filename); - } catch (IOException e) { - System.out.println("i/o exception - " + e.getMessage()); - } - } -} diff --git a/pom.xml b/pom.xml index cb9eb2e9c0..8375161005 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,6 @@ Mage.Server.Plugins Mage.Server.Console Mage.Tests - Mage.Updater Mage.Verify