X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FRemoteLibraryServer.java;h=84d763fce51f5c4ad97cfd1fda07d41dee71845c;hb=416c54f8bf5f60e2f8d7981e24fdd613fb9246f1;hp=40386ec2ce915db26a811fb18329579b88a1c714;hpb=b9ce9cad4a94e7c88770d5f7ac6cf4f200e336de;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java index 40386ec..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,27 +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 @@ -58,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()); } @@ -66,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[]) { @@ -77,7 +79,7 @@ public class RemoteLibraryServer extends ServerObject { args[i - 2] = dataArray[i]; } - key = "" + dataArray[0]; + md5 = "" + dataArray[0]; command = "" + dataArray[1]; } } @@ -88,12 +90,14 @@ public class RemoteLibraryServer extends ServerObject { } getTraceHandler().trace(trace); - if (!key.equals(this.key)) { + if (!md5.equals(this.md5)) { getTraceHandler().trace("Key rejected."); return null; } - if ("GET_METADATA".equals(command)) { + if ("PING".equals(command)) { + return "PONG"; + } else if ("GET_METADATA".equals(command)) { if (args[0].equals("*")) { List metas = Instance.getLibrary().getMetas( createPgForwarder(action));