protected void requireRunningServer() throws UserException { if (serviceMap.getBimServer().getServerInfo().getServerState() != ServerState.RUNNING) { throw new UserException("Call cannot be executed because the server is in " + serviceMap.getBimServer().getServerInfo().getServerState() + " mode"); } }
try { bimServer.start(); if (bimServer.getServerInfo().getServerState() == ServerState.MIGRATION_REQUIRED) { bimServer.getServerInfoManager().registerStateChangeListener(new StateChangeListener() { @Override } else if (bimServer.getServerInfo().getServerState() == ServerState.RUNNING) { long start = System.nanoTime(); LOGGER.info("Loading plugins..."); long end = System.nanoTime(); LOGGER.info("All plugins loaded (" + ((end - start) / 1000000) + " ms)"); } else if (bimServer.getServerInfo().getServerState() == ServerState.NOT_SETUP) { LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), pluginDirectories); if (autoSetup) {
@Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getHeader("Origin") != null && (getBimServer().getServerInfo().getServerState() != ServerState.MIGRATION_REQUIRED && !getBimServer().getServerSettingsCache().isHostAllowed(request.getHeader("Origin")))) { response.setStatus(403); return; } response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Headers", "Content-Type"); response.setCharacterEncoding("UTF-8"); try { ServletInputStream inputStream = request.getInputStream(); byte[] bytes = IOUtils.toByteArray(inputStream); // Not streaming here, because we want to be able to show the request-data when it's not valid if (LOGGER.isDebugEnabled()) { LOGGER.debug("Incoming JSON " + new String(bytes, Charsets.UTF_8)); } ObjectNode parse = OBJECT_MAPPER.readValue(new ByteArrayInputStream(bytes), ObjectNode.class); if (parse instanceof ObjectNode) { ObjectNode jsonRequest = (ObjectNode) parse; response.setHeader("Content-Type", "application/json"); getBimServer().getJsonHandler().execute(jsonRequest, request, response.getWriter()); } else { LOGGER.error("Invalid JSON request: " + new String(bytes, Charsets.UTF_8)); response.setStatus(500); } } catch (IOException e) { LOGGER.error("", e); response.setStatus(500); } } }
@Override public SServerInfo getServerInfo() { return getBimServer().getSConverter().convertToSObject(getBimServer().getServerInfo()); }
@Override public void setSiteAddress(final String siteAddress) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } if (siteAddress.trim().isEmpty()) { throw new UserException("Site Address cannot be empty"); } else if (!siteAddress.startsWith("http://") && !(siteAddress.startsWith("https://"))) { throw new UserException("Site Address must start with either \"http://\" or \"https://\""); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setSiteAddress(siteAddress); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } }
LocalDevPluginLoader.loadPlugins(bimServer.getPluginManager(), pluginDirectories); bimServer.start(); if (bimServer.getServerInfo().getServerState() == ServerState.NOT_SETUP) { AdminInterface adminInterface = bimServer.getServiceFactory().get(new SystemAuthorization(1, TimeUnit.HOURS), AccessMethod.INTERNAL).get(AdminInterface.class); adminInterface.setup("http://localhost:" + port, "Administrator", "admin@bimserver.org", "admin", null, null, null);
@Override public void setEmailSenderAddress(final String emailSenderAddress) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } if (emailSenderAddress.trim().isEmpty()) { throw new UserException("Email sender address cannot be empty"); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setEmailSenderAddress(emailSenderAddress); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } }
@Override public void setSmtpServer(final String smtpServer) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } if (smtpServer.trim().isEmpty()) { throw new UserException("SMTP server address cannot be empty"); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setSmtpServer(smtpServer); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } }
@Override public void setServerName(final String serverName) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setName(serverName); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } }
@Override public void setServerDescription(final String serverDescription) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setDescription(serverDescription); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } }
@Override public void setServerIcon(final String serverIcon) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingDatabaseAction action = new SetServerSettingDatabaseAction(getBimServer(), session, getInternalAccessMethod(), new ServerSettingsSetter() { @Override public void set(ServerSettings serverSettings) { serverSettings.setIcon(serverIcon); } }); session.executeAndCommitAction(action); } catch (BimserverDatabaseException e) { handleException(e); } finally { session.close(); } } }
@Override public void setServerSettings(SServerSettings serverSettings) throws ServerException, UserException { if (getBimServer().getServerInfo().getServerState() != ServerState.NOT_SETUP) { requireAdminAuthentication(); } DatabaseSession session = getBimServer().getDatabase().createSession(); try { SetServerSettingsDatabaseAction action = new SetServerSettingsDatabaseAction(session, getInternalAccessMethod(), serverSettings); session.executeAndCommitAction(action); getBimServer().getServerSettingsCache().updateCache(); } catch (Exception e) { handleException(e); } finally { session.close(); } }