List of usage examples for io.vertx.core.json JsonObject getJsonArray
public JsonArray getJsonArray(String key)
From source file:io.nitor.api.backend.auth.SetupAzureAdConnectAuth.java
License:Apache License
public static void setupAzureAd(JsonObject adAuth, Router router, String publicURI, boolean virtualHost, CookieSessionHandler sessionHandler, HttpClient httpClient) { final String callbackPath = adAuth.getString("callbackPath", "/oidc/callback"); String redirectUri = publicURI + callbackPath; adAuth.put("redirectUri", redirectUri); String path = adAuth.getString("route", "/*"); List<GraphQuery> graphQueries = new ArrayList<>(); JsonArray queryNodes = adAuth.getJsonArray("graphQueries"); if (queryNodes == null) { graphQueries.add(new GraphQuery(adAuth, "https://graph.microsoft.com/beta/me?$expand=memberOf")); } else {//w ww . j av a2s. c o m queryNodes.stream().map(JsonObject.class::cast).map(GraphQuery::new).forEach(graphQueries::add); } Set<String> forbiddenHeaders = graphQueries.stream().flatMap(gq -> gq.headerMappings.keySet().stream()) .collect(toSet()); logger.info("Graph queries: " + graphQueries.stream().map(gq -> gq.graphQueryURI).collect(Collectors.joining(", "))); logger.info("Headers: " + forbiddenHeaders); HashMap<String, Pattern> requiredHeaderMatchers = new HashMap<>(); adAuth.getJsonObject("requiredHeaders", new JsonObject()).forEach(mapping -> requiredHeaderMatchers .put(mapping.getKey(), Pattern.compile(mapping.getValue().toString()))); RedirectTokenService redirectTokenService = new RedirectTokenService(sessionHandler.getCookieConverter()); Handler<RoutingContext> securityHandler = authHandler(adAuth, forbiddenHeaders, requiredHeaderMatchers, publicURI, virtualHost, sessionHandler, redirectUri, redirectTokenService); router.get(FORBIDDEN_PATH).handler(ctx -> errorWithLogoutLink(ctx, FORBIDDEN)); router.get(UNAUTHORIZED_PATH).handler(ctx -> errorWithLogoutLink(ctx, UNAUTHORIZED)); router.get(callbackPath).handler(validateAuthCallback(adAuth, httpClient, sessionHandler, graphQueries, redirectUri, redirectTokenService)); if (virtualHost) { router.options(PROXY_AUTH_REDIRECT_AFTER).handler(SetupAzureAdConnectAuth::optionsHandler); router.route(PROXY_AUTH_REDIRECT_AFTER).handler(ctx -> { // phase 3: executed when returning to virtual domain with cookie and original url inside token // -> jump to original locatin and set the cookie String token = ctx.request().getParam("t"); Map<String, String> params = redirectTokenService.getParameters(ctx, token); if (params == null) { ctx.reroute(GET, UNAUTHORIZED_PATH); logger.warn("phase3: Could not decrypt parameters from 't'"); return; } String originalUrl = params.get("u"); String originalHost = getUriHostName(originalUrl); String host = getUriHostName(ctx.request().host()); if (originalHost != null && originalHost.equals(host)) { ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, originalUrl) .putHeader(SET_COOKIE, params.get("c")).end(); } else { logger.warn("phase3: original host from cookie " + originalHost + " does not match request host " + host); ctx.reroute(GET, FORBIDDEN_PATH); } }); } router.route(path).handler(securityHandler); if (virtualHost) { router.options(PROXY_AUTH_REDIRECT_BEFORE).handler(SetupAzureAdConnectAuth::optionsHandler); router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(securityHandler); router.route(PROXY_AUTH_REDIRECT_BEFORE).handler(ctx -> { // phase 2: executed when returning from authentication server with valid cookie // -> jump to original virtual host domain and pass the original url and auth cookie inside token String token = ctx.request().getParam("t"); Map<String, String> params = redirectTokenService.getParameters(ctx, token); if (params == null) { ctx.reroute(GET, UNAUTHORIZED_PATH); logger.warn("phase2: Could not decrypt parameters from 't'"); return; } String originalUrl = params.get("u"); String originalHost = getUriHostNamePort(originalUrl); if (originalUrl == null || !originalUrl.startsWith("https://")) { ctx.reroute(GET, FORBIDDEN_PATH); logger.warn( "phase2: original url from cookie " + originalUrl + " does not start with https://"); return; } Cookie cookie = sessionHandler.getAuthCookie(ctx.cookies()); params.put("c", cookie.encode()); String newToken = redirectTokenService.createToken(ctx, params); StringBuilder sb = new StringBuilder(); sb.append("https://").append(originalHost).append(PROXY_AUTH_REDIRECT_AFTER).append("?t=") .append(urlEncode(newToken)); ctx.response().setStatusCode(TEMPORARY_REDIRECT.code()).putHeader(LOCATION, sb).end(); }); } }
From source file:io.nitor.api.backend.lambda.LambdaHandler.java
License:Apache License
public LambdaHandler(JsonObject conf, int routeLength) { this.routeLength = routeLength; Region region = resolveRegion(conf); lambdaCl = LambdaAsyncClient.builder().region(region).credentialsProvider(resolveCredentialsProvider(conf)) .build();/*from w ww .j a v a 2 s . c o m*/ pathTemplateMatcher = new PathTemplateMatcher<>(); for (Object next : conf.getJsonArray("paths")) { if (next instanceof JsonObject) { JsonObject nextObj = (JsonObject) next; String lambdaFunction = nextObj.getString("function"); String qualifier = conf.getString("qualifier", "$LATEST"); Entry<String, String> value = new SimpleImmutableEntry<>(lambdaFunction, qualifier); pathTemplateMatcher.add(PathTemplate.create(nextObj.getString("template")), value); } } }
From source file:io.nitor.api.backend.session.Encryptor.java
License:Apache License
public Encryptor(JsonObject cryptConf) { try {//ww w . j a v a 2s . com Path secretFile = Paths.get(cryptConf.getString("secretFile", ".secret")); JsonArray secretGenerator = cryptConf.getJsonArray("secretGenerator"); byte[] secret; if (isReadable(secretFile)) { logger.info("Reading existing secret from " + secretFile); secret = readAllBytes(secretFile); if (secret.length != AES_KEY_LENGTH + AES_AUTH_LENGTH) { throw new RuntimeException("Corrupted secret file '" + secretFile.toAbsolutePath() + "'"); } } else if (secretGenerator != null) { logger.info("Generating a new secret using " + secretGenerator); secret = generateSecret(secretGenerator); if (secret.length < AES_KEY_LENGTH + AES_AUTH_LENGTH) { throw new RuntimeException("Too small secret generated"); } } else { logger.info("Generating a new secret and writing it to " + secretFile); secret = new byte[AES_KEY_LENGTH + AES_AUTH_LENGTH]; CRYPTO_POOL.get().random.nextBytes(secret); write(secretFile, secret, CREATE, TRUNCATE_EXISTING, DSYNC); } logger.info("Using secret " + toHexString(Arrays.hashCode(secret))); byte[] aesKey = copyOf(secret, AES_KEY_LENGTH); byte[] aesAuthData = copyOfRange(secret, AES_KEY_LENGTH, AES_KEY_LENGTH + AES_AUTH_LENGTH); if (aesKey.length != AES_KEY_LENGTH || aesAuthData.length != AES_AUTH_LENGTH) { throw new RuntimeException("Wrong length of key or auth data"); } this.symmetricKey = new SecretKeySpec(aesKey, "AES"); this.hmacSecret = new SecretKeySpec(aesAuthData, MAC_ALGORITHM); } catch (Exception e) { throw new RuntimeException("Could not create cipher", e); } }
From source file:io.nonobot.core.handlers.GiphyHandler.java
License:Apache License
public void handle(Message msg) { String query = msg.matchedGroup(1); HttpClientRequest req = client.get(80, "api.giphy.com", "/v1/gifs/search?q=" + query + "&api_key=" + "dc6zaTOxFJmzC", resp -> { if (resp.statusCode() == 200 && resp.getHeader("Content-Type").equals("application/json")) { System.out.println(resp.statusCode()); System.out.println(resp.statusMessage()); System.out.println(resp.getHeader("Content-Type")); resp.exceptionHandler(err -> { msg.reply("Error: " + err.getMessage()); });/* www .j a v a2s. c om*/ Buffer buf = Buffer.buffer(); resp.handler(buf::appendBuffer); resp.endHandler(v -> { JsonObject json = new JsonObject(buf.toString()); JsonArray images = json.getJsonArray("data"); if (images.size() > 0) { JsonObject image = images.getJsonObject(0); // Should be random !!! String url = image.getJsonObject("images").getJsonObject("original") .getString("url"); msg.reply(url); } msg.reply("got response " + json); }); } else { msg.reply("Error"); } }); req.exceptionHandler(err -> { msg.reply("Error: " + err.getMessage()); }); req.end(); }
From source file:io.nonobot.core.handlers.GitHubVerticle.java
License:Apache License
@Override public void start() throws Exception { super.start(); Router router = Router.router(vertx); bot.webRouter().mountSubRouter("/github", router); router.post().handler(ctx -> {// ww w.ja va2 s . c o m HttpServerRequest req = ctx.request(); String event = req.getHeader("X-Github-Event"); if (!"push".equals(event)) { req.response().setStatusCode(400).end("X-Github-Event " + event + " not handled"); return; } String contentType = req.getHeader("Content-Type"); if (!"application/json".equals(contentType)) { req.response().setStatusCode(400).end("Content-Type " + contentType + " not handled"); return; } req.bodyHandler(body -> { JsonObject json = body.toJsonObject(); req.response().end(); String chatId = req.getParam("chat"); JsonArray commits = json.getJsonArray("commits"); if (chatId != null && commits != null && commits.size() > 0) { String commitWord = commits.size() > 1 ? "commits" : "commit"; bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId), "Got " + commits.size() + " new " + commitWord + " from " + json.getJsonObject("pusher").getString("name") + " on " + json.getJsonObject("repository").getString("full_name")); for (int index = 0; index < commits.size(); index++) { JsonObject commit = commits.getJsonObject(index); bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId), " * " + commit.getString("message") + " " + commit.getString("url")); } } }); }); }
From source file:io.rebind.vertx.orientdb.model.RecordConverter.java
License:Apache License
public static void fromJson(JsonObject json, Record obj) { if (json.getValue("connections") instanceof JsonArray) { java.util.ArrayList<io.rebind.vertx.orientdb.model.Connection> list = new java.util.ArrayList<>(); json.getJsonArray("connections").forEach(item -> { if (item instanceof JsonObject) list.add(new io.rebind.vertx.orientdb.model.Connection((JsonObject) item)); });// w w w . j a v a 2s . c o m obj.setConnections(list); } if (json.getValue("iClass") instanceof String) { obj.setIClass((String) json.getValue("iClass")); } if (json.getValue("properties") instanceof JsonObject) { obj.setProperties(((JsonObject) json.getValue("properties")).copy()); } if (json.getValue("rid") instanceof String) { obj.setRid((String) json.getValue("rid")); } if (json.getValue("version") instanceof Number) { obj.setVersion(((Number) json.getValue("version")).intValue()); } }
From source file:io.sqp.proxy.ServerVerticle.java
License:Open Source License
@Override public void start() { // TODO: set subprotocols JsonObject config = config(); String path = config.getString("path", DEFAULT_PATH); int port = config.getInteger("port", DEFAULT_PORT); int poolSize = config.getInteger("connectionPoolSize", DEFAULT_POOL_SIZE); JsonArray backendConfs = config.getJsonArray("backends"); _executorService = Executors.newFixedThreadPool(10); // TODO: set this reasonably // Initialize the backend connection pool BackendConnectionPool connectionPool = new VertxBackendConnectionPool(vertx, poolSize, backendConfs); try {/*from ww w . j ava 2s. c o m*/ connectionPool.init(); } catch (ServerErrorException e) { _logger.log(Level.SEVERE, "Failed to create the connection pool", e); throw new RuntimeException(e.getMessage(), e.getCause()); } HttpServerOptions options = new HttpServerOptions(); int maxFrameSize = options.getMaxWebsocketFrameSize(); // Create the actual server HttpServer server = vertx.createHttpServer(options); // For each incoming websocket connection: create a client connection object server.websocketHandler(socket -> { if (!socket.path().equals(path)) { socket.reject(); return; } // TODO: check sub protocols new VertxClientConnection(_executorService, socket, connectionPool, maxFrameSize); }); // start to listen server.listen(port, result -> { if (result.succeeded()) { _logger.log(Level.INFO, "Listening on port " + port + " and path '" + path + "'..."); setStarted(true); } else { _logger.log(Level.SEVERE, "Failed to listen", result.cause()); setStartingError(result.cause()); } }); }
From source file:net.kuujo.vertigo.network.impl.NetworkImpl.java
License:Apache License
@Override public void update(JsonObject network) { this.name = network.getString(NETWORK_NAME); if (this.name == null) { throw new NetworkFormatException("Network name is mandatory."); }//from w w w. j a v a2 s. c om JsonObject components = network.getJsonObject(NETWORK_COMPONENTS); if (components != null) { for (String name : components.fieldNames()) { this.components.add( NetworkConfig.component(components.getJsonObject(name)).setName(name).setNetwork(this)); } } JsonArray connections = network.getJsonArray(NETWORK_CONNECTIONS); if (connections != null) { for (Object connection : connections) { ConnectionConfig connectionConfig = NetworkConfig.connection((JsonObject) connection); SourceConfig source = connectionConfig.getSource(); if (!source.getIsNetwork()) { String componentName = connectionConfig.getSource().getComponent(); if (componentName == null) { throw new NetworkFormatException("A connection source does not specify a component."); } ComponentConfig component = this.getComponent(componentName); if (component == null) { throw new NetworkFormatException("No component with name " + componentName + " was found while trying to create source vertigo connection."); } OutputConfig output = component.getOutput(); if (output.getPort(source.getPort()) == null) { output.addPort(source.getPort()); } } TargetConfig target = connectionConfig.getTarget(); if (!target.getIsNetwork()) { String componentName = connectionConfig.getTarget().getComponent(); if (componentName == null) { throw new NetworkFormatException("A connection target does not specify a component."); } ComponentConfig component = this.getComponent(componentName); if (component == null) { throw new NetworkFormatException("No target component with name " + componentName + " was found while trying to create target vertigo connection."); } InputConfig input = component.getInput(); if (input.getPort(target.getPort()) == null) { input.addPort(target.getPort()); } } this.connections.add(connectionConfig); } } }
From source file:net.sf.sgsimulator.sgsrest.vertx.services.GridLabSimulatorService.java
License:Open Source License
private void onInit(Vertx vertx, JsonObject config) throws IOException { config = config.getJsonObject("gridlab"); int cycleTimeInMillis = config.getInteger("cycleTimeInMillis");// 60000; boolean intelligence = config.getBoolean("intelligence");// true; int moments = config.getInteger("moments");// 30; Double minRange = config.getDouble("minRange", null); Double maxRange = config.getDouble("maxRange", null); millisperwebpoll = config.getDouble("millisperwebpoll", null); boolean activeClients = config.getBoolean("activeClients");// true; // TODO parametrize Tariff tariff = new TariffExample(); JsonArray sdjson = config.getJsonArray("startDate"); JsonArray edjson = config.getJsonArray("endDate"); Calendar calendarStart = Calendar.getInstance(); calendarStart.set(sdjson.getInteger(0), sdjson.getInteger(1), sdjson.getInteger(2), sdjson.getInteger(3), sdjson.getInteger(4), sdjson.getInteger(5)); Calendar calendarEnd = Calendar.getInstance(); calendarEnd.set(edjson.getInteger(0), edjson.getInteger(1), edjson.getInteger(2), edjson.getInteger(3), edjson.getInteger(4), edjson.getInteger(5)); String configurationFile = config.getString("configurationFile"); String gridFile = config.getString("gridFile"); // definition String scenarioFile = config.getString("scenarioFile"); String gridLabFolder = config.getString("gridLabFolder"); PATHS paths = new PATHS(configurationFile, gridFile, scenarioFile, gridLabFolder); Date[] dates = readSimulationTime(paths.getNetXmlSrcFile()); long diffInMillies = calendarEnd.getTimeInMillis() - calendarStart.getTimeInMillis(); int hoursOfSimulation = (int) TimeUnit.HOURS.convert(diffInMillies, TimeUnit.MILLISECONDS); startDate = calendarStart.getTime(); init(title, startDate, cycleTimeInMillis, paths, intelligence, hoursOfSimulation, tariff, moments, minRange, maxRange, activeClients);/*from w ww . j av a2s.c om*/ }
From source file:org.apache.servicecomb.config.client.MemberDiscovery.java
License:Apache License
public void refreshMembers(JsonObject members) { List<String> newServerAddresses = new ArrayList<>(); members.getJsonArray("instances").forEach(m -> { JsonObject instance = (JsonObject) m; if ("UP".equals(instance.getString("status", "UP"))) { String endpoint = instance.getJsonArray("endpoints").getString(0); String scheme = instance.getBoolean("isHttps", false) ? "https" : "http"; newServerAddresses.add(scheme + SCHEMA_SEPRATOR + endpoint.substring(endpoint.indexOf(SCHEMA_SEPRATOR) + SCHEMA_SEPRATOR.length())); }/*from www . j a v a 2s. co m*/ }); synchronized (lock) { this.configServerAddresses.clear(); this.configServerAddresses.addAll(newServerAddresses); Collections.shuffle(this.configServerAddresses); } LOGGER.info("New config center members: {}", this.configServerAddresses); }