You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/05/09 19:55:33 UTC
svn commit: r1336317 - in /karaf/cellar/trunk:
bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/ management/
management/src/main/java/org/apache/karaf/cellar/management/internal/
management/src/main/resources/OSGI-INF/blueprint/
Author: jbonofre
Date: Wed May 9 17:55:32 2012
New Revision: 1336317
URL: http://svn.apache.org/viewvc?rev=1336317&view=rev
Log:
[KARAF-1429] Check is the bundle location is allowed outbound in the CellarBundleMBean
Modified:
karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java
karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StartBundleCommand.java
karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StopBundleCommand.java
karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/UninstallBundleCommand.java
karaf/cellar/trunk/management/pom.xml
karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarBundleMBeanImpl.java
karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml
Modified: karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java (original)
+++ karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/InstallBundleCommand.java Wed May 9 17:55:32 2012
@@ -101,7 +101,7 @@ public class InstallBundleCommand extend
event.setSourceGroup(group);
eventProducer.produce(event);
} else {
- System.err.println("Bundle from " + url + " is blocked outbound");
+ System.err.println("Bundle location " + url + " is blocked outbound");
}
}
Modified: karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StartBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StartBundleCommand.java?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StartBundleCommand.java (original)
+++ karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StartBundleCommand.java Wed May 9 17:55:32 2012
@@ -77,7 +77,7 @@ public class StartBundleCommand extends
support.setGroupManager(this.groupManager);
support.setConfigurationAdmin(this.configurationAdmin);
if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
- System.err.println("Bundle on " + location + " is blocked outbound");
+ System.err.println("Bundle location " + location + " is blocked outbound");
return null;
}
Modified: karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StopBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StopBundleCommand.java?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StopBundleCommand.java (original)
+++ karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/StopBundleCommand.java Wed May 9 17:55:32 2012
@@ -78,7 +78,7 @@ public class StopBundleCommand extends C
support.setGroupManager(this.groupManager);
support.setConfigurationAdmin(this.configurationAdmin);
if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
- System.err.println("Bundle on " + location + " is blocked outbound");
+ System.err.println("Bundle location " + location + " is blocked outbound");
return null;
}
Modified: karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/UninstallBundleCommand.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/UninstallBundleCommand.java?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/UninstallBundleCommand.java (original)
+++ karaf/cellar/trunk/bundle/src/main/java/org/apache/karaf/cellar/bundle/shell/UninstallBundleCommand.java Wed May 9 17:55:32 2012
@@ -77,7 +77,7 @@ public class UninstallBundleCommand exte
support.setGroupManager(this.groupManager);
support.setConfigurationAdmin(this.configurationAdmin);
if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
- System.err.println("Bundle on " + location + " is blocked outbound");
+ System.err.println("Bundle location " + location + " is blocked outbound");
return null;
}
Modified: karaf/cellar/trunk/management/pom.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/pom.xml?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/management/pom.xml (original)
+++ karaf/cellar/trunk/management/pom.xml Wed May 9 17:55:32 2012
@@ -43,7 +43,8 @@
javax.management.openmbean,
org.apache.karaf.features*;version="[3,4)",
org.apache.karaf.cellar*;version="${project.version}",
- org.osgi*
+ org.osgi.service.cm,
+ org.osgi.service.blueprint
</osgi.import>
<osgi.private>
org.apache.karaf.cellar.management.internal
Modified: karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarBundleMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarBundleMBeanImpl.java?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarBundleMBeanImpl.java (original)
+++ karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarBundleMBeanImpl.java Wed May 9 17:55:32 2012
@@ -16,15 +16,14 @@ package org.apache.karaf.cellar.manageme
import org.apache.karaf.cellar.bundle.BundleState;
import org.apache.karaf.cellar.bundle.Constants;
import org.apache.karaf.cellar.bundle.RemoteBundleEvent;
-import org.apache.karaf.cellar.core.ClusterManager;
-import org.apache.karaf.cellar.core.Configurations;
-import org.apache.karaf.cellar.core.Group;
-import org.apache.karaf.cellar.core.GroupManager;
+import org.apache.karaf.cellar.core.*;
import org.apache.karaf.cellar.core.control.SwitchStatus;
import org.apache.karaf.cellar.core.event.EventProducer;
import org.apache.karaf.cellar.core.event.EventTransportFactory;
+import org.apache.karaf.cellar.core.event.EventType;
import org.apache.karaf.cellar.management.CellarBundleMBean;
import org.osgi.framework.BundleEvent;
+import org.osgi.service.cm.ConfigurationAdmin;
import javax.management.NotCompliantMBeanException;
import javax.management.StandardMBean;
@@ -41,6 +40,7 @@ public class CellarBundleMBeanImpl exten
private ClusterManager clusterManager;
private GroupManager groupManager;
+ private ConfigurationAdmin configurationAdmin;
private EventProducer eventProducer;
public CellarBundleMBeanImpl() throws NotCompliantMBeanException {
@@ -63,6 +63,14 @@ public class CellarBundleMBeanImpl exten
this.groupManager = groupManager;
}
+ public ConfigurationAdmin getConfigurationAdmin() {
+ return configurationAdmin;
+ }
+
+ public void setConfigurationAdmin(ConfigurationAdmin configurationAdmin) {
+ this.configurationAdmin = configurationAdmin;
+ }
+
public EventProducer getEventProducer() {
return eventProducer;
}
@@ -83,6 +91,15 @@ public class CellarBundleMBeanImpl exten
throw new IllegalStateException("Cluster event producer is OFF for this node");
}
+ // check if the bundle location is allowed
+ CellarSupport support = new CellarSupport();
+ support.setClusterManager(this.clusterManager);
+ support.setGroupManager(this.groupManager);
+ support.setConfigurationAdmin(this.configurationAdmin);
+ if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
+ throw new IllegalArgumentException("Bundle location " + location + " is blocked outbound");
+ }
+
// get the name and version in the location MANIFEST
JarInputStream jarInputStream = new JarInputStream(new URL(location).openStream());
Manifest manifest = jarInputStream.getManifest();
@@ -126,6 +143,21 @@ public class CellarBundleMBeanImpl exten
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
try {
Map<String, BundleState> bundles = clusterManager.getMap(Constants.BUNDLE_MAP + Configurations.SEPARATOR + groupName);
+ BundleState state = bundles.get(symbolicName + "/" + version);
+ if (state == null) {
+ throw new IllegalArgumentException("Bundle " + symbolicName + "/" + version + " is not found in cluster group " + groupName);
+ }
+ String location = state.getLocation();
+
+ // check if the bundle location is allowed outbound
+ CellarSupport support = new CellarSupport();
+ support.setClusterManager(this.clusterManager);
+ support.setGroupManager(this.groupManager);
+ support.setConfigurationAdmin(this.configurationAdmin);
+ if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
+ throw new IllegalArgumentException("Bundle location " + location + " is blocked outbound");
+ }
+
bundles.remove(symbolicName + "/" + version);
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
@@ -158,6 +190,17 @@ public class CellarBundleMBeanImpl exten
if (state == null) {
throw new IllegalStateException("Bundle " + symbolicName + "/" + version + " not found in cluster group " + groupName);
}
+ String location = state.getLocation();
+
+ // check if the bundle location is allowed
+ CellarSupport support = new CellarSupport();
+ support.setClusterManager(this.clusterManager);
+ support.setGroupManager(this.groupManager);
+ support.setConfigurationAdmin(this.configurationAdmin);
+ if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
+ throw new IllegalArgumentException("Bundle location " + location + " is blocked outbound");
+ }
+
state.setStatus(BundleEvent.STARTED);
bundles.put(symbolicName + "/" + version, state);
} finally {
@@ -191,6 +234,17 @@ public class CellarBundleMBeanImpl exten
if (state == null) {
throw new IllegalStateException("Bundle " + symbolicName + "/" + version + " not found in cluster group " + groupName);
}
+ String location = state.getLocation();
+
+ // check if the bundle location is allowed
+ CellarSupport support = new CellarSupport();
+ support.setClusterManager(this.clusterManager);
+ support.setGroupManager(this.groupManager);
+ support.setConfigurationAdmin(this.configurationAdmin);
+ if (!support.isAllowed(group, Constants.CATEGORY, location, EventType.OUTBOUND)) {
+ throw new IllegalArgumentException("Bundle location " + location + " is blocked outbound");
+ }
+
state.setStatus(BundleEvent.STOPPED);
bundles.put(symbolicName + "/" + version, state);
} finally {
Modified: karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1336317&r1=1336316&r2=1336317&view=diff
==============================================================================
--- karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml Wed May 9 17:55:32 2012
@@ -19,6 +19,11 @@
<reference id="groupManager" interface="org.apache.karaf.cellar.core.GroupManager"/>
<reference id="executionContext" interface="org.apache.karaf.cellar.core.command.ExecutionContext"/>
<reference id="eventProducer" interface="org.apache.karaf.cellar.core.event.EventProducer"/>
+ <reference id="configurationAdmin" interface="org.osgi.service.cm.ConfigurationAdmin"/>
+
+ <reference id="mbeanServer" interface="javax.management.MBeanServer">
+ <reference-listener ref="mbeanRegister" bind-method="registerMBeanServer" unbind-method="unregisterMBeanServer"/>
+ </reference>
<bean id="cellarMBean" class="org.apache.karaf.cellar.management.internal.CellarMBeanImpl">
<property name="clusterManager" ref="clusterManager"/>
@@ -52,6 +57,7 @@
<property name="clusterManager" ref="clusterManager"/>
<property name="groupManager" ref="groupManager"/>
<property name="eventProducer" ref="eventProducer"/>
+ <property name="configurationAdmin" ref="configurationAdmin"/>
</bean>
<service ref="cellarMBean" auto-export="interfaces">