Use the added GeoIPv6 instead of the PHP plugin. Quite messy.

This commit is contained in:
Jano Slota 2014-02-11 14:40:22 +01:00 committed by czaks
parent cbf44d4d75
commit ada45312a4
3 changed files with 739 additions and 6 deletions

View file

@ -447,13 +447,26 @@ if (isset($_POST['delete'])) {
}
if ($config['country_flags']) {
if (!geoip_db_avail(GEOIP_COUNTRY_EDITION)) {
error('GeoIP not available: ' . geoip_db_filename(GEOIP_COUNTRY_EDITION));
require 'geoip.inc';
$gi=geoip_open('GeoIPv6.dat', GEOIP_STANDARD);
function IPv4To6($ip) {
if (strpos($ip, ':') !== false) {
if (strpos($ip, '.') > 0) {
$ip = substr($ip, strrpos($ip, ':')+1);
}
else return $ip; //native ipv6
}
$iparr = array_pad(explode('.', $ip), 4, 0);
$Part7 = base_convert(($iparr[0] * 256) + $iparr[1], 10, 16);
$Part8 = base_convert(($iparr[2] * 256) + $iparr[3], 10, 16);
return '::ffff:'.$Part7.':'.$Part8;
}
if ($country_code = @geoip_country_code_by_name($_SERVER['REMOTE_ADDR'])) {
if (!in_array(strtolower($country_code), array('eu', 'ap', 'o1', 'a1', 'a2')))
$post['body'] .= "\n<tinyboard flag>" . strtolower($country_code) . "</tinyboard>" .
"\n<tinyboard flag alt>" . @geoip_country_name_by_name($_SERVER['REMOTE_ADDR']) . "</tinyboard>";
if ($country_code = geoip_country_code_by_addr_v6($gi, IPv4To6($_SERVER['REMOTE_ADDR']))) {
if (!in_array(strtolower($country_code), array('eu', 'ap', 'o1', 'a1', 'a2')))
$post['body'] .= "\n<tinyboard flag>" . strtolower($country_code) . "</tinyboard>" .
"\n<tinyboard flag alt>" . geoip_country_name_by_addr_v6($gi, IPv4To6($_SERVER['REMOTE_ADDR'])) . "</tinyboard>";
}
}