summaryrefslogtreecommitdiff
path: root/inc/functions.php
diff options
context:
space:
mode:
authorczaks <marcin@6irc.net>2015-03-24 05:19:25 +0100
committerczaks <marcin@6irc.net>2015-03-24 05:19:25 +0100
commit10f93d0d4367ade293c7a8733989cedcd7ca791a (patch)
tree42c9087e20d952d810f90d10db6a3ed2fee23a96 /inc/functions.php
parent9fa320838b19506d2bfd45f995298e75766530d9 (diff)
implement a protection against transparent proxies
Diffstat (limited to 'inc/functions.php')
-rwxr-xr-xinc/functions.php34
1 files changed, 22 insertions, 12 deletions
diff --git a/inc/functions.php b/inc/functions.php
index ca918e0a..0f70d447 100755
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -810,12 +810,29 @@ function checkBan($board = false) {
if (event('check-ban', $board))
return true;
- $bans = Bans::find($_SERVER['REMOTE_ADDR'], $board, $config['show_modname']);
+ $ips = array();
+
+ $ips[] = $_SERVER['REMOTE_ADDR'];
+
+ if ($config['proxy_check'] && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $ips = array_merge($ips, explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']));
+ }
+
+ foreach ($ips as $ip) {
+ $bans = Bans::find($_SERVER['REMOTE_ADDR'], $board, $config['show_modname']);
- foreach ($bans as &$ban) {
- if ($ban['expires'] && $ban['expires'] < time()) {
- Bans::delete($ban['id']);
- if ($config['require_ban_view'] && !$ban['seen']) {
+ foreach ($bans as &$ban) {
+ if ($ban['expires'] && $ban['expires'] < time()) {
+ Bans::delete($ban['id']);
+ if ($config['require_ban_view'] && !$ban['seen']) {
+ if (!isset($_POST['json_response'])) {
+ displayBan($ban);
+ } else {
+ header('Content-Type: text/json');
+ die(json_encode(array('error' => true, 'banned' => true)));
+ }
+ }
+ } else {
if (!isset($_POST['json_response'])) {
displayBan($ban);
} else {
@@ -823,13 +840,6 @@ function checkBan($board = false) {
die(json_encode(array('error' => true, 'banned' => true)));
}
}
- } else {
- if (!isset($_POST['json_response'])) {
- displayBan($ban);
- } else {
- header('Content-Type: text/json');
- die(json_encode(array('error' => true, 'banned' => true)));
- }
}
}