diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f1a3a5d83981fc2091890befde63a2ca4f2bbc..abd0046210599c8c95d6cf3d4c473348cb09c36c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - #11 - pam_authentication leaks the password to unprivileged processes on the same machine. - #39 - quotes around datetimes in queries +- #99 - Checksum updating resulted in infinite loop on server. ### Security (in case of vulnerabilities) diff --git a/README_SETUP.md b/README_SETUP.md index 554cd5dacbdffb637227e6be2b18ed1dad7877dc..c1e0f333f2effc57bc455f4b615e16f7ad647c3e 100644 --- a/README_SETUP.md +++ b/README_SETUP.md @@ -67,11 +67,16 @@ server: 2. Create an SSL certificate somewhere with a `Java Key Store` file. For self-signed certificates (not recommended for production use) you can do: - `mkdir certificates; cd certificates` - - `keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -validity 375 -keysize 2048 -ext san=dns:localhost` + - `keytool -genkey -keyalg RSA -alias selfsigned -keystore caosdb.jks -validity 375 -keysize 2048 -ext san=dns:localhost` Replace `localhost` by your host name, if you want. - - `keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -deststoretype PKCS12 -srcalias selfsigned` - - `openssl pkcs12 -in keystore.p12 -nokeys -out cert.pem` + - `keytool -importkeystore -srckeystore caosdb.jks -destkeystore caosdb.p12 -deststoretype PKCS12 -srcalias selfsigned` + - `openssl pkcs12 -in caosdb.p12 -nokeys -out cert.pem` - You can check the content of the certificate with `openssl x509 -in cert.pem -text` + + Alternatively, you can create a keystore from certificate files that you already have: + - `openssl pkcs12 -export -inkey privkey.pem -in fullchain.pem -out all-certs.pkcs12` + - `keytool -importkeystore -srckeystore all-certs.pkcs12 -srcstoretype PKCS12 -deststoretype pkcs12 -destkeystore caosdb.jks` + 3. Copy `conf/core/server.conf` to `conf/ext/server.conf` and change it appropriately: * Setup for MySQL back-end: Assuming that the mysql back-end is installed @@ -114,7 +119,7 @@ Done! `$ make run` -This can take a while. Once you see `Starting caosdb.server.CaosDBServer +This can take a while. Once you see `Starting org.caosdb.server.CaosDBServer application` the server is ready and you can try it out by connecting with a client, e.g. the web client, if you installed it. Typically, you just need to type `https://localhost:10443` in your Browser, assuming you used 10443 as port. diff --git a/conf/core/authtoken.example.yaml b/conf/core/authtoken.example.yaml index 453630a852642db19cfc824bf660b004e26af5b2..4d57c919ef122a7786850f4feddf2ac5d98e7e67 100644 --- a/conf/core/authtoken.example.yaml +++ b/conf/core/authtoken.example.yaml @@ -7,7 +7,7 @@ # Authentication Tokens. # # This yaml file contains an array of configuration objects which may have the -# properties that are defined by the caosdb.server.accessControl.Config class. +# properties that are defined by the org.caosdb.server.accessControl.Config class. # # These properties are: # diff --git a/conf/core/log4j2-debug.properties b/conf/core/log4j2-debug.properties index 5d6b5fa1e7fe7770a77d0048e419c1c834fbc7c5..40ffe0fc02c16eb3c80a9216f58b317faecc41dc 100644 --- a/conf/core/log4j2-debug.properties +++ b/conf/core/log4j2-debug.properties @@ -2,7 +2,7 @@ property.LOG_DIR = testlog # for unit testing -logger.caosdb_server_logging.name = caosdb.server.logging +logger.caosdb_server_logging.name = org.caosdb.server.logging logger.caosdb_server_logging.level = TRACE # ${LOG_DIR}/debug.log diff --git a/conf/core/server.conf b/conf/core/server.conf index 3507886b0475341b06a8d676845e9280c67b991b..73a7bc871c47409f48dd724988818ab210e0ab87 100644 --- a/conf/core/server.conf +++ b/conf/core/server.conf @@ -138,7 +138,7 @@ WEBUI_HTTP_HEADER_CACHE_MAX_AGE=28800 # -------------------------------------------------- # The handler that treats sent mails. # The default handler pipes mails to a file. -MAIL_HANDLER_CLASS=caosdb.server.utils.mail.ToFileHandler +MAIL_HANDLER_CLASS=org.caosdb.server.utils.mail.ToFileHandler # The file were the ToFileHanlder pipes messages to. MAIL_TO_FILE_HANDLER_LOC=./ diff --git a/conf/core/usersources.ini.template b/conf/core/usersources.ini.template index 14ad63428550e2548c688b95b66024b800a4db31..270a4ad069305ef47b7ad46b36bd69673860fb97 100644 --- a/conf/core/usersources.ini.template +++ b/conf/core/usersources.ini.template @@ -24,7 +24,7 @@ realms = PAM defaultRealm = PAM [PAM] -class = caosdb.server.accessControl.Pam +class = org.caosdb.server.accessControl.Pam ; pam_script = ./misc/pam_authentication/pam_authentication.sh default_status = ACTIVE ;include.user = [uncomment and put your users here] diff --git a/doc/devel/Benchmarking.md b/doc/devel/Benchmarking.md index 7800d568b3cb80bb61281281fcb86d5d4a2d2a33..e07f6f8973784bfe3d77191f6730662d261f73fb 100644 --- a/doc/devel/Benchmarking.md +++ b/doc/devel/Benchmarking.md @@ -9,13 +9,13 @@ one can then connect to the CaosDB server and profile execution times. In the sampler settings, you may want to add these expressions to the blocked packages: `org.restlet.**, com.mysql.**`. Branches on the call tree which are entirely inside the blacklist, will become leaves. Alternatively, specify a -whitelist, for example with `caosdb.server.database.backend.implementation.**`, +whitelist, for example with `org.caosdb.server.database.backend.implementation.**`, if you only want to see the time spent for certain MySQL calls. # Manual Java-side benchmarking # Benchmarking can be done using the `TransactionBenchmark` class (in package -`caosdb.server.database.misc`). +`org.caosdb.server.database.misc`). - Single timings can be added to instances of that class via the `addBenchmark(object, time)` method. Multiple benchmarks for the same object diff --git a/pom.xml b/pom.xml index 65c2777f6be5cb7f98aa2e10d611ddf9e512f641..1a93d5219ceac28992b46cbe66fd1330660302dc 100644 --- a/pom.xml +++ b/pom.xml @@ -35,13 +35,13 @@ <repositories> <repository> <id>maven-central</id> - <url>http://central.maven.org/maven2/</url> + <url>https://repo1.maven.org/maven2/</url> <name>Maven Central</name> </repository> <repository> <id>maven-restlet</id> <name>Public online Restlet repository</name> - <url>http://maven.restlet.com</url> + <url>https://maven.restlet.com</url> </repository> <repository> <id>local-maven-repo</id> diff --git a/src/main/java/org/caosdb/server/CaosDBServer.java b/src/main/java/org/caosdb/server/CaosDBServer.java index bad0bb353c014a96deb63e03553da604ac8c3bc4..996e1480a8158dd27e62e3af072a725698a3e5f3 100644 --- a/src/main/java/org/caosdb/server/CaosDBServer.java +++ b/src/main/java/org/caosdb/server/CaosDBServer.java @@ -470,7 +470,7 @@ public class CaosDBServer extends Application { null, port_https, (Restlet) null, - "caosdb.server.CaosDBServerConnectorHelper"); + "org.caosdb.server.CaosDBServerConnectorHelper"); component.getServers().add(httpsServer); // redirector http to https @@ -508,13 +508,14 @@ public class CaosDBServer extends Application { // Create an application (this class). final Application application = new CaosDBServer(); - application.getStatusService().setContactEmail("timm.fitschen@ds.mpg.de"); application .getStatusService() - .setHomeRef(new Reference(getServerProperty(ServerProperties.KEY_CONTEXT_ROOT) + "/")); + .setContactEmail( + getServerProperty(ServerProperties.KEY_ADMIN_NAME) + + " <" + + getServerProperty(ServerProperties.KEY_ADMIN_EMAIL) + + ">"); - // Attach the application to the component with a defined contextRoot. - application.getStatusService().setContactEmail("timm.fitschen@ds.mpg.de"); application .getStatusService() .setHomeRef(new Reference(getServerProperty(ServerProperties.KEY_CONTEXT_ROOT) + "/")); diff --git a/src/main/java/org/caosdb/server/database/BackendTransaction.java b/src/main/java/org/caosdb/server/database/BackendTransaction.java index cb23dde5548b1287a3fbc0dc76f54e5978e64f46..20ec5b71a7ae6f4dd908dc38145df1c41f035e8e 100644 --- a/src/main/java/org/caosdb/server/database/BackendTransaction.java +++ b/src/main/java/org/caosdb/server/database/BackendTransaction.java @@ -64,6 +64,7 @@ import org.caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveUser import org.caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveVersionHistory; import org.caosdb.server.database.backend.implementation.MySQL.MySQLRuleLoader; import org.caosdb.server.database.backend.implementation.MySQL.MySQLSetFileCheckedTimestampImpl; +import org.caosdb.server.database.backend.implementation.MySQL.MySQLSetFileChecksum; import org.caosdb.server.database.backend.implementation.MySQL.MySQLSetPassword; import org.caosdb.server.database.backend.implementation.MySQL.MySQLSetPermissionRules; import org.caosdb.server.database.backend.implementation.MySQL.MySQLSetQueryTemplateDefinition; @@ -120,6 +121,7 @@ import org.caosdb.server.database.backend.interfaces.RetrieveUserImpl; import org.caosdb.server.database.backend.interfaces.RetrieveVersionHistoryImpl; import org.caosdb.server.database.backend.interfaces.RuleLoaderImpl; import org.caosdb.server.database.backend.interfaces.SetFileCheckedTimestampImpl; +import org.caosdb.server.database.backend.interfaces.SetFileChecksumImpl; import org.caosdb.server.database.backend.interfaces.SetPasswordImpl; import org.caosdb.server.database.backend.interfaces.SetPermissionRulesImpl; import org.caosdb.server.database.backend.interfaces.SetQueryTemplateDefinitionImpl; @@ -209,6 +211,7 @@ public abstract class BackendTransaction implements Undoable { RetrieveQueryTemplateDefinitionImpl.class, MySQLRetrieveQueryTemplateDefinition.class); setImpl(InsertEntityDatatypeImpl.class, MySQLInsertEntityDatatype.class); setImpl(RetrieveVersionHistoryImpl.class, MySQLRetrieveVersionHistory.class); + setImpl(SetFileChecksumImpl.class, MySQLSetFileChecksum.class); } } diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java new file mode 100644 index 0000000000000000000000000000000000000000..960457cb09d1e68ca64260bb30416c2716edd6fa --- /dev/null +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java @@ -0,0 +1,29 @@ +package org.caosdb.server.database.backend.implementation.MySQL; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import org.caosdb.server.database.access.Access; +import org.caosdb.server.database.backend.interfaces.SetFileChecksumImpl; +import org.caosdb.server.database.exceptions.TransactionException; + +public class MySQLSetFileChecksum extends MySQLTransaction implements SetFileChecksumImpl { + + public MySQLSetFileChecksum(Access access) { + super(access); + } + + public static final String STMT_SET_CHECKSUM = + "UPDATE files SET hash = unhex(?) WHERE file_id = ?"; + + @Override + public void execute(Integer id, String checksum) { + try { + PreparedStatement stmt = prepareStatement(STMT_SET_CHECKSUM); + stmt.setInt(2, id); + stmt.setString(1, checksum); + stmt.execute(); + } catch (SQLException | ConnectionException e) { + throw new TransactionException(e); + } + } +} diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/SetFileChecksumImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/SetFileChecksumImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..ca33df8987aa4f82051feaaff936ea29455198a4 --- /dev/null +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/SetFileChecksumImpl.java @@ -0,0 +1,6 @@ +package org.caosdb.server.database.backend.interfaces; + +public interface SetFileChecksumImpl extends BackendTransactionImpl { + + void execute(Integer id, String checksum); +} diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/SetFileChecksum.java b/src/main/java/org/caosdb/server/database/backend/transaction/SetFileChecksum.java new file mode 100644 index 0000000000000000000000000000000000000000..afca8be4afa72ac755be595ae4345bfe134ca0ca --- /dev/null +++ b/src/main/java/org/caosdb/server/database/backend/transaction/SetFileChecksum.java @@ -0,0 +1,26 @@ +package org.caosdb.server.database.backend.transaction; + +import org.caosdb.server.database.BackendTransaction; +import org.caosdb.server.database.backend.interfaces.SetFileChecksumImpl; +import org.caosdb.server.entity.EntityInterface; + +public class SetFileChecksum extends BackendTransaction { + + private EntityInterface entity; + + public SetFileChecksum(EntityInterface entity) { + this.entity = entity; + } + + @Override + protected void execute() { + RetrieveSparseEntity.removeCached(this.entity); + if (entity.hasFileProperties()) { + GetFileRecordByPath.removeCached(this.entity.getFileProperties().getPath()); + + final SetFileChecksumImpl t = getImplementation(SetFileChecksumImpl.class); + + t.execute(this.entity.getId(), this.entity.getFileProperties().getChecksum()); + } + } +} diff --git a/src/main/java/org/caosdb/server/database/misc/TransactionBenchmark.java b/src/main/java/org/caosdb/server/database/misc/TransactionBenchmark.java index aa26924e63aad19f5079aa4e9fa80656f685b5e4..e0c524ce38f5a587ec0fa9fb0dff41177b60266c 100644 --- a/src/main/java/org/caosdb/server/database/misc/TransactionBenchmark.java +++ b/src/main/java/org/caosdb/server/database/misc/TransactionBenchmark.java @@ -459,8 +459,8 @@ public abstract class TransactionBenchmark implements Serializable { /** * Return a nice String for the StackTraceElement. * - * <p>The String is composed like this: CLASS::METHOD [LINE_NUMBER], with "caosdb.server." removed - * from the class name. + * <p>The String is composed like this: CLASS::METHOD [LINE_NUMBER], with "org.caosdb.server." + * removed from the class name. */ private static String prettifyStackTraceElement(final StackTraceElement ste) { return ste.getClassName().replaceFirst("caosdb\\.server\\.", "") diff --git a/src/main/java/org/caosdb/server/datatype/AbstractDatatype.java b/src/main/java/org/caosdb/server/datatype/AbstractDatatype.java index 53ffdb0b45d2ab70db1cb0af5b2c8674ec5deb0b..8dd9c22df4441db8b0fe882f613eb742106c983b 100644 --- a/src/main/java/org/caosdb/server/datatype/AbstractDatatype.java +++ b/src/main/java/org/caosdb/server/datatype/AbstractDatatype.java @@ -86,7 +86,7 @@ public abstract class AbstractDatatype { } private static void loadClasses() throws Exception { - final Reflections datatypePackage = new Reflections("caosdb.server.datatype"); + final Reflections datatypePackage = new Reflections("org.caosdb.server.datatype"); for (final Class<? extends AbstractDatatype> c : datatypePackage.getSubTypesOf(AbstractDatatype.class)) { if (c.isAnnotationPresent(DatatypeDefinition.class)) { diff --git a/src/main/java/org/caosdb/server/entity/FileProperties.java b/src/main/java/org/caosdb/server/entity/FileProperties.java index b95cfec33ed29d643852fb3a76bb92c1e61d873f..0c10288e0cbaa6a4f55a2959f72ac09db9d6f394 100644 --- a/src/main/java/org/caosdb/server/entity/FileProperties.java +++ b/src/main/java/org/caosdb/server/entity/FileProperties.java @@ -220,10 +220,10 @@ public class FileProperties { if (file.getAbsolutePath().startsWith(FileSystem.getBasepath())) { final Undoable d; final File parent = file.getParentFile(); - if (file.getCanonicalPath().startsWith(FileSystem.getBasepath())) { - d = FileUtils.delete(file, file.isDirectory()); - } else if (FileUtils.isSymlink(file)) { + if (FileUtils.isSymlink(file)) { d = FileUtils.unlink(file); + } else if (file.getCanonicalPath().startsWith(FileSystem.getBasepath())) { + d = FileUtils.delete(file, file.isDirectory()); } else { throw new CaosDBException( "File is in Filesystem, but it is neither a normal file nor a symlink."); diff --git a/src/main/java/org/caosdb/server/jobs/Job.java b/src/main/java/org/caosdb/server/jobs/Job.java index 1e5665524a455d8f2983e61c64ca8d7caecaaf72..d1e3fef39fcd6a2fb5175e4dd396686bcf773b4e 100644 --- a/src/main/java/org/caosdb/server/jobs/Job.java +++ b/src/main/java/org/caosdb/server/jobs/Job.java @@ -259,7 +259,7 @@ public abstract class Job extends AbstractObservable implements Observer { if (allClasses == null || loadAlways == null) { allClasses = new HashMap<>(); loadAlways = new ArrayList<>(); - Reflections jobPackage = new Reflections("caosdb.server.jobs.core"); + Reflections jobPackage = new Reflections("org.caosdb.server.jobs.core"); Set<Class<? extends Job>> allClassesSet = jobPackage.getSubTypesOf(Job.class); allClassesSet.addAll(jobPackage.getSubTypesOf(FlagJob.class)); for (final Class<? extends Job> c : allClassesSet) { @@ -275,7 +275,7 @@ public abstract class Job extends AbstractObservable implements Observer { } } // TODO merge these two parts of this function. Its the same! - jobPackage = new Reflections("caosdb.server.jobs.extension"); + jobPackage = new Reflections("org.caosdb.server.jobs.extension"); allClassesSet = jobPackage.getSubTypesOf(Job.class); for (final Class<? extends Job> c : allClassesSet) { allClasses.put(c.getSimpleName().toLowerCase(), c); diff --git a/src/main/java/org/caosdb/server/transaction/ChecksumUpdater.java b/src/main/java/org/caosdb/server/transaction/ChecksumUpdater.java index 1d8bb44c1febdbf2722b5b33e2d1052ec37b0424..b9d350719f13b5bd26e44f7d2b959a428adf5793 100644 --- a/src/main/java/org/caosdb/server/transaction/ChecksumUpdater.java +++ b/src/main/java/org/caosdb/server/transaction/ChecksumUpdater.java @@ -29,7 +29,7 @@ import org.caosdb.server.database.DatabaseMonitor; import org.caosdb.server.database.access.Access; import org.caosdb.server.database.backend.transaction.GetUpdateableChecksums; import org.caosdb.server.database.backend.transaction.RetrieveSparseEntity; -import org.caosdb.server.database.backend.transaction.UpdateSparseEntity; +import org.caosdb.server.database.backend.transaction.SetFileChecksum; import org.caosdb.server.database.exceptions.TransactionException; import org.caosdb.server.entity.EntityInterface; import org.caosdb.server.entity.FileProperties; @@ -46,6 +46,7 @@ import org.caosdb.server.utils.FileUtils; public class ChecksumUpdater extends WriteTransaction<TransactionContainer> implements Runnable { private Boolean running = false; + private static final ChecksumUpdater instance = new ChecksumUpdater(); private ChecksumUpdater() { @@ -85,7 +86,7 @@ public class ChecksumUpdater extends WriteTransaction<TransactionContainer> impl DatabaseMonitor.getInstance().acquireStrongAccess(this); // update - execute(new UpdateSparseEntity(fileEntity), strongAccess); + execute(new SetFileChecksum(fileEntity), strongAccess); strongAccess.commit(); } catch (final InterruptedException e) { @@ -145,6 +146,7 @@ public class ChecksumUpdater extends WriteTransaction<TransactionContainer> impl } } catch (final Exception e) { e.printStackTrace(); + instance.running = false; return null; } finally { weakAccess.release(); diff --git a/src/main/java/org/caosdb/server/utils/AsynchronousHasher.java b/src/main/java/org/caosdb/server/utils/AsynchronousHasher.java index b7f89f84dcf66c93a3025ac625fb962a1be1671c..47dad864835e8c370ddef31988205a113665b6c1 100644 --- a/src/main/java/org/caosdb/server/utils/AsynchronousHasher.java +++ b/src/main/java/org/caosdb/server/utils/AsynchronousHasher.java @@ -21,7 +21,7 @@ package org.caosdb.server.utils; * * ** end header */ -// package caosdb.server.utils; +// package org.caosdb.server.utils; // // import java.io.File; // diff --git a/src/main/java/org/caosdb/server/utils/FlagInfo.java b/src/main/java/org/caosdb/server/utils/FlagInfo.java index 9ddd131f4c219cbb98b860d77fd49e76d375a7ab..164c6aabe9c4fafff26f93db30d791fa91389eee 100644 --- a/src/main/java/org/caosdb/server/utils/FlagInfo.java +++ b/src/main/java/org/caosdb/server/utils/FlagInfo.java @@ -38,7 +38,7 @@ public class FlagInfo { public static ArrayList<JobAnnotation> scan() { final ArrayList<JobAnnotation> as = new ArrayList<JobAnnotation>(); - final Reflections jobPackage = new Reflections("caosdb.server.jobs.core"); + final Reflections jobPackage = new Reflections("org.caosdb.server.jobs.core"); final Set<Class<? extends FlagJob>> allClassesSet = jobPackage.getSubTypesOf(FlagJob.class); for (final Class<? extends Job> c : allClassesSet) { for (final Annotation a : c.getAnnotations()) { diff --git a/src/main/java/org/caosdb/server/utils/ObservableWrapper.java b/src/main/java/org/caosdb/server/utils/ObservableWrapper.java index fa44bce9f003adae4ccba4bc364d5ed2e61f5de1..9a1833db95220919102b7ec434971ce9057d86dd 100644 --- a/src/main/java/org/caosdb/server/utils/ObservableWrapper.java +++ b/src/main/java/org/caosdb/server/utils/ObservableWrapper.java @@ -21,7 +21,7 @@ package org.caosdb.server.utils; * * ** end header */ -// package caosdb.server.utils; +// package org.caosdb.server.utils; // // // public class ObservableWrapper<T> extends AbstractObservable { diff --git a/src/test/java/org/caosdb/server/logging/TestLogging.java b/src/test/java/org/caosdb/server/logging/TestLogging.java index 577222dee61759017d1a13fafd390a6e0f7850ed..f1a130ad09c0eca378560b500fc38344df279f17 100644 --- a/src/test/java/org/caosdb/server/logging/TestLogging.java +++ b/src/test/java/org/caosdb/server/logging/TestLogging.java @@ -32,7 +32,7 @@ public class TestLogging { logger.info("info"); logger.debug("debug"); logger.trace("trace"); - Assert.assertEquals(logger.getName(), "caosdb.server.logging.TestLogging"); + Assert.assertEquals(logger.getName(), "org.caosdb.server.logging.TestLogging"); Assert.assertTrue(logger.isErrorEnabled()); Assert.assertTrue(logger.isWarnEnabled()); Assert.assertTrue(logger.isInfoEnabled()); diff --git a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java index a2f6646b3a450e2cf3328692cd109eaaed49f87c..1dcf71d8f330ab6807e65bd23022138e941fca1c 100644 --- a/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java +++ b/src/test/java/org/caosdb/server/resource/TestAbstractCaosDBServerResource.java @@ -145,7 +145,7 @@ public class TestAbstractCaosDBServerResource { + "defaultRealm = PAM\n" + "\n" + "[PAM]\n" - + "class = caosdb.server.accessControl.Pam\n" + + "class = org.caosdb.server.accessControl.Pam\n" + "default_status = ACTIVE\n" + "include.user = admin\n" + ";include.group = [uncomment and put your groups here]\n" diff --git a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java index f016f59191f6d9449cc4a4dc9ef3e84075205a0a..8dbbd5b1ec25843c3a5b28d46a2fa784f169330d 100644 --- a/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java +++ b/src/test/java/org/caosdb/server/resource/TestSharedFileResource.java @@ -198,7 +198,7 @@ public class TestSharedFileResource { + "defaultRealm = PAM\n" + "\n" + "[PAM]\n" - + "class = caosdb.server.accessControl.Pam\n" + + "class = org.caosdb.server.accessControl.Pam\n" + "default_status = ACTIVE\n" + "include.user = admin\n" + ";include.group = [uncomment and put your groups here]\n"