Improve demo initialisation.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / InitUtils.java
index 8a22b480f0106f22861f4bfe2a63695ef54054d0..ef6a267c6e85150c1e566905412ec8066436537d 100644 (file)
@@ -68,6 +68,8 @@ class InitUtils {
                /// TODO make it more generic
                String httpHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTP_HOST);
                String httpsHost = getFrameworkProp(HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.HTTPS_HOST);
+               String webSocketEnabled = getFrameworkProp(
+                               HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.WEB_SOCKET_ENABLED);
 
                final Hashtable<String, Object> props = new Hashtable<String, Object>();
                // try {
@@ -90,12 +92,21 @@ class InitUtils {
                                props.put(HttpConstants.SSL_KEYSTORE, keyStorePath.toString());
                                props.put(HttpConstants.SSL_PASSWORD, keyStorePassword);
                                props.put(HttpConstants.SSL_WANTCLIENTAUTH, true);
+                               String needClientAuth = getFrameworkProp(
+                                               HttpConstants.JETTY_PROPERTY_PREFIX + HttpConstants.SSL_NEEDCLIENTAUTH);
+                               if (needClientAuth != null) {
+                                       props.put(HttpConstants.SSL_NEEDCLIENTAUTH, Boolean.parseBoolean(needClientAuth));
+                               }
                        }
                        if (httpHost != null)
                                props.put(HttpConstants.HTTP_HOST, httpHost);
                        if (httpsHost != null)
                                props.put(HttpConstants.HTTPS_HOST, httpHost);
 
+                       if (webSocketEnabled != null)
+                               if (webSocketEnabled.equals("true"))
+                                       props.put(HttpConstants.WEB_SOCKET_ENABLED, true);
+
                        props.put(NodeConstants.CN, NodeConstants.DEFAULT);
                }
                return props;
@@ -123,18 +134,38 @@ class InitUtils {
                }
                uris.add(nodeRolesUri);
 
+               // node tokens
+               String nodeTokensUri = getFrameworkProp(NodeConstants.TOKENS_URI);
+               String baseNodeTokensDn = NodeConstants.TOKENS_BASEDN;
+               if (nodeTokensUri == null) {
+                       nodeTokensUri = baseNodeTokensDn + ".ldif";
+                       File nodeRolesFile = new File(nodeBaseDir, nodeRolesUri);
+                       if (!nodeRolesFile.exists())
+                               try {
+                                       FileUtils.copyInputStreamToFile(InitUtils.class.getResourceAsStream(baseNodeTokensDn + ".ldif"),
+                                                       nodeRolesFile);
+                               } catch (IOException e) {
+                                       throw new CmsException("Cannot copy demo resource", e);
+                               }
+                       // nodeRolesUri = nodeRolesFile.toURI().toString();
+               }
+               uris.add(nodeTokensUri);
+
                // Business roles
                String userAdminUris = getFrameworkProp(NodeConstants.USERADMIN_URIS);
                if (userAdminUris == null) {
                        String demoBaseDn = "dc=example,dc=com";
                        userAdminUris = demoBaseDn + ".ldif";
                        File businessRolesFile = new File(nodeBaseDir, userAdminUris);
+                       File systemRolesFile = new File(nodeBaseDir, "ou=roles,ou=node.ldif");
                        if (!businessRolesFile.exists())
                                try {
                                        FileUtils.copyInputStreamToFile(InitUtils.class.getResourceAsStream(demoBaseDn + ".ldif"),
                                                        businessRolesFile);
+                                       FileUtils.copyInputStreamToFile(
+                                                       InitUtils.class.getResourceAsStream("example-ou=roles,ou=node.ldif"), systemRolesFile);
                                } catch (IOException e) {
-                                       throw new CmsException("Cannot copy demo resource", e);
+                                       throw new CmsException("Cannot copy demo resources", e);
                                }
                        // userAdminUris = businessRolesFile.toURI().toString();
                        log.warn("## DEV Using dummy base DN " + demoBaseDn);