in plugins/request/src/main/java/org/apache/unomi/plugins/request/actions/SetRemoteHostInfoAction.java [107:166]
public int execute(Action action, Event event) {
HttpServletRequest httpServletRequest = (HttpServletRequest) event.getAttributes().get(Event.HTTP_REQUEST_ATTRIBUTE);
if (httpServletRequest == null) {
return EventService.NO_CHANGE;
}
Session session = event.getSession();
if (session == null) {
return EventService.NO_CHANGE;
}
String remoteAddr = httpServletRequest.getRemoteAddr();
LOGGER.debug("Remote address is {}", remoteAddr);
String remoteAddrParameter = httpServletRequest.getParameter("remoteAddr");
LOGGER.debug("Remote address param is {}", remoteAddrParameter);
String xff = httpServletRequest.getHeader("X-Forwarded-For");
LOGGER.debug("X-Forwarded-For is {}", xff);
if (remoteAddrParameter != null && !remoteAddrParameter.isEmpty()) {
remoteAddr = remoteAddrParameter;
} else if (xff != null && !xff.isEmpty()) {
if (xff.indexOf(',') > -1) {
xff = xff.substring(0, xff.indexOf(','));
}
remoteAddr = xff;
}
LOGGER.debug("Remote address used to localized is {}", remoteAddr);
try {
if (isAValidIPAddress(remoteAddr)) {
ipLookupInDatabase(remoteAddr, session);
} else {
session.setProperty("sessionCountryCode", defaultSessionCountryCode);
session.setProperty("sessionCountryName", defaultSessionCountryName);
session.setProperty("sessionCity", defaultSessionCity);
session.setProperty("sessionAdminSubDiv1", defaultSessionAdminSubDiv1);
session.setProperty("sessionAdminSubDiv2", defaultSessionAdminSubDiv2);
session.setProperty("sessionIsp", defaultSessionIsp);
Map<String, Double> location = new HashMap<String, Double>();
location.put("lat", defaultLatitude);
location.put("lon", defaultLongitude);
session.setProperty("location", location);
}
session.setProperty("countryAndCity", session.getProperty("sessionCountryName") + "@@" + session.getProperty("sessionCity") +
"@@" + session.getProperty("sessionAdminSubDiv1") + "@@" + session.getProperty("sessionAdminSubDiv2"));
} catch (Exception e) {
LOGGER.error("Cannot lookup IP", e);
}
UserAgent agent =userAgentDetectorService.parseUserAgent(httpServletRequest.getHeader("User-Agent"));
session.setProperty("operatingSystemFamily", agent.getOperatingSystemFamily());
session.setProperty("operatingSystemName", agent.getOperatingSystemName());
session.setProperty("userAgentName", agent.getUserAgentName());
session.setProperty("userAgentVersion", agent.getUserAgentVersion());
session.setProperty("userAgentNameAndVersion", agent.getUserAgentNameAndVersion());
session.setProperty("deviceCategory", agent.getDeviceCategory());
session.setProperty("deviceName", agent.getDeviceName());
session.setProperty("deviceBrand", agent.getDeviceBrand());
return EventService.SESSION_UPDATED;
}