package rfx.server.log.kafka; import io.netty.handler.codec.http.Cookie; import io.netty.handler.codec.http.FullHttpResponse; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import java.util.HashMap; import java.util.List; import java.util.Map; import rfx.server.http.common.CookieUtil; import rfx.server.http.common.NettyHttpUtil; import rfx.server.log.handlers.StaticFileHandler; import rfx.server.util.StringUtil; public class KafkaLogHandlerUtil { public static FullHttpResponse webLogHandler(String ipAddress, HttpRequest request, String uri, String kafkaType) { FullHttpResponse response = StaticFileHandler.theBase64Image1pxGif(); if(NettyHttpUtil.isBadLogRequest(uri)){ return response; } KafkaLogHandler kafkaHandler = HttpLogKafkaHandler.getKafkaHandler(kafkaType); if(kafkaHandler != null){ Cookie userid = CookieUtil.getAnomyousCookie(request); if (userid != null) { kafkaHandler.writeLogToKafka(ipAddress, request); CookieUtil.setAnomyousCookie(userid, response); } else { // browser not accept cross-domain cookies kafkaHandler.writeLogToKafka(ipAddress, request); } //RedisManagerUtil.logCounter(kafkaType); //RedisManagerUtil.increaseIpAddressAndHttpPath(ipAddress, kafkaType); } return response; } public static FullHttpResponse mobileLogHandler(String ipAddress, HttpRequest request, String uri, String kafkaType) { QueryStringDecoder qdecoder = new QueryStringDecoder(uri); Map<String, List<String>> params = qdecoder.parameters(); String callbackFunc = NettyHttpUtil.getParamValue("callback", params, ""); Map<String, Object> data = new HashMap<>(2); if(NettyHttpUtil.isBadLogRequest(uri)){ data.put("status", "fail"); data.put("msg", "is bad log request"); return StaticFileHandler.theJSONContent(NettyHttpUtil.responseAsJsonp(callbackFunc, data)); } KafkaLogHandler kafkaHandler = HttpLogKafkaHandler.getKafkaHandler(kafkaType); if(kafkaHandler != null){ kafkaHandler.writeMobileLogToKafka(ipAddress, request); } data.put("status", "ok"); data.put("msg", "success"); FullHttpResponse response = StaticFileHandler.theJavaScriptContent(NettyHttpUtil.responseAsJsonp(callbackFunc, data)); String headerOrigin = request.headers().get("Origin"); if(StringUtil.isNotEmpty(headerOrigin)){ response.headers().set("Access-Control-Allow-Origin",headerOrigin); response.headers().set("Access-Control-Allow-Methods","GET"); response.headers().set("Access-Control-Allow-Credentials","true"); } return response; } }