From 416c54f8bf5f60e2f8d7981e24fdd613fb9246f1 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sat, 2 Dec 2017 16:17:30 +0100 Subject: [PATCH] Use a hash of the key instead of the key itself --- .../nikiroo/fanfix/library/RemoteLibrary.java | 21 ++++++------ .../fanfix/library/RemoteLibraryServer.java | 33 ++++++++++--------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/be/nikiroo/fanfix/library/RemoteLibrary.java b/src/be/nikiroo/fanfix/library/RemoteLibrary.java index 63d2d7d..9453d67 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibrary.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibrary.java @@ -11,6 +11,7 @@ import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.Progress; +import be.nikiroo.utils.StringUtils; import be.nikiroo.utils.Version; import be.nikiroo.utils.serial.server.ConnectActionClientObject; @@ -24,7 +25,7 @@ import be.nikiroo.utils.serial.server.ConnectActionClientObject; public class RemoteLibrary extends BasicLibrary { private String host; private int port; - private final String key; + private final String md5; /** * Create a {@link RemoteLibrary} linked to the given server. @@ -38,7 +39,7 @@ public class RemoteLibrary extends BasicLibrary { * the port to contact it on */ public RemoteLibrary(String key, String host, int port) { - this.key = key; + this.md5 = StringUtils.getMd5Hash(key); this.host = host; this.port = port; } @@ -59,7 +60,7 @@ public class RemoteLibrary extends BasicLibrary { action = new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { - Object rep = send(new Object[] { key, "PING" }); + Object rep = send(new Object[] { md5, "PING" }); if ("PONG".equals(rep)) { result[0] = Status.READY; } else { @@ -100,7 +101,7 @@ public class RemoteLibrary extends BasicLibrary { new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { - Object rep = send(new Object[] { key, "GET_COVER", luid }); + Object rep = send(new Object[] { md5, "GET_COVER", luid }); result[0] = (BufferedImage) rep; } @@ -124,7 +125,7 @@ public class RemoteLibrary extends BasicLibrary { new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { - Object rep = send(new Object[] { key, "GET_SOURCE_COVER", + Object rep = send(new Object[] { md5, "GET_SOURCE_COVER", source }); result[0] = (BufferedImage) rep; } @@ -155,7 +156,7 @@ public class RemoteLibrary extends BasicLibrary { pg = new Progress(); } - Object rep = send(new Object[] { key, "GET_STORY", luid }); + Object rep = send(new Object[] { md5, "GET_STORY", luid }); MetaData meta = null; if (rep instanceof MetaData) { @@ -204,7 +205,7 @@ public class RemoteLibrary extends BasicLibrary { pg.setMinMax(0, (int) story.getMeta().getWords()); } - send(new Object[] { key, "SAVE_STORY", luid }); + send(new Object[] { md5, "SAVE_STORY", luid }); List list = RemoteLibraryServer.breakStory(story); for (Object obj : list) { @@ -234,7 +235,7 @@ public class RemoteLibrary extends BasicLibrary { new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { - send(new Object[] { key, "DELETE_STORY", luid }); + send(new Object[] { md5, "DELETE_STORY", luid }); } @Override @@ -250,7 +251,7 @@ public class RemoteLibrary extends BasicLibrary { new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { - send(new Object[] { key, "SET_SOURCE_COVER", source, luid }); + send(new Object[] { md5, "SET_SOURCE_COVER", source, luid }); } @Override @@ -283,7 +284,7 @@ public class RemoteLibrary extends BasicLibrary { pg = new Progress(); } - Object rep = send(new Object[] { key, "GET_METADATA", "*" }); + Object rep = send(new Object[] { md5, "GET_METADATA", "*" }); while (true) { if (!RemoteLibraryServer.updateProgress(pg, rep)) { diff --git a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java index b95c50f..84d763f 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java @@ -12,6 +12,7 @@ import be.nikiroo.fanfix.data.Paragraph; import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.Progress; import be.nikiroo.utils.Progress.ProgressListener; +import be.nikiroo.utils.StringUtils; import be.nikiroo.utils.Version; import be.nikiroo.utils.serial.server.ConnectActionServerObject; import be.nikiroo.utils.serial.server.ServerObject; @@ -22,28 +23,28 @@ import be.nikiroo.utils.serial.server.ServerObject; * The available commands are given as arrays of objects (first item is the key, * second is the command, the rest are the arguments). *

- * The key is always a String, the commands are also Strings; the parameters - * vary depending upon the command. + * The md5 is always a String (the MD5 hash of the access key), the commands are + * also Strings; the parameters vary depending upon the command. *

* * @author niki */ public class RemoteLibraryServer extends ServerObject { - private final String key; + private final String md5; /** * Create a new remote server (will not be active until @@ -59,7 +60,7 @@ public class RemoteLibraryServer extends ServerObject { */ public RemoteLibraryServer(String key, int port) throws IOException { super("Fanfix remote library", port, true); - this.key = key; + this.md5 = StringUtils.getMd5Hash(key); setTraceHandler(Instance.getTraceHandler()); } @@ -67,7 +68,7 @@ public class RemoteLibraryServer extends ServerObject { @Override protected Object onRequest(ConnectActionServerObject action, Version clientVersion, Object data) throws Exception { - String key = ""; + String md5 = ""; String command = ""; Object[] args = new Object[0]; if (data instanceof Object[]) { @@ -78,7 +79,7 @@ public class RemoteLibraryServer extends ServerObject { args[i - 2] = dataArray[i]; } - key = "" + dataArray[0]; + md5 = "" + dataArray[0]; command = "" + dataArray[1]; } } @@ -89,7 +90,7 @@ public class RemoteLibraryServer extends ServerObject { } getTraceHandler().trace(trace); - if (!key.equals(this.key)) { + if (!md5.equals(this.md5)) { getTraceHandler().trace("Key rejected."); return null; } -- 2.27.0