use of io.undertow.server.handlers.PathHandler in project undertow by undertow-io.
the class SsoTestCase method setup.
@BeforeClass
public static void setup() {
final SingleSignOnAuthenticationMechanism sso = new SingleSignOnAuthenticationMechanism(new InMemorySingleSignOnManager());
final PathHandler path = new PathHandler();
HttpHandler current = new ResponseHandler();
current = new AuthenticationCallHandler(current);
current = new AuthenticationConstraintHandler(current);
List<AuthenticationMechanism> mechs = new ArrayList<>();
mechs.add(sso);
mechs.add(new BasicAuthenticationMechanism("Test Realm"));
current = new AuthenticationMechanismsHandler(current, mechs);
current = new NotificationReceiverHandler(current, Collections.<NotificationReceiver>singleton(auditReceiver));
current = new SecurityInitialHandler(AuthenticationMode.PRO_ACTIVE, identityManager, current);
path.addPrefixPath("/test1", current);
current = new ResponseHandler();
current = new AuthenticationCallHandler(current);
current = new AuthenticationConstraintHandler(current);
mechs = new ArrayList<>();
mechs.add(sso);
mechs.add(new FormAuthenticationMechanism("form", "/login", "/error"));
current = new AuthenticationMechanismsHandler(current, mechs);
current = new NotificationReceiverHandler(current, Collections.<NotificationReceiver>singleton(auditReceiver));
current = new SecurityInitialHandler(AuthenticationMode.PRO_ACTIVE, identityManager, current);
path.addPrefixPath("/test2", current);
path.addPrefixPath("/login", new ResponseCodeHandler(StatusCodes.UNAUTHORIZED));
DefaultServer.setRootHandler(new SessionAttachmentHandler(path, new InMemorySessionManager(""), new SessionCookieConfig()));
}
use of io.undertow.server.handlers.PathHandler in project undertow by undertow-io.
the class AbstractModClusterTestBase method createNode.
static Undertow createNode(final NodeTestConfig config) {
final Undertow.Builder builder = Undertow.builder();
final String type = config.getType();
switch(type) {
case "ajp":
builder.addAjpListener(config.getPort(), config.getHostname());
break;
case "http":
builder.addHttpListener(config.getPort(), config.getHostname());
break;
case "https":
builder.addHttpsListener(config.getPort(), config.getHostname(), DefaultServer.getServerSslContext());
break;
default:
throw new IllegalArgumentException(type);
}
final SessionCookieConfig sessionConfig = new SessionCookieConfig();
if (config.getStickySessionCookie() != null) {
sessionConfig.setCookieName(config.getStickySessionCookie());
}
final PathHandler pathHandler = path(ResponseCodeHandler.HANDLE_200).addPrefixPath("/name", new StringSendHandler(config.getJvmRoute())).addPrefixPath("/session", new SessionAttachmentHandler(new SessionTestHandler(config.getJvmRoute(), sessionConfig), new InMemorySessionManager(""), sessionConfig));
// Setup test handlers
config.setupHandlers(pathHandler);
builder.setSocketOption(Options.REUSE_ADDRESSES, true).setHandler(jvmRoute("JSESSIONID", config.getJvmRoute(), pathHandler));
return builder.build();
}
use of io.undertow.server.handlers.PathHandler in project undertow by undertow-io.
the class ServletServer method main.
public static void main(final String[] args) {
try {
DeploymentInfo servletBuilder = deployment().setClassLoader(ServletServer.class.getClassLoader()).setContextPath(MYAPP).setDeploymentName("test.war").addServlets(servlet("MessageServlet", MessageServlet.class).addInitParam("message", "Hello World").addMapping("/*"), servlet("MyServlet", MessageServlet.class).addInitParam("message", "MyServlet").addMapping("/myservlet"));
DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();
PathHandler path = Handlers.path(Handlers.redirect(MYAPP)).addPrefixPath(MYAPP, servletHandler);
Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(path).build();
server.start();
} catch (ServletException e) {
throw new RuntimeException(e);
}
}
use of io.undertow.server.handlers.PathHandler in project undertow by undertow-io.
the class SessionServer method main.
public static void main(String[] args) {
PathHandler pathHandler = new PathHandler();
pathHandler.addPrefixPath("/", new HttpHandler() {
public void handleRequest(HttpServerExchange exchange) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append("<form action='addToSession' >");
sb.append("<label>Attribute Name</label>");
sb.append("<input name='attrName' />");
sb.append("<label>Attribute Value</label>");
sb.append("<input name='value' />");
sb.append("<button>Save to Session</button>");
// To retrive the SessionManager use the attachmentKey
SessionManager sm = exchange.getAttachment(SessionManager.ATTACHMENT_KEY);
// same goes to SessionConfig
SessionConfig sessionConfig = exchange.getAttachment(SessionConfig.ATTACHMENT_KEY);
sb.append("</form>");
sb.append("<a href='/destroySession'>Destroy Session</a>");
sb.append("<br/>");
Session session = sm.getSession(exchange, sessionConfig);
if (session == null)
session = sm.createSession(exchange, sessionConfig);
sb.append("<ul>");
for (String string : session.getAttributeNames()) {
sb.append("<li>" + string + " : " + session.getAttribute(string) + "</li>");
}
sb.append("</ul>");
exchange.getResponseHeaders().add(Headers.CONTENT_TYPE, "text/html;");
exchange.getResponseSender().send(sb.toString());
}
});
pathHandler.addPrefixPath("/addToSession", new HttpHandler() {
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
SessionManager sm = exchange.getAttachment(SessionManager.ATTACHMENT_KEY);
SessionConfig sessionConfig = exchange.getAttachment(SessionConfig.ATTACHMENT_KEY);
Map<String, Deque<String>> reqParams = exchange.getQueryParameters();
Session session = sm.getSession(exchange, sessionConfig);
if (session == null)
session = sm.createSession(exchange, sessionConfig);
Deque<String> deque = reqParams.get("attrName");
Deque<String> dequeVal = reqParams.get("value");
session.setAttribute(deque.getLast(), dequeVal.getLast());
exchange.setStatusCode(StatusCodes.TEMPORARY_REDIRECT);
exchange.getResponseHeaders().put(Headers.LOCATION, "/");
exchange.getResponseSender().close();
}
});
pathHandler.addPrefixPath("/destroySession", new HttpHandler() {
public void handleRequest(HttpServerExchange exchange) throws Exception {
SessionManager sm = exchange.getAttachment(SessionManager.ATTACHMENT_KEY);
SessionConfig sessionConfig = exchange.getAttachment(SessionConfig.ATTACHMENT_KEY);
Session session = sm.getSession(exchange, sessionConfig);
if (session == null)
session = sm.createSession(exchange, sessionConfig);
session.invalidate(exchange);
exchange.setStatusCode(StatusCodes.TEMPORARY_REDIRECT);
exchange.getResponseHeaders().put(Headers.LOCATION, "/");
exchange.getResponseSender().close();
}
});
SessionManager sessionManager = new InMemorySessionManager("SESSION_MANAGER");
SessionCookieConfig sessionConfig = new SessionCookieConfig();
/*
* Use the sessionAttachmentHandler to add the sessionManager and
* sessionCofing to the exchange of every request
*/
SessionAttachmentHandler sessionAttachmentHandler = new SessionAttachmentHandler(sessionManager, sessionConfig);
// set as next handler your root handler
sessionAttachmentHandler.setNext(pathHandler);
System.out.println("Open the url and fill the form to add attributes into the session");
Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(sessionAttachmentHandler).build();
server.start();
}
use of io.undertow.server.handlers.PathHandler in project wildfly by wildfly.
the class UndertowSubsystem30TestCase method testCustomFilters.
private void testCustomFilters(KernelServices mainServices) {
ServiceController<FilterService> customFilter = (ServiceController<FilterService>) mainServices.getContainer().getService(UndertowService.FILTER.append("custom-filter"));
customFilter.setMode(ServiceController.Mode.ACTIVE);
FilterService connectionLimiterService = customFilter.getService().getValue();
HttpHandler result = connectionLimiterService.createHttpHandler(Predicates.truePredicate(), new PathHandler());
Assert.assertNotNull("handler should have been created", result);
}
Aggregations