javax.jcr.nodetype,\
org.apache.commons.logging,\
org.apache.jackrabbit.*;version="[1,4)",\
+javax.servlet.*;version="[3,5)",\
*
\ No newline at end of file
package org.argeo.cms.websocket;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.List;
-
-import javax.security.auth.Subject;
-import javax.security.auth.login.LoginContext;
-import javax.websocket.Extension;
-import javax.websocket.HandshakeResponse;
-import javax.websocket.server.HandshakeRequest;
-import javax.websocket.server.ServerEndpointConfig;
-import javax.websocket.server.ServerEndpointConfig.Configurator;
-
-import org.argeo.api.cms.CmsAuth;
-import org.argeo.api.cms.CmsLog;
-import org.argeo.cms.auth.RemoteAuthCallbackHandler;
-import org.argeo.cms.auth.RemoteAuthSession;
-import org.argeo.cms.servlet.ServletHttpSession;
-import org.osgi.service.http.context.ServletContextHelper;
-
-/** Customises the initialisation of a new web socket. */
-public class CmsWebSocketConfigurator extends Configurator {
- public final static String WEBSOCKET_SUBJECT = "org.argeo.cms.websocket.subject";
-
- private final static CmsLog log = CmsLog.getLog(CmsWebSocketConfigurator.class);
- final static String HEADER_WWW_AUTHENTICATE = "WWW-Authenticate";
-
- @Override
- public boolean checkOrigin(String originHeaderValue) {
- return true;
- }
-
- @Override
- public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationException {
- try {
- return endpointClass.getDeclaredConstructor().newInstance();
- } catch (Exception e) {
- throw new IllegalArgumentException("Cannot get endpoint instance", e);
- }
- }
-
- @Override
- public List<Extension> getNegotiatedExtensions(List<Extension> installed, List<Extension> requested) {
- return requested;
- }
-
- @Override
- public String getNegotiatedSubprotocol(List<String> supported, List<String> requested) {
- if ((requested == null) || (requested.size() == 0))
- return "";
- if ((supported == null) || (supported.isEmpty()))
- return "";
- for (String possible : requested) {
- if (possible == null)
- continue;
- if (supported.contains(possible))
- return possible;
- }
- return "";
- }
-
- @Override
- public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
-
- RemoteAuthSession httpSession = new ServletHttpSession((javax.servlet.http.HttpSession) request.getHttpSession());
- if (log.isDebugEnabled() && httpSession != null)
- log.debug("Web socket HTTP session id: " + httpSession.getId());
-
- if (httpSession == null) {
- rejectResponse(response, null);
- }
- try {
- LoginContext lc = new LoginContext(CmsAuth.LOGIN_CONTEXT_USER,
- new RemoteAuthCallbackHandler(httpSession));
- lc.login();
- if (log.isDebugEnabled())
- log.debug("Web socket logged-in as " + lc.getSubject());
- Subject.doAs(lc.getSubject(), new PrivilegedAction<Void>() {
-
- @Override
- public Void run() {
- sec.getUserProperties().put(ServletContextHelper.REMOTE_USER, AccessController.getContext());
- return null;
- }
-
- });
- } catch (Exception e) {
- rejectResponse(response, e);
- }
- }
-
- /**
- * Behaviour when the web socket could not be authenticated. Throws an
- * {@link IllegalStateException} by default.
- *
- * @param e can be null
- */
- protected void rejectResponse(HandshakeResponse response, Exception e) {
- // violent implementation, as suggested in
- // https://stackoverflow.com/questions/21763829/jsr-356-how-to-abort-a-websocket-connection-during-the-handshake
-// throw new IllegalStateException("Web socket cannot be authenticated");
- }
-}
-
-//if (!webServerConfig.isEmpty()) {
-//webServerConfig.put("customizer.class", KernelConstants.CMS_JETTY_CUSTOMIZER_CLASS);
+/** <strong>Disabled until third party issues are solved.</strong>. Customises the initialisation of a new web socket. */
+public class CmsWebSocketConfigurator {
+//extends Configurator {
+// public final static String WEBSOCKET_SUBJECT = "org.argeo.cms.websocket.subject";
+//
+// private final static CmsLog log = CmsLog.getLog(CmsWebSocketConfigurator.class);
+// final static String HEADER_WWW_AUTHENTICATE = "WWW-Authenticate";
+//
+// @Override
+// public boolean checkOrigin(String originHeaderValue) {
+// return true;
+// }
+//
+// @Override
+// public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationException {
+// try {
+// return endpointClass.getDeclaredConstructor().newInstance();
+// } catch (Exception e) {
+// throw new IllegalArgumentException("Cannot get endpoint instance", e);
+// }
+// }
+//
+// @Override
+// public List<Extension> getNegotiatedExtensions(List<Extension> installed, List<Extension> requested) {
+// return requested;
+// }
+//
+// @Override
+// public String getNegotiatedSubprotocol(List<String> supported, List<String> requested) {
+// if ((requested == null) || (requested.size() == 0))
+// return "";
+// if ((supported == null) || (supported.isEmpty()))
+// return "";
+// for (String possible : requested) {
+// if (possible == null)
+// continue;
+// if (supported.contains(possible))
+// return possible;
+// }
+// return "";
+// }
//
-//// TODO centralise with Jetty extender
-//Object webSocketEnabled = webServerConfig.get(InternalHttpConstants.WEBSOCKET_ENABLED);
-//if (webSocketEnabled != null && webSocketEnabled.toString().equals("true")) {
-// bc.registerService(ServerEndpointConfig.Configurator.class, new CmsWebSocketConfigurator(), null);
-// webServerConfig.put(InternalHttpConstants.WEBSOCKET_ENABLED, "true");
-//}
-//}
+// @Override
+// public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
+//
+// RemoteAuthSession httpSession = new ServletHttpSession((javax.servlet.http.HttpSession) request.getHttpSession());
+// if (log.isDebugEnabled() && httpSession != null)
+// log.debug("Web socket HTTP session id: " + httpSession.getId());
+//
+// if (httpSession == null) {
+// rejectResponse(response, null);
+// }
+// try {
+// LoginContext lc = new LoginContext(CmsAuth.LOGIN_CONTEXT_USER,
+// new RemoteAuthCallbackHandler(httpSession));
+// lc.login();
+// if (log.isDebugEnabled())
+// log.debug("Web socket logged-in as " + lc.getSubject());
+// Subject.doAs(lc.getSubject(), new PrivilegedAction<Void>() {
+//
+// @Override
+// public Void run() {
+// sec.getUserProperties().put(ServletContextHelper.REMOTE_USER, AccessController.getContext());
+// return null;
+// }
+//
+// });
+// } catch (Exception e) {
+// rejectResponse(response, e);
+// }
+// }
+//
+// /**
+// * Behaviour when the web socket could not be authenticated. Throws an
+// * {@link IllegalStateException} by default.
+// *
+// * @param e can be null
+// */
+// protected void rejectResponse(HandshakeResponse response, Exception e) {
+// // violent implementation, as suggested in
+// // https://stackoverflow.com/questions/21763829/jsr-356-how-to-abort-a-websocket-connection-during-the-handshake
+//// throw new IllegalStateException("Web socket cannot be authenticated");
+// }
+}
Private-Package: *.internal.*
Export-Package: !*.internal.*, *
#-consumer-policy : ${range;[==,=+)}
+-contract: !JavaServlet,*
-savemanifest : META-INF/MANIFEST.MF
-includeresource.default : OSGI-INF/=-OSGI-INF/,e4xmi/=-e4xmi/,icons/=-icons/,img/=-img/
-compression STORE
// TODO make it configurable
List<String> eclipseMirrors = new ArrayList<>();
eclipseMirrors.add("https://archive.eclipse.org/");
+ eclipseMirrors.add("http://ftp-stud.hs-esslingen.de/Mirrors/eclipse/");
+ eclipseMirrors.add("http://ftp.fau.de/eclipse/");
mirrors.put("http://www.eclipse.org/downloads", eclipseMirrors);
}
Path descriptorsBase = Paths.get("../tp").toAbsolutePath().normalize();
// factory.processSingleM2ArtifactDistributionUnit(descriptorsBase.resolve("org.argeo.tp.apache").resolve("org.apache.xml.resolver.bnd"));
- factory.processM2BasedDistributionUnit(descriptorsBase.resolve("org.argeo.tp.apache/apache-sshd"));
-// factory.processM2BasedDistributionUnit(descriptorsBase.resolve("org.argeo.tp.jcr/oak"));
+// factory.processM2BasedDistributionUnit(descriptorsBase.resolve("org.argeo.tp.apache/apache-sshd"));
+ factory.processM2BasedDistributionUnit(descriptorsBase.resolve("org.argeo.tp.jetty/jetty"));
+ factory.processM2BasedDistributionUnit(descriptorsBase.resolve("org.argeo.tp.jetty/jetty-websocket"));
System.exit(0);
// Eclipse
factory.processEclipseArchive(descriptorsBase.resolve("org.argeo.tp.eclipse.rap").resolve("eclipse-rap"));
factory.processEclipseArchive(descriptorsBase.resolve("org.argeo.tp.eclipse.rcp").resolve("eclipse-rcp"));
+ System.exit(0);
+
// Maven
factory.processCategory(descriptorsBase.resolve("org.argeo.tp.sdk"));
factory.processCategory(descriptorsBase.resolve("org.argeo.tp"));
+++ /dev/null
-Bundle-License: Apache-2.0
-Bundle-SymbolicName: org.apache.lucene
-SLC-Origin-M2: org.apache.lucene:lucene-core:3.6.2
\ No newline at end of file
+++ /dev/null
-Bundle-License: Apache-2.0
-Bundle-SymbolicName: org.apache.xmlbeans
-DynamicImport-Package: *
-Import-Package: org.apache.tools.ant.*;resolution:=optional,
-net.sf.saxon.*;resolution:=optional,
-com.sun.*;resolution:=optional,
-*
-SLC-Origin-M2: org.apache.xmlbeans:xmlbeans:3.1.0
\ No newline at end of file
--- /dev/null
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xmlbeans
+DynamicImport-Package: *
+Import-Package: org.apache.tools.ant.*;resolution:=optional,
+net.sf.saxon.*;resolution:=optional,
+com.sun.*;resolution:=optional,
+*
+SLC-Origin-M2: org.apache.xmlbeans:xmlbeans:3.1.0
\ No newline at end of file
Bundle-License: EPL-1.0
SLC-Origin-ManifestNotModified: true
-SLC-Origin-URI: http://www.eclipse.org/downloads/equinox/drops/R-4.13-201909161045/equinox-SDK-4.13.zip
+SLC-Origin-URI: http://www.eclipse.org/downloads/equinox/drops/R-4.22-202111241800/equinox-SDK-4.22.zip
plugins/org.eclipse.osgi.source_*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.osgi.util*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.osgi.services*.jar=org.argeo.tp.eclipse.equinox
-plugins/javax.servlet*.jar=org.argeo.tp.javax
-plugins/javax.el*.jar=org.argeo.tp.javax
+plugins/jakarta.servlet-api*.jar=org.argeo.tp.javax
plugins/org.apache.felix.gogo.*.jar=org.argeo.tp.apache.felix
plugins/org.apache.felix.scr*.jar=org.argeo.tp.apache.felix
-plugins/org.apache.jasper.*.jar=org.argeo.tp.apache
plugins/org.eclipse.equinox.app*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.equinox.cm*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.equinox.common*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.equinox.registry*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.equinox.servletbridge*.jar=org.argeo.tp.eclipse.equinox
plugins/org.eclipse.equinox.util*.jar=org.argeo.tp.eclipse.equinox
-plugins/org.eclipse.equinox.jsp.*.jar=org.argeo.tp.eclipse.equinox
Bundle-License: EPL-1.0
SLC-Origin-ManifestNotModified: true
-SLC-Origin-URI: http://www.eclipse.org/downloads/rt/rap/3.10/e4/rap-e4-3.10.0-R-20190911-1524.zip
+SLC-Origin-URI: http://www.eclipse.org/downloads/rt/rap/3.19/e4/rap-e4-3.19.0-R-20211130-1934.zip
Bundle-License: EPL-1.0
SLC-Origin-ManifestNotModified: true
-SLC-Origin-URI: http://www.eclipse.org/downloads/eclipse/downloads/drops4/R-4.13-201909161045/org.eclipse.rcp.source-4.13.zip
+SLC-Origin-URI: http://www.eclipse.org/downloads/eclipse/downloads/drops4/R-4.22-202111241800/org.eclipse.rcp.source-4.22.zip
--- /dev/null
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.lucene
+SLC-Origin-M2: org.apache.lucene:lucene-core:3.6.2
\ No newline at end of file
--- /dev/null
+Bundle-SymbolicName: javax.websocket
+Bundle-License: GPL-2.0-only OR CDDL-1.1
+SLC-Origin-M2: javax.websocket:javax.websocket-api:1.1
+SLC-Origin-ManifestNotModified: true
--- /dev/null
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :10.0.8
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jetty-api
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.api
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jetty-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.client
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jetty-common
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.common
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-core-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.core.client
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-core-common
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.core.common
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-core-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.core.client
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jakarta-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.jakarta.client
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jakarta-common
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.jakarta.common
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jakarta-server
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.jakarta.server
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-jetty-server
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.server
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-servlet
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.websocket.servlet
+++ /dev/null
-Bundle-SymbolicName: javax.websocket
-Bundle-License: GPL-2.0-only OR CDDL-1.1
-SLC-Origin-M2: javax.websocket:javax.websocket-api:1.1
-SLC-Origin-ManifestNotModified: true
+++ /dev/null
-Bundle-License: Apache-2.0
-SLC-Origin-M2: :9.4.45.v20220203
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-api
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.api
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-client
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.client
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-common
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.common
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:javax-websocket-client-impl
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.javax.websocket
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:javax-websocket-server-impl
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.javax.websocket.server
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-server
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.server
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty.websocket:websocket-servlet
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.websocket.servlet
Bundle-License: Apache-2.0
-SLC-Origin-M2: :9.4.45.v20220203
+SLC-Origin-M2: :10.0.8
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty:jetty-client
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.client
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty:jetty-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.client
+++ /dev/null
-SLC-Origin-M2: org.eclipse.jetty:jetty-continuation
-SLC-Origin-ManifestNotModified: true
-Bundle-SymbolicName: org.eclipse.jetty.continuation
--- /dev/null
+SLC-Origin-M2: org.eclipse.jetty:jetty-continuation
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.continuation