Add MaxMind debug info

This commit is contained in:
Colin McDonald 2016-06-26 15:01:00 -04:00
parent 4313f6f14f
commit 3a838b8b56
3 changed files with 16 additions and 1 deletions

View File

@ -331,7 +331,7 @@ public final class APIv3 extends AbstractVerticle {
ctx.response().setStatusCode(code); ctx.response().setStatusCode(code);
if (!ctx.request().path().contains("dumps")) { if (!ctx.request().path().contains("dumps")) {
log.info(gson.toJson(response)); //log.info(gson.toJson(response));
} }
ctx.response().end(gson.toJson(response)); ctx.response().end(gson.toJson(response));

View File

@ -6,6 +6,7 @@ import fr.javatic.mongo.jacksonCodec.Entity;
import fr.javatic.mongo.jacksonCodec.objectId.Id; import fr.javatic.mongo.jacksonCodec.objectId.Id;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.frozenorb.apiv3.APIv3; import net.frozenorb.apiv3.APIv3;
import net.frozenorb.apiv3.maxmind.MaxMindResult; import net.frozenorb.apiv3.maxmind.MaxMindResult;
import net.frozenorb.apiv3.util.MaxMindUtils; import net.frozenorb.apiv3.util.MaxMindUtils;
@ -15,6 +16,7 @@ import java.time.Instant;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@Slf4j
@Entity @Entity
@AllArgsConstructor @AllArgsConstructor
public final class IpIntel { public final class IpIntel {
@ -34,22 +36,31 @@ public final class IpIntel {
} }
public static void findOrCreateById(String id, SingleResultCallback<IpIntel> callback) { public static void findOrCreateById(String id, SingleResultCallback<IpIntel> callback) {
log.info("ip intel for " + id + " queried...");
findById(id, (existingIpIntel, error) -> { findById(id, (existingIpIntel, error) -> {
if (error != null) { if (error != null) {
log.info("ip intel for " + id + " db check failed");
callback.onResult(null, error); callback.onResult(null, error);
} else if (existingIpIntel != null) { } else if (existingIpIntel != null) {
log.info("ip intel for " + id + " found in db, returning that");
callback.onResult(existingIpIntel, null); callback.onResult(existingIpIntel, null);
} else { } else {
log.info("ip intel for " + id + " not found, calling maxmind");
MaxMindUtils.getInsights(id, (maxMindResult, error2) -> { MaxMindUtils.getInsights(id, (maxMindResult, error2) -> {
if (error2 != null) { if (error2 != null) {
log.info("ip intel for " + id + " maxmind query failed");
callback.onResult(null, error2); callback.onResult(null, error2);
} else { } else {
log.info("ip intel for " + id + " returned from maxmind, inserting");
IpIntel newIpIntel = new IpIntel(id, maxMindResult); IpIntel newIpIntel = new IpIntel(id, maxMindResult);
ipIntelCollection.insertOne(newIpIntel, (ignored, error3) -> { ipIntelCollection.insertOne(newIpIntel, (ignored, error3) -> {
if (error3 != null) { if (error3 != null) {
log.info("ip intel for " + id + " insertion failed");
callback.onResult(null, error3); callback.onResult(null, error3);
} else { } else {
log.info("ip intel for " + id + " insertion succeeded");
callback.onResult(newIpIntel, null); callback.onResult(newIpIntel, null);
} }
}); });

View File

@ -6,11 +6,13 @@ import io.vertx.core.http.HttpClient;
import io.vertx.core.http.HttpClientOptions; import io.vertx.core.http.HttpClientOptions;
import io.vertx.core.json.JsonObject; import io.vertx.core.json.JsonObject;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import net.frozenorb.apiv3.APIv3; import net.frozenorb.apiv3.APIv3;
import net.frozenorb.apiv3.maxmind.MaxMindResult; import net.frozenorb.apiv3.maxmind.MaxMindResult;
import java.util.Base64; import java.util.Base64;
@Slf4j
@UtilityClass @UtilityClass
public class MaxMindUtils { public class MaxMindUtils {
@ -21,6 +23,8 @@ public class MaxMindUtils {
public static void getInsights(String ip, SingleResultCallback<MaxMindResult> callback) { public static void getInsights(String ip, SingleResultCallback<MaxMindResult> callback) {
String authHeader = "Basic " + Base64.getEncoder().encodeToString((maxMindUserId + ":" + maxMindLicenseKey).getBytes(Charsets.UTF_8)); String authHeader = "Basic " + Base64.getEncoder().encodeToString((maxMindUserId + ":" + maxMindLicenseKey).getBytes(Charsets.UTF_8));
log.warn("Requesting ip info for " + ip + " from MaxMind.");
httpsClient.get(443, "geoip.maxmind.com", "/geoip/v2.1/insights/" + ip, (response) -> { httpsClient.get(443, "geoip.maxmind.com", "/geoip/v2.1/insights/" + ip, (response) -> {
response.bodyHandler((body) -> { response.bodyHandler((body) -> {
JsonObject bodyJson = new JsonObject(body.toString()); JsonObject bodyJson = new JsonObject(body.toString());