public int execute()

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;
    }