X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsDeployment.java;h=126c591e64befe548823d048b6ad33236b56efee;hb=44728c14306ddf25bb5225496de5f44345fab85d;hp=1d1734d36645664b0bc5adca04183674614daed0;hpb=76a7e65ffa515c0dbd7a5587b29ffc9bba449542;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java index 1d1734d36..126c591e6 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java @@ -21,12 +21,14 @@ import org.apache.commons.logging.LogFactory; import org.apache.jackrabbit.commons.cnd.CndImporter; import org.apache.jackrabbit.core.RepositoryContext; import org.argeo.cms.CmsException; +import org.argeo.cms.internal.http.NodeHttp; import org.argeo.jcr.JcrUtils; import org.argeo.node.DataModelNamespace; import org.argeo.node.NodeConstants; import org.argeo.node.NodeDeployment; import org.argeo.node.NodeState; import org.argeo.node.security.CryptoKeyring; +import org.argeo.osgi.useradmin.UserAdminConf; import org.argeo.util.LangUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; @@ -39,13 +41,12 @@ import org.osgi.framework.wiring.BundleWiring; import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; import org.osgi.service.cm.ManagedService; -import org.osgi.service.http.HttpService; import org.osgi.service.useradmin.UserAdmin; import org.osgi.util.tracker.ServiceTracker; public class CmsDeployment implements NodeDeployment { private final static String LEGACY_JCR_REPOSITORY_ALIAS = "argeo.jcr.repository.alias"; - + private final Log log = LogFactory.getLog(getClass()); private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext(); @@ -55,6 +56,9 @@ public class CmsDeployment implements NodeDeployment { private Long availableSince; private final boolean cleanState; + + private NodeHttp nodeHttp; + // Readiness private boolean nodeAvailable = false; private boolean userAdminAvailable = false; @@ -69,11 +73,20 @@ public class CmsDeployment implements NodeDeployment { NodeState nodeState = bc.getService(nodeStateSr); cleanState = nodeState.isClean(); + nodeHttp = new NodeHttp(); initTrackers(); } private void initTrackers() { - new PrepareHttpStc().open(); + new ServiceTracker(bc, NodeHttp.class, null) { + + @Override + public NodeHttp addingService(ServiceReference reference) { + httpAvailable = true; + checkReadiness(); + return super.addingService(reference); + } + }.open(); new RepositoryContextStc().open(); new ServiceTracker(bc, UserAdmin.class, null) { @Override @@ -90,10 +103,25 @@ public class CmsDeployment implements NodeDeployment { deployConfig = new DeployConfig(configurationAdmin, cleanState); httpExpected = deployConfig.getProps(KernelConstants.JETTY_FACTORY_PID, "default") != null; try { - Configuration[] configs= configurationAdmin.listConfigurations("(service.factoryPid="+NodeConstants.NODE_REPOS_FACTORY_PID+")"); - for(Configuration config:configs){ + Configuration[] configs = configurationAdmin + .listConfigurations("(service.factoryPid=" + NodeConstants.NODE_REPOS_FACTORY_PID + ")"); + for (Configuration config : configs) { Object cn = config.getProperties().get(NodeConstants.CN); - log.debug("Standalone repo cn: "+cn); + log.debug("Standalone repo cn: " + cn); + } + configs = configurationAdmin + .listConfigurations("(service.factoryPid=" + NodeConstants.NODE_USER_ADMIN_PID + ")"); + + boolean hasDomain = false; + for (Configuration config : configs) { + Object realm = config.getProperties().get(UserAdminConf.realm.name()); + if (realm != null) { + log.debug("Realm: " + realm); + hasDomain = true; + } + } + if (!hasDomain) { + loadNoIpaJaasConfiguration(); } } catch (Exception e) { throw new CmsException("Cannot initialize config", e); @@ -103,7 +131,19 @@ public class CmsDeployment implements NodeDeployment { }.open(); } + private void loadNoIpaJaasConfiguration() { + if (System.getProperty(KernelConstants.JAAS_CONFIG_PROP) == null) { + String jaasConfig = KernelConstants.JAAS_CONFIG_NOIPA; + URL url = getClass().getClassLoader().getResource(jaasConfig); + KernelUtils.setJaasConfiguration(url); + if (log.isDebugEnabled()) + log.debug("Set no-IPA JAAS configuration."); + } + } + public void shutdown() { + if (nodeHttp != null) + nodeHttp.destroy(); if (deployConfig != null) deployConfig.save(); } @@ -265,7 +305,7 @@ public class CmsDeployment implements NodeDeployment { prepareHomeRepository(nodeRepo.getRepository()); nodeAvailable = true; checkReadiness(); - }else{ + } else { // TODO standalone } } @@ -282,46 +322,4 @@ public class CmsDeployment implements NodeDeployment { } - private class PrepareHttpStc extends ServiceTracker { - private DataHttp dataHttp; - private NodeHttp nodeHttp; - - public PrepareHttpStc() { - super(bc, HttpService.class, null); - } - - @Override - public HttpService addingService(ServiceReference reference) { - HttpService httpService = addHttpService(reference); - return httpService; - } - - @Override - public void removedService(ServiceReference reference, HttpService service) { - if (dataHttp != null) - dataHttp.destroy(); - dataHttp = null; - if (nodeHttp != null) - nodeHttp.destroy(); - nodeHttp = null; - } - - private HttpService addHttpService(ServiceReference sr) { - HttpService httpService = bc.getService(sr); - // TODO find constants - Object httpPort = sr.getProperty("http.port"); - Object httpsPort = sr.getProperty("https.port"); - dataHttp = new DataHttp(httpService); - nodeHttp = new NodeHttp(httpService, bc); - log.info(httpPortsMsg(httpPort, httpsPort)); - httpAvailable = true; - checkReadiness(); - return httpService; - } - - private String httpPortsMsg(Object httpPort, Object httpsPort) { - return "HTTP " + httpPort + (httpsPort != null ? " - HTTPS " + httpsPort : ""); - } - } - }