diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java index 22e941dbc2a20db8d7603a7e6ad95a37c582d358..89ff1b71a1f47183e5b994342cd7171da4ef9486 100644 --- a/src/main/java/caosdb/server/CaosDBServer.java +++ b/src/main/java/caosdb/server/CaosDBServer.java @@ -859,6 +859,7 @@ class CaosDBComponent extends Component { @Override public void handle(final Request request, final Response response) { long t1 = System.currentTimeMillis(); + // The server request ID is just a long random number request.getAttributes().put("SRID", Utils.getUID()); response.setServerInfo(CaosDBServer.getServerInfo()); super.handle(request, response); diff --git a/src/main/java/caosdb/server/accessControl/UserSources.java b/src/main/java/caosdb/server/accessControl/UserSources.java index 2097478c2e8b87cb61c96b33fe2a5b389bac48a6..a3f35c11b0f3bcc10e67397bd8c48c6e969fcc7d 100644 --- a/src/main/java/caosdb/server/accessControl/UserSources.java +++ b/src/main/java/caosdb/server/accessControl/UserSources.java @@ -44,7 +44,7 @@ public class UserSources extends HashMap<String, UserSource> { public static final String ANONYMOUS_ROLE = "anonymous"; private static final Logger logger = LoggerFactory.getLogger(UserSources.class); - public static final String KEY_DEAULT_REALM = "defaultRealm"; + public static final String KEY_DEFAULT_REALM = "defaultRealm"; public static final String KEY_REALMS = "defaultRealm"; public static final String KEY_REALM_CLASS = "class"; @@ -162,7 +162,7 @@ public class UserSources extends HashMap<String, UserSource> { } public static String getDefaultRealm() { - return instance.map.getSectionProperty(Ini.DEFAULT_SECTION_NAME, KEY_DEAULT_REALM); + return instance.map.getSectionProperty(Ini.DEFAULT_SECTION_NAME, KEY_DEFAULT_REALM); } public static Set<String> resolve(final PrincipalCollection principals) { diff --git a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java index 709825c8176e0e759249efb41c5e8fd075829959..07fa343967a08f6dc936deca65f279199c5ae029 100644 --- a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java +++ b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java @@ -75,8 +75,8 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { private final HashMap<String, String> flags = new HashMap<String, String>(); private Long timestamp = null; private static final XMLParser xmlparser = new XMLParser(); - protected String sRID = null; - private String cRID = null; + protected String sRID = null; // Server side request ID + private String cRID = null; // Client side request ID private String[] requestedItems = null; private ArrayList<Integer> requestedIDs = new ArrayList<Integer>(); private ArrayList<String> requestedNames = new ArrayList<String>(); @@ -86,6 +86,11 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { private static final long serialVersionUID = -6836378704013776849L; } + /** + * Returns the (probably unique) server request ID. + * + * @return The server request ID. + */ public String getSRID() { return this.sRID; } @@ -156,6 +161,19 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { @Override protected void doRelease() {} + /** + * Creates the XML root. + * + * <p>The XML root node contains: + * + * <p> + * + * <ul> + * <li>User info as per addUserInfo + * <li>The sRID (server-side request ID) + * <li>A timestamp + * <li>The URI to this resource. + */ protected Element generateRootElement() { final Element retRoot = new Element("Response"); @@ -413,6 +431,11 @@ public abstract class AbstractCaosDBServerResource extends ServerResource { return root; } + /** + * Returns the client request ID, which can be set by the client. + * + * @return The cRID. + */ public String getCRID() { return cRID; } diff --git a/src/main/java/caosdb/server/utils/ServerMessages.java b/src/main/java/caosdb/server/utils/ServerMessages.java index 454834e2e065d9bd9359f73b8efbe0d19eae8c1e..124962182a114f05f7bfabee377841412594a828 100644 --- a/src/main/java/caosdb/server/utils/ServerMessages.java +++ b/src/main/java/caosdb/server/utils/ServerMessages.java @@ -292,7 +292,7 @@ public class ServerMessages { new Message( MessageType.Error, 0, - "This password is too weak. It should be longer than 8 characters and contain at least one number, one symbol, one uppercase letter and one lowercase letter. "); + "This password is too weak. It should be longer than 8 characters and sufficiently random. "); public static final Message AFFILIATION_ERROR = new Message( diff --git a/src/main/java/caosdb/server/utils/Utils.java b/src/main/java/caosdb/server/utils/Utils.java index 2916b2420c0386b71eb8dec18e47781fe8bae925..1e6b60d7e0274223a1123e63aafb9568cfeaf25d 100644 --- a/src/main/java/caosdb/server/utils/Utils.java +++ b/src/main/java/caosdb/server/utils/Utils.java @@ -252,8 +252,9 @@ public class Utils { } /** - * Intended to convert sizes to human readably sizes. TODO: might be broken because of the log - * function above. + * Converts file sizes to human readably sizes. + * + * <p>For example, getReadableByteSize(2048) == "2KiB". */ public static String getReadableByteSize(final Long fssize) { if (fssize == null) { @@ -280,10 +281,10 @@ public class Utils { /** * Determines the strength of a password. Currently this just throws an error when the String - * password does not at least contain - An uppercase char - A lowercase char - A number - A + * `password` does not at least contain - An uppercase char - A lowercase char - A number - A * punctuation char and if the length is not at least 8 characters. * - * <p>correcthorsebatterystaple would be rejected. + * <p>correcthorsebatterystaple is also rejected. * * @param password The password to be checked. */ @@ -297,5 +298,9 @@ public class Utils { if (!(length && uppercase && lowercase && number && punct)) { throw ServerMessages.PASSWORD_TOO_WEAK; } + + if (password.equals("correcthorsebatterystaple")) { + throw ServerMessages.PASSWORD_TOO_WEAK; + } } } diff --git a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java index 8f2cee53b1708f2185564f32f19e3ef1c3d958c7..81baabd4797842f1cbbc61f990d6ea580553de85 100644 --- a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java +++ b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java @@ -86,9 +86,7 @@ public class TestAbstractCaosDBServerResource { assertNotNull(userInfo); } - /** - * Creates a dummy usersources.ini and injects it into the server properties. - */ + /** Creates a dummy usersources.ini and injects it into the server properties. */ private void provideUserSourcesFile() throws IOException { String usersourcesFileName = tempFolder.newFile("usersources.ini").getAbsolutePath(); String usersourcesContent = diff --git a/src/test/java/caosdb/server/utils/UtilsTest.java b/src/test/java/caosdb/server/utils/UtilsTest.java index 527428ee134b1e5ee23be5f27df3ccc41101c1c4..c75d5a3ad861ac5b4c5ff9dfc905767479fb1a4f 100644 --- a/src/test/java/caosdb/server/utils/UtilsTest.java +++ b/src/test/java/caosdb/server/utils/UtilsTest.java @@ -2,7 +2,7 @@ * ** header v3.0 * This file is a part of the CaosDB Project. * - * Copyright (C) 2018 Research Group Biomedical Physics, + * Copyright (C) 2019 Research Group Biomedical Physics, * Max-Planck-Institute for Dynamics and Self-Organization Göttingen * * This program is free software: you can redistribute it and/or modify