package org.argeo.equinox.jetty;
-import java.net.HttpCookie;
import java.util.Dictionary;
-import java.util.List;
import javax.servlet.ServletException;
-import javax.servlet.http.HttpSession;
import org.eclipse.equinox.http.jetty.JettyCustomizer;
import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.websocket.api.UpgradeRequest;
-import org.eclipse.jetty.websocket.common.WebSocketSession;
-import org.eclipse.jetty.websocket.common.WebSocketSessionListener;
import org.eclipse.jetty.websocket.jsr356.server.ServerContainer;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;
import org.osgi.framework.BundleContext;
// @Override
// public void onSessionOpened(WebSocketSession session) {
// UpgradeRequest upgradeRequest = session.getUpgradeRequest();
+// UpgradeResponse upgradeResponse = session.getUpgradeResponse();
+// List<String> acceptHeader = upgradeResponse.getHeaders("Sec-WebSocket-Accept");
+// if (acceptHeader.contains("no"))
+// try {
+// upgradeResponse.sendForbidden("FORBIDDEN");
+// return;
+// } catch (IOException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
// List<HttpCookie> cookies = upgradeRequest.getCookies();
+//
// System.out.println("Upgrade request cookies : " + cookies);
-// HttpSession httpSession = (HttpSession) upgradeRequest.getSession();
-// System.out.println("Upgrade request session ID : " + httpSession.getId());
+// String httpSessionId = null;
+// if (cookies != null) {
+// for (HttpCookie cookie : cookies) {
+// if (cookie.getName().equals("JSESSIONID")) {
+// httpSessionId = cookie.getValue();
+// }
+// }
+// }
+//
+// if (httpSessionId == null) {
+// HttpSession httpSession = (HttpSession) upgradeRequest.getSession();
+// if (httpSession == null) {
+//// session.disconnect();
+//// return;
+// } else {
+// httpSessionId = httpSession.getId();
+// System.out.println("Upgrade request session ID : " + httpSession.getId());
+// }
+// }
+//
+// if (httpSessionId != null) {
+// int dotIdx = httpSessionId.lastIndexOf('.');
+// if (dotIdx > 0) {
+// httpSessionId = httpSessionId.substring(0, dotIdx);
+// }
+// }
// }
//
// @Override
// public void onSessionClosed(WebSocketSession session) {
-// // TODO Auto-generated method stub
-//
// }
// });
} catch (ServletException e) {
throw new IllegalStateException("Cannot configure web sockets", e);
}
bc.registerService(javax.websocket.server.ServerContainer.class, serverContainer, null);
-// ServiceTracker<ServerEndpointConfig.Builder, ServerEndpointConfig.Builder> endpointsTracker = new ServiceTracker<ServerEndpointConfig.Builder, ServerEndpointConfig.Builder>(
-// bc, ServerEndpointConfig.Builder.class, null) {
-//
-// @Override
-// public ServerEndpointConfig.Builder addingService(
-// ServiceReference<ServerEndpointConfig.Builder> reference) {
-//
-// ServerEndpointConfig.Builder serverEndpointConfig = super.addingService(reference);
-// try {
-// serverContainer.addEndpoint(serverEndpointConfig.build());
-// } catch (DeploymentException e) {
-// throw new IllegalArgumentException("Cannot add end point " + reference, e);
-// }
-// return serverEndpointConfig;
-// }
-// };
-// endpointsTracker.open();
- // TODO log it properly
- // TODO close itproperly
}
}
-
}