diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java index 2134734103c64dfcb21de7836c735117091a0062..da1cf4541ae9b7da944a0ea36698d088060f4e7c 100644 --- a/src/main/java/caosdb/server/CaosDBServer.java +++ b/src/main/java/caosdb/server/CaosDBServer.java @@ -19,6 +19,50 @@ */ package caosdb.server; +import caosdb.server.accessControl.AnonymousRealm; +import caosdb.server.accessControl.AuthenticationUtils; +import caosdb.server.accessControl.CaosDBAuthorizingRealm; +import caosdb.server.accessControl.CaosDBDefaultRealm; +import caosdb.server.accessControl.OneTimeAuthenticationToken; +import caosdb.server.accessControl.SessionToken; +import caosdb.server.accessControl.SessionTokenRealm; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.transaction.RetrieveDatatypes; +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.datatype.AbstractDatatype; +import caosdb.server.entity.EntityInterface; +import caosdb.server.entity.Role; +import caosdb.server.entity.container.Container; +import caosdb.server.logging.RequestErrorLogMessage; +import caosdb.server.resource.AuthenticationResource; +import caosdb.server.resource.DefaultResource; +import caosdb.server.resource.EntityOwnerResource; +import caosdb.server.resource.EntityPermissionsResource; +import caosdb.server.resource.FileSystemResource; +import caosdb.server.resource.InfoResource; +import caosdb.server.resource.LogoutResource; +import caosdb.server.resource.PermissionRulesResource; +import caosdb.server.resource.RolesResource; +import caosdb.server.resource.ScriptingResource; +import caosdb.server.resource.ServerLogsResource; +import caosdb.server.resource.ServerPropertiesResource; +import caosdb.server.resource.SharedFileResource; +import caosdb.server.resource.ThumbnailsResource; +import caosdb.server.resource.UserResource; +import caosdb.server.resource.UserRolesResource; +import caosdb.server.resource.Webinterface; +import caosdb.server.resource.WebinterfaceBuildNumber; +import caosdb.server.resource.transaction.EntityNamesResource; +import caosdb.server.resource.transaction.EntityResource; +import caosdb.server.terminal.CaosDBTerminal; +import caosdb.server.terminal.StatsPanel; +import caosdb.server.terminal.SystemErrPanel; +import caosdb.server.transaction.ChecksumUpdater; +import caosdb.server.utils.FileUtils; +import caosdb.server.utils.Initialization; +import caosdb.server.utils.NullPrintStream; +import caosdb.server.utils.Utils; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; @@ -66,50 +110,6 @@ import org.restlet.routing.Variable; import org.restlet.util.Series; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import caosdb.server.accessControl.AnonymousRealm; -import caosdb.server.accessControl.AuthenticationUtils; -import caosdb.server.accessControl.CaosDBAuthorizingRealm; -import caosdb.server.accessControl.CaosDBDefaultRealm; -import caosdb.server.accessControl.OneTimeAuthenticationToken; -import caosdb.server.accessControl.SessionToken; -import caosdb.server.accessControl.SessionTokenRealm; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.transaction.RetrieveDatatypes; -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.datatype.AbstractDatatype; -import caosdb.server.entity.EntityInterface; -import caosdb.server.entity.Role; -import caosdb.server.entity.container.Container; -import caosdb.server.logging.RequestErrorLogMessage; -import caosdb.server.resource.AuthenticationResource; -import caosdb.server.resource.DefaultResource; -import caosdb.server.resource.EntityOwnerResource; -import caosdb.server.resource.EntityPermissionsResource; -import caosdb.server.resource.FileSystemResource; -import caosdb.server.resource.InfoResource; -import caosdb.server.resource.LogoutResource; -import caosdb.server.resource.PermissionRulesResource; -import caosdb.server.resource.RolesResource; -import caosdb.server.resource.ScriptingResource; -import caosdb.server.resource.ServerLogsResource; -import caosdb.server.resource.ServerPropertiesResource; -import caosdb.server.resource.SharedFileResource; -import caosdb.server.resource.ThumbnailsResource; -import caosdb.server.resource.UserResource; -import caosdb.server.resource.UserRolesResource; -import caosdb.server.resource.Webinterface; -import caosdb.server.resource.WebinterfaceBuildNumber; -import caosdb.server.resource.transaction.EntityNamesResource; -import caosdb.server.resource.transaction.EntityResource; -import caosdb.server.terminal.CaosDBTerminal; -import caosdb.server.terminal.StatsPanel; -import caosdb.server.terminal.SystemErrPanel; -import caosdb.server.transaction.ChecksumUpdater; -import caosdb.server.utils.FileUtils; -import caosdb.server.utils.Initialization; -import caosdb.server.utils.NullPrintStream; -import caosdb.server.utils.Utils; public class CaosDBServer extends Application { @@ -246,72 +246,69 @@ public class CaosDBServer extends Application { "securityManager.subjectDAO.sessionStorageEvaluator.sessionStorageEnabled", "false"); return config; } - - + public static void initShiro(Ini config) { BasicIniEnvironment env = new BasicIniEnvironment(config); final SecurityManager securityManager = env.getSecurityManager(); SecurityUtils.setSecurityManager(securityManager); } - + public static void initShiro() { // init Shiro (user authentication/authorization and session management) final Ini config = getShiroConfig(); initShiro(config); } - + public static void initBackend() throws Exception { if (START_BACKEND) { - try (final Initialization init = Initialization.setUp()){ - BackendTransaction.init(); + try (final Initialization init = Initialization.setUp()) { + BackendTransaction.init(); - // init benchmark - TransactionBenchmark.getRootInstance(); + // init benchmark + TransactionBenchmark.getRootInstance(); - // Role - Role.init(init.getAccess()); + // Role + Role.init(init.getAccess()); - // Data types - initDatatypes(init.getAccess()); + // Data types + initDatatypes(init.getAccess()); - // check for chown script - FileUtils.testChownScript(); + // check for chown script + FileUtils.testChownScript(); - // ChecksumUpdater - ChecksumUpdater.start(); - } + // ChecksumUpdater + ChecksumUpdater.start(); + } } else { logger.info("NO BACKEND"); } } - - public static void initGUI() throws InterruptedException { - if (START_GUI) { - final CaosDBTerminal caosDBTerminal = new CaosDBTerminal(); - caosDBTerminal.setName("CaosDBTerminal"); - caosDBTerminal.start(); - addPreShutdownHook( - new Runnable() { + public static void initGUI() throws InterruptedException { + if (START_GUI) { + final CaosDBTerminal caosDBTerminal = new CaosDBTerminal(); + caosDBTerminal.setName("CaosDBTerminal"); + caosDBTerminal.start(); + + addPreShutdownHook( + new Runnable() { + + @Override + public void run() { + caosDBTerminal.shutDown(); + SystemErrPanel.close(); + } + }); + // wait until the terminal is initialized. + Thread.sleep(1000); - @Override - public void run() { - caosDBTerminal.shutDown(); - SystemErrPanel.close(); - } - }); - // wait until the terminal is initialized. - Thread.sleep(1000); - - // add Benchmark - StatsPanel.addStat("TransactionBenchmark", TransactionBenchmark.getRootInstance()); - } else { - logger.info("NO GUI"); - System.setOut(new NullPrintStream()); - } + // add Benchmark + StatsPanel.addStat("TransactionBenchmark", TransactionBenchmark.getRootInstance()); + } else { + logger.info("NO GUI"); + System.setOut(new NullPrintStream()); + } } - - /** * This main method starts up a web application that will listen on a port defined in the config @@ -360,14 +357,12 @@ public class CaosDBServer extends Application { final int maxTotalConnections = Integer.parseInt(getServerProperty(ServerProperties.KEY_MAX_CONNECTIONS)); - if (INSECURE) { runHTTPServer(port_http, initialConnections, maxTotalConnections); } else { runHTTPSServer( port_https, port_http, port_redirect_https, initialConnections, maxTotalConnections); } - } private static void initScheduler() throws SchedulerException { diff --git a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java index 615a6447ba69bb3eba2ec9b43894924f08bf4e0d..d7ea7d210e2854ac1cebb4e2446bff21ffb5ed2a 100644 --- a/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java +++ b/src/main/java/caosdb/server/accessControl/AuthenticationUtils.java @@ -23,6 +23,12 @@ package caosdb.server.accessControl; import static caosdb.server.utils.Utils.URLDecodeWithUTF8; + +import caosdb.server.CaosDBServer; +import caosdb.server.ServerProperties; +import caosdb.server.permissions.ResponsibleAgent; +import caosdb.server.permissions.Role; +import caosdb.server.utils.Utils; import java.sql.Timestamp; import java.util.Collection; import java.util.LinkedList; @@ -30,11 +36,6 @@ import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.subject.Subject; import org.restlet.data.Cookie; import org.restlet.data.CookieSetting; -import caosdb.server.CaosDBServer; -import caosdb.server.ServerProperties; -import caosdb.server.permissions.ResponsibleAgent; -import caosdb.server.permissions.Role; -import caosdb.server.utils.Utils; /** * Useful static methods, mainly for parsing and serializing SessionTokens by the means of web diff --git a/src/main/java/caosdb/server/terminal/CaosDBTerminal.java b/src/main/java/caosdb/server/terminal/CaosDBTerminal.java index 02b9465cecfc816b7e76da60495bdee44c40debc..c85495539d93d67af26b1b1ef4b62a35dd57ff48 100644 --- a/src/main/java/caosdb/server/terminal/CaosDBTerminal.java +++ b/src/main/java/caosdb/server/terminal/CaosDBTerminal.java @@ -22,13 +22,13 @@ */ package caosdb.server.terminal; -import java.nio.charset.Charset; import com.googlecode.lanterna.TerminalFacade; import com.googlecode.lanterna.gui.GUIScreen; import com.googlecode.lanterna.gui.GUIScreen.Position; import com.googlecode.lanterna.screen.Screen; import com.googlecode.lanterna.terminal.Terminal; import com.googlecode.lanterna.terminal.text.UnixTerminal; +import java.nio.charset.Charset; /** * @deprecated Soon to be removed diff --git a/src/main/java/caosdb/server/utils/FileUtils.java b/src/main/java/caosdb/server/utils/FileUtils.java index 00f243bcff6d84a276892b3363665b8e3bb1cc9e..2357b7217c0fa9b112dd6c9e45d5be64d36edefb 100644 --- a/src/main/java/caosdb/server/utils/FileUtils.java +++ b/src/main/java/caosdb/server/utils/FileUtils.java @@ -25,6 +25,13 @@ package caosdb.server.utils; import static java.nio.file.Files.isSameFile; import static java.nio.file.Files.isSymbolicLink; import static java.nio.file.Files.readSymbolicLink; + +import caosdb.server.CaosDBException; +import caosdb.server.CaosDBServer; +import caosdb.server.FileSystem; +import caosdb.server.ServerProperties; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.entity.Message; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -37,12 +44,6 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import org.eclipse.jetty.io.RuntimeIOException; -import caosdb.server.CaosDBException; -import caosdb.server.CaosDBServer; -import caosdb.server.FileSystem; -import caosdb.server.ServerProperties; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.entity.Message; public class FileUtils { diff --git a/src/main/java/caosdb/server/utils/Initialization.java b/src/main/java/caosdb/server/utils/Initialization.java index 6e1266f87dd6558bd55351d2963133b7a7bb3407..e6d0662e525d920a5496a042b04213c86c5e8c0a 100644 --- a/src/main/java/caosdb/server/utils/Initialization.java +++ b/src/main/java/caosdb/server/utils/Initialization.java @@ -53,5 +53,4 @@ public final class Initialization implements TransactionInterface, AutoCloseable this.access = null; } } - } diff --git a/src/test/java/caosdb/server/Misc.java b/src/test/java/caosdb/server/Misc.java index 222a0b9db84efa97dcb93fc92e583309af5b9f75..2988bae6aa178ace45f41e03da5c54f08114e485 100644 --- a/src/test/java/caosdb/server/Misc.java +++ b/src/test/java/caosdb/server/Misc.java @@ -26,6 +26,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; + +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.jobs.core.CheckFileStorageConsistency; +import caosdb.server.utils.CronJob; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -41,9 +45,6 @@ import org.junit.BeforeClass; import org.junit.Test; import org.jvnet.libpam.PAMException; import org.jvnet.libpam.UnixUser; -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.jobs.core.CheckFileStorageConsistency; -import caosdb.server.utils.CronJob; public class Misc { @BeforeClass diff --git a/src/test/java/caosdb/server/authentication/AuthTokenTest.java b/src/test/java/caosdb/server/authentication/AuthTokenTest.java index 4a2c2f1cea901b6ab45f49142a55532c7e65a06d..0f5e2e4837a96887871d6ac15c5c971fa7b50b81 100644 --- a/src/test/java/caosdb/server/authentication/AuthTokenTest.java +++ b/src/test/java/caosdb/server/authentication/AuthTokenTest.java @@ -24,19 +24,7 @@ package caosdb.server.authentication; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import org.apache.commons.io.input.CharSequenceInputStream; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.subject.Subject; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; + import caosdb.server.CaosDBServer; import caosdb.server.ServerProperties; import caosdb.server.accessControl.AnonymousAuthenticationToken; @@ -56,6 +44,19 @@ import caosdb.server.resource.TestScriptingResource.RetrievePasswordValidator; import caosdb.server.resource.TestScriptingResource.RetrievePermissionRules; import caosdb.server.resource.TestScriptingResource.RetrieveRole; import caosdb.server.resource.TestScriptingResource.RetrieveUser; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import org.apache.commons.io.input.CharSequenceInputStream; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.subject.Subject; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; public class AuthTokenTest { diff --git a/src/test/java/caosdb/server/resource/TestScriptingResource.java b/src/test/java/caosdb/server/resource/TestScriptingResource.java index 9981273565d97d19e887a995d756a502a325d03a..67a64de84843ac790039bdedda9408009d45eb80 100644 --- a/src/test/java/caosdb/server/resource/TestScriptingResource.java +++ b/src/test/java/caosdb/server/resource/TestScriptingResource.java @@ -23,6 +23,25 @@ package caosdb.server.resource; import static org.junit.Assert.assertEquals; + +import caosdb.server.CaosDBServer; +import caosdb.server.accessControl.AuthenticationUtils; +import caosdb.server.accessControl.CredentialsValidator; +import caosdb.server.accessControl.Principal; +import caosdb.server.accessControl.Role; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; +import caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl; +import caosdb.server.database.backend.interfaces.RetrieveRoleImpl; +import caosdb.server.database.backend.interfaces.RetrieveUserImpl; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.database.misc.TransactionBenchmark; +import caosdb.server.database.proto.ProtoUser; +import caosdb.server.entity.Message; +import caosdb.server.permissions.PermissionRule; +import caosdb.server.scripting.ScriptingPermissions; +import caosdb.server.scripting.ServerSideScriptingCaller; import java.io.IOException; import java.util.Date; import java.util.HashSet; @@ -42,24 +61,6 @@ import org.restlet.data.Reference; import org.restlet.data.Status; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; -import caosdb.server.CaosDBServer; -import caosdb.server.accessControl.AuthenticationUtils; -import caosdb.server.accessControl.CredentialsValidator; -import caosdb.server.accessControl.Principal; -import caosdb.server.accessControl.Role; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; -import caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl; -import caosdb.server.database.backend.interfaces.RetrieveRoleImpl; -import caosdb.server.database.backend.interfaces.RetrieveUserImpl; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.database.misc.TransactionBenchmark; -import caosdb.server.database.proto.ProtoUser; -import caosdb.server.entity.Message; -import caosdb.server.permissions.PermissionRule; -import caosdb.server.scripting.ScriptingPermissions; -import caosdb.server.scripting.ServerSideScriptingCaller; public class TestScriptingResource { diff --git a/src/test/java/caosdb/server/utils/FileUtilsTest.java b/src/test/java/caosdb/server/utils/FileUtilsTest.java index 688b14a85a323c3faba205d6da5dd6a8a40c03b0..e4b2411dc0e77ce0225c0637422c84bbab2cc4aa 100644 --- a/src/test/java/caosdb/server/utils/FileUtilsTest.java +++ b/src/test/java/caosdb/server/utils/FileUtilsTest.java @@ -26,6 +26,19 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; + +import caosdb.server.CaosDBException; +import caosdb.server.CaosDBServer; +import caosdb.server.FileSystem; +import caosdb.server.ServerProperties; +import caosdb.server.database.BackendTransaction; +import caosdb.server.database.access.Access; +import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemGetFileIterator.FileNameIterator; +import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemHelper; +import caosdb.server.database.backend.transaction.FileConsistencyCheck; +import caosdb.server.database.backend.transaction.GetFileIterator; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.entity.Message; import java.io.File; import java.io.IOException; import java.io.PrintStream; @@ -33,6 +46,7 @@ import java.io.PrintWriter; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.regex.Pattern; +import net.jcip.annotations.NotThreadSafe; import org.eclipse.jetty.io.RuntimeIOException; import org.junit.After; import org.junit.AfterClass; @@ -42,19 +56,6 @@ import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import caosdb.server.CaosDBException; -import caosdb.server.CaosDBServer; -import caosdb.server.FileSystem; -import caosdb.server.ServerProperties; -import caosdb.server.database.BackendTransaction; -import caosdb.server.database.access.Access; -import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemGetFileIterator.FileNameIterator; -import caosdb.server.database.backend.implementation.UnixFileSystem.UnixFileSystemHelper; -import caosdb.server.database.backend.transaction.FileConsistencyCheck; -import caosdb.server.database.backend.transaction.GetFileIterator; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.entity.Message; -import net.jcip.annotations.NotThreadSafe; @NotThreadSafe public class FileUtilsTest {