diff options
| author | Jano Slota <jano@alokal.eu> | 2014-07-04 02:47:24 +0200 |
|---|---|---|
| committer | czaks <marcin@6irc.net> | 2014-07-06 01:29:12 +0200 |
| commit | db3c7f4ee984002fccb86e0cb3fda45edde74351 (patch) | |
| tree | 3559fe5daab91f50f134e8bb9a12cb1ac9c7595e | |
| parent | 4adf893c3906bebb29fc1720793366291da87b58 (diff) | |
Rework the GeoIP code, add country-based poster names
| -rw-r--r-- | inc/config.php | 7 | ||||
| -rw-r--r-- | inc/functions.php | 19 | ||||
| -rw-r--r-- | post.php | 22 |
3 files changed, 27 insertions, 21 deletions
diff --git a/inc/config.php b/inc/config.php index 4ffff767..1dbec895 100644 --- a/inc/config.php +++ b/inc/config.php @@ -773,9 +773,14 @@ // $config['board_path'] if you wish to change the URL. $config['board_abbreviation'] = '/%s/'; - // The default name (ie. Anonymous). Can be an array - in that case it's picked randomly from the array. + // The default name (e.g. Anonymous). Can be an array - in that case it's picked randomly from the array. // Example: $config['anonymous'] = array('Bernd', 'Senpai', 'Jonne', 'ChanPro'); $config['anonymous'] = 'Anonymous'; + // Pick the default name based on the poster's country. Can contain subarrays and is picked randomly from the them. + // If the user posts from a country you have not set a name for, his name is going to be whatever you set in $config['anonymous']. + // Example 1: $config['country_anonymous'] = array('cz' => 'Pepik', 'pl' => 'Karol Wojtyla', 'de' => 'Bernd', 'fi' => 'Jonne'); + // Example 2: $config['country_anonymous'] = array('cz' => array('Pepik', 'Bohus', 'Lada'), 'pl' => array('Karol Wojtyla', 'Demon Pedofyl'); + $config['country_anonymous'] = false; // Number of reports you can create at once. $config['report_limit'] = 3; diff --git a/inc/functions.php b/inc/functions.php index 6ce76472..4313e531 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -21,6 +21,8 @@ require_once 'inc/api.php'; require_once 'inc/bans.php'; require_once 'inc/lib/gettext/gettext.inc'; +use Lifo\IP\IP; + // the user is not currently logged in as a moderator $mod = false; @@ -242,6 +244,23 @@ function loadConfig() { if (is_array($config['anonymous'])) $config['anonymous'] = $config['anonymous'][array_rand($config['anonymous'])]; + + if ($config['country_flags'] || $config['country_anonymous']) { + require_once 'inc/lib/geoip/geoip.inc'; + $gi=geoip_open('inc/lib/geoip/GeoIPv6.dat', GEOIP_STANDARD); + $ipaddy = $_SERVER['REMOTE_ADDR']; + if (IP::isIPv4($ipaddy)) + $ipaddy = IP::to_ipv6($ipaddy, true); + global $country_code, $country_name; + $country_code = strtolower(geoip_country_code_by_addr_v6($gi, $ipaddy)); + $country_name = geoip_country_name_by_addr_v6($gi, $ipaddy); + if (isset($config['country_anonymous'][$country_code])) { + if (is_array($config['country_anonymous'][$country_code])) + $config['anonymous'] = $config['country_anonymous'][$country_code][array_rand($config['country_anonymous'][$country_code])]; + else + $config['anonymous'] = $config['country_anonymous'][$country_code]; + } + } event('load-config'); @@ -488,26 +488,8 @@ if (isset($_POST['delete'])) { } if ($config['country_flags']) { - require 'inc/lib/geoip/geoip.inc'; - $gi=geoip\geoip_open('inc/lib/geoip/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\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\geoip_country_name_by_addr_v6($gi, ipv4to6($_SERVER['REMOTE_ADDR']))."</tinyboard>"; - } + if (!in_array($country_code, array('eu', 'ap', 'o1', 'a1', 'a2'))) + $post['body'] .= "\n<tinyboard flag>".$country_code."</tinyboard>\n<tinyboard flag alt>".$country_name."</tinyboard>"; } if ($config['user_flag'] && isset($_POST['user_flag'])) |
