From ada45312a4b1ddc4f975dcd9c1d272a73a701ffd Mon Sep 17 00:00:00 2001 From: Jano Slota Date: Tue, 11 Feb 2014 14:40:22 +0100 Subject: Use the added GeoIPv6 instead of the PHP plugin. Quite messy. --- post.php | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'post.php') diff --git a/post.php b/post.php index 742a95b0..2f2d3ff4 100644 --- a/post.php +++ b/post.php @@ -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" . strtolower($country_code) . "" . - "\n" . @geoip_country_name_by_name($_SERVER['REMOTE_ADDR']) . ""; + + 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" . strtolower($country_code) . "" . + "\n" . geoip_country_name_by_addr_v6($gi, IPv4To6($_SERVER['REMOTE_ADDR'])) . ""; } } -- cgit v1.3