GeoIP ServerBased not working when ip masquerading is enabled #3463

anonymous-piwik-user opened this Issue Oct 21, 2012 · 3 comments

3 participants


I found that I still had to have the GeoIP databases in the misc folder even though the server based geoip processing is enabled which means that the server based info is not used.

The issue is, in my opinion, in ServerBased.php in the beginning of the getLocation function:

    public function getLocation( $info )
        // geoip modules that are built into servers can't use a forced IP. in this case we try
        // to fallback to another version.
        $myIP = Piwik_IP::getIpFromHeader();
        if ($info['ip'] != $myIP
            && (!isset($info['disable_fallbacks'])
                || !$info['disable_fallbacks']))

If you are anonymizing the IP address it will never match the one from the header or the one returned from the ServerBased localization.
The header contains the full ip address and the server based localization also returns the full ip address but piwik - internally - has the anoymized ip address which is just rarely the same.

I'd suggest to either leave out that check or apply the same anonymization to the $myIP as to the one send into this function.

Piwik Open Source Analytics member

Thanks for the report!

We'll check that it works OK with IP anonymization on.

Piwik Open Source Analytics member

(In [7285]) Fixes #3463, allow serverbased geoip provider to work w/ anonymized IPs & add description about this issue in provider description.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment