X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FRemoteLibraryServer.java;h=f4075dd7bf5df4e9fb1d734bc8d47fdb95852b5e;hb=fb25273cf02653ac343d5437083b1bc41af5ce23;hp=4a6ed606453fa1cfbdaf6236143832c55603793a;hpb=3040c4f03ba0c34694fca6b8e9413746bef65a37;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java index 4a6ed60..f4075dd 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java @@ -4,9 +4,14 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import javax.net.ssl.SSLException; import be.nikiroo.fanfix.Instance; +import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.Chapter; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Paragraph; @@ -24,16 +29,12 @@ import be.nikiroo.utils.serial.server.ServerObject; * The available commands are given as arrays of objects (first item is the * command, the rest are the arguments). *
- * All commands, including PING, will first return a random value to you that - * you must hash with your key and return before processing the rest; if the - * value not correct, the connection will be closed. + * All the commands are always prefixed by the subkey (which can be EMPTY if + * none). *
- * BTW: this system is by no means secure. It is just slightly - * obfuscated, and operate on clear text (because Google decided not to support - * anonymous SSL exchanges on Android, and the main use case for this server is - * Android). *
+ * Note: the key we use here is the encryption key (it must not contain a
+ * subkey).
*
* @param key
* the key that will restrict access to this server
@@ -73,63 +80,113 @@ public class RemoteLibraryServer extends ServerObject {
*/
public RemoteLibraryServer(String key, int port) throws IOException {
super("Fanfix remote library", port, key);
- this.key = key;
-
setTraceHandler(Instance.getTraceHandler());
}
@Override
protected Object onRequest(ConnectActionServerObject action,
- Version clientVersion, Object data) throws Exception {
+ Version clientVersion, Object data, long id) throws Exception {
long start = new Date().getTime();
+ // defaults are positive (as previous versions without the feature)
+ boolean rw = true;
+ boolean wl = true;
+
+ String subkey = "";
String command = "";
Object[] args = new Object[0];
if (data instanceof Object[]) {
Object[] dataArray = (Object[]) data;
if (dataArray.length > 0) {
- command = "" + dataArray[0];
+ subkey = "" + dataArray[0];
+ }
+ if (dataArray.length > 1) {
+ command = "" + dataArray[1];
+
+ args = new Object[dataArray.length - 2];
+ for (int i = 2; i < dataArray.length; i++) {
+ args[i - 2] = dataArray[i];
+ }
+ }
+ }
+
+ List