X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FFirstInit.java;h=98c2483cca13f4490caacea4019de2dfd223583c;hb=2980adcfb0c8778426cd0f2176b86ba00e9697ab;hp=78eb68289647de357e15ac70c8a1df8aeef0696e;hpb=6decc943ce5bca1b57ef407b7e9c6bb6ad6f3c97;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java index 78eb68289..98c2483cc 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/FirstInit.java @@ -22,10 +22,10 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; +import org.argeo.cms.internal.http.HttpConstants; import org.argeo.cms.internal.jcr.RepoConf; import org.argeo.node.NodeConstants; import org.argeo.osgi.useradmin.UserAdminConf; -import org.eclipse.equinox.http.jetty.JettyConstants; /** * Interprets framework properties in order to generate the initial deploy @@ -56,35 +56,35 @@ class FirstInit { String httpPort = getFrameworkProp("org.osgi.service.http.port"); String httpsPort = getFrameworkProp("org.osgi.service.http.port.secure"); /// TODO make it more generic - String httpHost = getFrameworkProp(JettyConstants.PROPERTY_PREFIX + '.' + JettyConstants.HTTP_HOST); - String httpsHost = getFrameworkProp(JettyConstants.PROPERTY_PREFIX + '.' + JettyConstants.HTTPS_HOST); + String httpHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTP_HOST); + String httpsHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTPS_HOST); final Hashtable props = new Hashtable(); // try { if (httpPort != null || httpsPort != null) { if (httpPort != null) { - props.put(JettyConstants.HTTP_PORT, httpPort); - props.put(JettyConstants.HTTP_ENABLED, true); + props.put(HttpConstants.HTTP_PORT, httpPort); + props.put(HttpConstants.HTTP_ENABLED, true); } if (httpsPort != null) { - props.put(JettyConstants.HTTPS_PORT, httpsPort); - props.put(JettyConstants.HTTPS_ENABLED, true); + props.put(HttpConstants.HTTPS_PORT, httpsPort); + props.put(HttpConstants.HTTPS_ENABLED, true); Path keyStorePath = KernelUtils.getOsgiInstancePath(KernelConstants.DEFAULT_KEYSTORE_PATH); String keyStorePassword = getFrameworkProp( - JettyConstants.PROPERTY_PREFIX + '.' + JettyConstants.SSL_PASSWORD); + HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.SSL_PASSWORD); if (keyStorePassword == null) keyStorePassword = "changeit"; if (!Files.exists(keyStorePath)) - createSelfSignedKeyStore(keyStorePath); - props.put(JettyConstants.SSL_KEYSTORETYPE, "PKCS12"); - props.put(JettyConstants.SSL_KEYSTORE, keyStorePath.toString()); - props.put(JettyConstants.SSL_PASSWORD, keyStorePassword); - props.put(JettyConstants.SSL_WANTCLIENTAUTH, true); + createSelfSignedKeyStore(keyStorePath, keyStorePassword); + props.put(HttpConstants.SSL_KEYSTORETYPE, "PKCS12"); + props.put(HttpConstants.SSL_KEYSTORE, keyStorePath.toString()); + props.put(HttpConstants.SSL_PASSWORD, keyStorePassword); + props.put(HttpConstants.SSL_WANTCLIENTAUTH, true); } if (httpHost != null) - props.put(JettyConstants.HTTP_HOST, httpHost); + props.put(HttpConstants.HTTP_HOST, httpHost); if (httpsHost != null) - props.put(JettyConstants.HTTPS_HOST, httpHost); + props.put(HttpConstants.HTTPS_HOST, httpHost); props.put(NodeConstants.CN, NodeConstants.DEFAULT); } @@ -100,7 +100,8 @@ class FirstInit { String nodeRolesUri = getFrameworkProp(NodeConstants.ROLES_URI); String baseNodeRoleDn = NodeConstants.ROLES_BASEDN; if (nodeRolesUri == null) { - File nodeRolesFile = new File(nodeBaseDir, baseNodeRoleDn + ".ldif"); + nodeRolesUri = baseNodeRoleDn + ".ldif"; + File nodeRolesFile = new File(nodeBaseDir, nodeRolesUri); if (!nodeRolesFile.exists()) try { FileUtils.copyInputStreamToFile(getClass().getResourceAsStream(baseNodeRoleDn + ".ldif"), @@ -108,25 +109,26 @@ class FirstInit { } catch (IOException e) { throw new CmsException("Cannot copy demo resource", e); } - nodeRolesUri = nodeRolesFile.toURI().toString(); + // nodeRolesUri = nodeRolesFile.toURI().toString(); } uris.add(nodeRolesUri); // Business roles String userAdminUris = getFrameworkProp(NodeConstants.USERADMIN_URIS); if (userAdminUris == null) { - String demoBaseDn = "dc=example,dc=com"; - File businessRolesFile = new File(nodeBaseDir, demoBaseDn + ".ldif"); - if (!businessRolesFile.exists()) - try { - FileUtils.copyInputStreamToFile(getClass().getResourceAsStream(demoBaseDn + ".ldif"), - businessRolesFile); - } catch (IOException e) { - throw new CmsException("Cannot copy demo resource", e); - } - userAdminUris = businessRolesFile.toURI().toString(); - log.warn("## DEV Using dummy base DN " + demoBaseDn); - // TODO downgrade security level + String demoBaseDn = "dc=example,dc=com"; + userAdminUris = demoBaseDn + ".ldif"; + File businessRolesFile = new File(nodeBaseDir, userAdminUris); + if (!businessRolesFile.exists()) + try { + FileUtils.copyInputStreamToFile(getClass().getResourceAsStream(demoBaseDn + ".ldif"), + businessRolesFile); + } catch (IOException e) { + throw new CmsException("Cannot copy demo resource", e); + } + // userAdminUris = businessRolesFile.toURI().toString(); + log.warn("## DEV Using dummy base DN " + demoBaseDn); + // TODO downgrade security level } for (String userAdminUri : userAdminUris.split(" ")) uris.add(userAdminUri); @@ -142,11 +144,11 @@ class FirstInit { if (uri.startsWith("/") || uri.startsWith("./") || uri.startsWith("../")) u = new File(uri).getCanonicalFile().toURI(); else if (!uri.contains("/")) { - u = KernelUtils.getOsgiInstanceUri(KernelConstants.DIR_NODE + '/' + uri); - // u = new URI(nodeBaseDir.toURI() + uri); + // u = KernelUtils.getOsgiInstanceUri(KernelConstants.DIR_NODE + '/' + uri); + u = new URI(uri); } else throw new CmsException("Cannot interpret " + uri + " as an uri"); - } else if (u.getScheme().equals("file")) { + } else if (u.getScheme().equals(UserAdminConf.SCHEME_FILE)) { u = new File(u).getCanonicalFile().toURI(); } } catch (Exception e) { @@ -158,10 +160,10 @@ class FirstInit { return res; } - + /** - * Called before node initialisation, in order populate OSGi instance are - * with some files (typically LDIF, etc). + * Called before node initialisation, in order populate OSGi instance are with + * some files (typically LDIF, etc). */ static void prepareInstanceArea() { String nodeInit = getFrameworkProp(NodeConstants.NODE_INIT); @@ -196,11 +198,11 @@ class FirstInit { } } - private void createSelfSignedKeyStore(Path keyStorePath) { + private void createSelfSignedKeyStore(Path keyStorePath, String keyStorePassword) { // for (Provider provider : Security.getProviders()) // System.out.println(provider.getName()); File keyStoreFile = keyStorePath.toFile(); - char[] ksPwd = "changeit".toCharArray(); + char[] ksPwd = keyStorePassword.toCharArray(); char[] keyPwd = Arrays.copyOf(ksPwd, ksPwd.length); if (!keyStoreFile.exists()) { try {