use of io.vertx.ext.web.handler.SessionHandler in project VX-API-Gateway by EliMirren.
the class VxApiApplication method createHttpsServer.
/**
* 创建https服务器
*
* @param createHttp
*/
public void createHttpsServer(Handler<AsyncResult<Void>> createHttps) {
this.httpsRouter = Router.router(vertx);
httpsRouter.route().handler(this::filterBlackIP);
httpsRouter.route().handler(CookieHandler.create());
SessionStore sessionStore = null;
if (vertx.isClustered()) {
sessionStore = ClusteredSessionStore.create(vertx);
} else {
sessionStore = LocalSessionStore.create(vertx);
}
SessionHandler sessionHandler = SessionHandler.create(sessionStore);
sessionHandler.setSessionCookieName(appOption.getSessionCookieName());
sessionHandler.setSessionTimeout(appOption.getSessionTimeOut());
httpsRouter.route().handler(sessionHandler);
httpsRouter.route().handler(BodyHandler.create().setUploadsDirectory("../temp/file-uploads").setBodyLimit(appOption.getContentLength()));
// 跨域处理
if (corsOptions != null) {
CorsHandler corsHandler = CorsHandler.create(corsOptions.getAllowedOrigin());
corsHandler.allowedHeaders(corsOptions.getAllowedHeaders()).allowCredentials(corsOptions.isAllowCredentials()).exposedHeaders(corsOptions.getExposedHeaders()).allowedMethods(corsOptions.getAllowedMethods()).maxAgeSeconds(corsOptions.getMaxAgeSeconds());
httpsRouter.route().handler(corsHandler);
}
// 创建https服务器
serverOptions.setSsl(true);
VxApiCertOptions certOptions = serverOptions.getCertOptions();
if (certOptions.getCertType().equalsIgnoreCase("pem")) {
serverOptions.setPemKeyCertOptions(new PemKeyCertOptions().setCertPath(certOptions.getCertPath()).setKeyPath(certOptions.getCertKey()));
} else if (certOptions.getCertType().equalsIgnoreCase("pfx")) {
serverOptions.setPfxKeyCertOptions(new PfxOptions().setPath(certOptions.getCertPath()).setPassword(certOptions.getCertKey()));
} else {
LOG.error("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书");
createHttps.handle(Future.failedFuture("创建https服务器-->失败:无效的证书类型,只支持pem/pfx格式的证书"));
return;
}
Future<Boolean> createFuture = Future.future();
vertx.fileSystem().exists(certOptions.getCertPath(), createFuture);
createFuture.setHandler(check -> {
if (check.succeeded()) {
if (check.result()) {
// 404页面
httpsRouter.route().order(999999).handler(rct -> {
HttpServerResponse response = rct.response();
if (appOption.getNotFoundContentType() != null) {
response.putHeader("Content-Type", appOption.getNotFoundContentType());
}
response.end(appOption.getNotFoundResult());
});
// 如果在linux系统开启epoll
if (vertx.isNativeTransportEnabled()) {
serverOptions.setTcpFastOpen(true).setTcpCork(true).setTcpQuickAck(true).setReusePort(true);
}
vertx.createHttpServer(serverOptions).requestHandler(httpsRouter::accept).listen(serverOptions.getHttpsPort(), res -> {
if (res.succeeded()) {
System.out.println(appOption.getAppName() + " Running on port " + serverOptions.getHttpsPort() + " by HTTPS");
createHttps.handle(Future.succeededFuture());
} else {
System.out.println("create HTTPS Server failed : " + res.cause());
createHttps.handle(Future.failedFuture(res.cause()));
}
});
} else {
LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX");
createHttps.handle(Future.failedFuture("无效的证书或者错误的路径"));
}
} else {
LOG.error("执行创建https服务器-->失败:无效的证书或者错误的路径:如果证书存放在conf/cert中,路径可以从cert/开始,示例:cert/XXX.XXX", check.cause());
createHttps.handle(Future.failedFuture(check.cause()));
}
});
}
use of io.vertx.ext.web.handler.SessionHandler in project vertx-openshift-it by cescoffier.
the class WebSessionVerticle method setupRouter.
private Router setupRouter() {
Router router = Router.router(vertx);
router.put().handler(BodyHandler.create());
router.route().handler(CookieHandler.create());
SessionStore store = ClusteredSessionStore.create(vertx);
SessionHandler sessionHandler = SessionHandler.create(store);
router.route().handler(sessionHandler);
router.put("/web-session/:key").handler(rc -> {
String key = rc.pathParam("key");
String value = rc.getBodyAsString();
rc.session().put(key, value);
sendResponse(rc, Future.succeededFuture("OK"));
});
router.get("/web-session/:key").handler(rc -> {
String key = rc.pathParam("key");
String value = rc.session().get(key);
sendResponse(rc, Future.succeededFuture(value));
});
router.get("/health").handler(rc -> {
rc.response().putHeader(HttpHeaders.CONTENT_TYPE, "text/plain").end("OK");
});
return router;
}
use of io.vertx.ext.web.handler.SessionHandler in project Summer by yale8848.
the class SummerRouter method init.
private void init() {
router.route().handler(BodyHandler.create());
router.route().handler(CookieHandler.create());
SessionHandler handler = SessionHandler.create(LocalSessionStore.create(vertx));
handler.setNagHttps(true);
router.route().handler(handler);
}
use of io.vertx.ext.web.handler.SessionHandler in project VX-API-Gateway by EliMirren.
the class VxApiApplication method createHttpServer.
/**
* 创建http服务器
*
* @param createHttp
*/
public void createHttpServer(Handler<AsyncResult<Void>> createHttp) {
this.httpRouter = Router.router(vertx);
httpRouter.route().handler(this::filterBlackIP);
httpRouter.route().handler(CookieHandler.create());
SessionStore sessionStore = null;
if (vertx.isClustered()) {
sessionStore = ClusteredSessionStore.create(vertx);
} else {
sessionStore = LocalSessionStore.create(vertx);
}
SessionHandler sessionHandler = SessionHandler.create(sessionStore);
sessionHandler.setSessionCookieName(appOption.getSessionCookieName());
sessionHandler.setSessionTimeout(appOption.getSessionTimeOut());
httpRouter.route().handler(sessionHandler);
httpRouter.route().handler(BodyHandler.create().setUploadsDirectory("../temp/file-uploads").setBodyLimit(appOption.getContentLength()));
// 跨域处理
if (corsOptions != null) {
CorsHandler corsHandler = CorsHandler.create(corsOptions.getAllowedOrigin());
corsHandler.allowedHeaders(corsOptions.getAllowedHeaders()).allowCredentials(corsOptions.isAllowCredentials()).exposedHeaders(corsOptions.getExposedHeaders()).allowedMethods(corsOptions.getAllowedMethods()).maxAgeSeconds(corsOptions.getMaxAgeSeconds());
httpRouter.route().handler(corsHandler);
}
// 如果在linux系统开启epoll
if (vertx.isNativeTransportEnabled()) {
serverOptions.setTcpFastOpen(true).setTcpCork(true).setTcpQuickAck(true).setReusePort(true);
}
// 404页面
httpRouter.route().order(999999).handler(rct -> {
HttpServerResponse response = rct.response();
if (appOption.getNotFoundContentType() != null) {
response.putHeader("Content-Type", appOption.getNotFoundContentType());
}
response.end(appOption.getNotFoundResult());
});
// 创建http服务器
vertx.createHttpServer(serverOptions).requestHandler(httpRouter::accept).listen(serverOptions.getHttpPort(), res -> {
if (res.succeeded()) {
System.out.println(MessageFormat.format("{0} Running on port {1} by HTTP", appOption.getAppName(), Integer.toString(serverOptions.getHttpPort())));
createHttp.handle(Future.succeededFuture());
} else {
System.out.println("create HTTP Server failed : " + res.cause());
createHttp.handle(Future.failedFuture(res.cause()));
}
});
}
Aggregations