X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FActivator.java;h=f6a9b146968d8a7981a37d710fef07e02fc37804;hb=44728c14306ddf25bb5225496de5f44345fab85d;hp=24c2f6bccc7d1c7e9d8e004f94d56623e92513dc;hpb=255654a72d48b875d71cea637532784953d80499;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java index 24c2f6bcc..f6a9b1469 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java @@ -1,9 +1,11 @@ package org.argeo.cms.internal.kernel; +import java.awt.image.Kernel; import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; +import java.security.AllPermission; import java.util.Dictionary; import java.util.List; import java.util.Locale; @@ -13,17 +15,24 @@ import javax.security.auth.login.Configuration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; -import org.argeo.node.ArgeoLogger; import org.argeo.node.NodeConstants; import org.argeo.node.NodeDeployment; import org.argeo.node.NodeInstance; import org.argeo.node.NodeState; import org.argeo.util.LangUtils; +import org.ietf.jgss.GSSCredential; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.framework.ServiceReference; +import org.osgi.service.condpermadmin.BundleLocationCondition; +import org.osgi.service.condpermadmin.ConditionInfo; +import org.osgi.service.condpermadmin.ConditionalPermissionAdmin; +import org.osgi.service.condpermadmin.ConditionalPermissionInfo; +import org.osgi.service.condpermadmin.ConditionalPermissionUpdate; import org.osgi.service.log.LogReaderService; +import org.osgi.service.permissionadmin.PermissionInfo; +import org.osgi.service.useradmin.UserAdmin; /** * Activates the {@link Kernel} from the provided {@link BundleContext}. Gives @@ -35,10 +44,11 @@ public class Activator implements BundleActivator { private static Activator instance; private BundleContext bc; + // private CmsSecurity nodeSecurity; private LogReaderService logReaderService; // private ConfigurationAdmin configurationAdmin; - private NodeLogger logger; + // private NodeLogger logger; private CmsState nodeState; private CmsDeployment nodeDeployment; private CmsInstance nodeInstance; @@ -51,7 +61,8 @@ public class Activator implements BundleActivator { // this.configurationAdmin = getService(ConfigurationAdmin.class); try { - initSecurity();// must be first + // nodeSecurity = new CmsSecurity(); + initSecurity(); initArgeoLogger(); initNode(); } catch (Exception e) { @@ -62,17 +73,31 @@ public class Activator implements BundleActivator { private void initSecurity() { if (System.getProperty(KernelConstants.JAAS_CONFIG_PROP) == null) { - URL url = getClass().getClassLoader().getResource(KernelConstants.JAAS_CONFIG); - // URL url = - // getClass().getClassLoader().getResource(KernelConstants.JAAS_CONFIG_IPA); - System.setProperty(KernelConstants.JAAS_CONFIG_PROP, url.toExternalForm()); + String jaasConfig = KernelConstants.JAAS_CONFIG; + URL url = getClass().getClassLoader().getResource(jaasConfig); + // System.setProperty(KernelConstants.JAAS_CONFIG_PROP, + // url.toExternalForm()); + KernelUtils.setJaasConfiguration(url); } + // explicitly load JAAS configuration Configuration.getConfiguration(); + + ConditionalPermissionAdmin permissionAdmin = bc + .getService(bc.getServiceReference(ConditionalPermissionAdmin.class)); + ConditionalPermissionUpdate update = permissionAdmin.newConditionalPermissionUpdate(); + // Self + update.getConditionalPermissionInfos() + .add(permissionAdmin.newConditionalPermissionInfo(null, + new ConditionInfo[] { + new ConditionInfo(BundleLocationCondition.class.getName(), new String[] { "*" }) }, + new PermissionInfo[] { new PermissionInfo(AllPermission.class.getName(), null, null) }, + ConditionalPermissionInfo.ALLOW)); + } private void initArgeoLogger() { - logger = new NodeLogger(logReaderService); - bc.registerService(ArgeoLogger.class, logger, null); + // logger = new NodeLogger(logReaderService); + // bc.registerService(ArgeoLogger.class, logger, null); } private void initNode() throws IOException { @@ -122,6 +147,16 @@ public class Activator implements BundleActivator { return instance.nodeState; } + public static GSSCredential getAcceptorCredentials() { + ServiceReference sr = instance.bc.getServiceReference(UserAdmin.class); + NodeUserAdmin userAdmin = (NodeUserAdmin) instance.bc.getService(sr); + return userAdmin.getAcceptorCredentials(); + } + + // static CmsSecurity getCmsSecurity() { + // return instance.nodeSecurity; + // } + public String[] getLocales() { // TODO optimize? List locales = getNodeState().getLocales();