X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=62b80a77109f9c8cef8f03a2d6f59d3e237a1563;hb=28be75bdd1253bb56c8bef5476f59be63013eb71;hp=3a8b43a2a37d34868dabe8431aecdfb02e8cfb1c;hpb=8e5720b1b6d33297aeb6dad8aa26b3091f5e4b7d;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 3a8b43a..62b80a7 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -90,6 +90,7 @@ define('DEBUGGING', "no-debugging"); require_once("$DOCUMENT_ROOT/Etc/".BRISK_CONF); require_once("${G_base}Obj/ipclass.phh"); +require_once("${G_base}Obj/provider_proxy.phh"); $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi', 'en' => 'back standing' ), @@ -446,6 +447,7 @@ function versions_cmp($v1, $v2) return 0; } +// return string with IPV4 address function addrtoipv4($addr) { $ipv4addr_arr = explode(':' , $addr); @@ -1039,6 +1041,7 @@ class Brisk var $ban_list; // ban list (authized allowed) var $black_list; // black list (anti-dos, noone allowed) + var $provider_proxy; // list of provider/browser that offer proxy service var $ghost_sess; var $delay_mgr; @@ -1052,13 +1055,13 @@ class Brisk } // constructor - static function create($crystal_filename, $ban_list, $black_list) { + static function create($crystal_filename, $ban_list, $black_list, $prov_proxy) { if (($brisk_ser = @file_get_contents($crystal_filename)) != FALSE) { if (($brisk = unserialize($brisk_ser)) != FALSE) { fprintf(STDERR, "ROOM FROM FILE\n"); rename($crystal_filename, $crystal_filename.".old"); - $brisk->reload(TRUE, $ban_list, $black_list); + $brisk->reload(TRUE, $ban_list, $black_list, $prov_proxy); return($brisk); } @@ -1074,6 +1077,7 @@ class Brisk $thiz->ban_list = IpClass::create(); $thiz->black_list = IpClass::create(); + $thiz->provider_proxy = ProviderProxy::create(); $thiz->ghost_sess = new GhostSess(); for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { @@ -1090,14 +1094,14 @@ class Brisk static::$sess_cur = FALSE; - $thiz->reload(TRUE, $ban_list, $black_list); + $thiz->reload(TRUE, $ban_list, $black_list, $prov_proxy); return ($thiz); } - function reload($is_first, $ban_list, $black_list) + function reload($is_first, $ban_list, $black_list, $prov_proxy) { - fprintf(STDERR, "RELOAD STUFF (%d)(%d)\n", count($ban_list), count($black_list)); + fprintf(STDERR, "RELOAD STUFF (%d)(%d)(%d)\n", count($ban_list), count($black_list), count($prov_proxy)); if (defined('CURL_DE_SAC_VERS')) { if (brisk_cds_reload($this) == FALSE) { @@ -1106,6 +1110,7 @@ class Brisk } $this->ban_list->update($ban_list); $this->black_list->update($black_list); + $this->provider_proxy->update($prov_proxy); if (!$is_first) { $this->banned_kickoff(); @@ -1170,6 +1175,11 @@ class Brisk return ($this->black_list->check($ip_str)); } + function pproxy_realip($header, $ip_str) + { + return ($this->provider_proxy->realip($header, $ip_str)); + } + function users_cleanup() { for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { @@ -2604,15 +2614,16 @@ class Brisk function request_mgr(&$s_a_p, $header, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie) { - GLOBAL $G_ban_list, $G_black_list; + GLOBAL $G_ban_list, $G_black_list, $G_provider_proxy; printf("NEW_SOCKET (root): %d PATH [%s]\n", intval($new_socket), $path); - $remote_addr = addrtoipv4($addr); + // $remote_addr = addrtoipv4($addr); + $remote_addr = $this->pproxy_realip($header, addrtoipv4($addr)); fprintf(STDERR, "\n\n\n PRE_BLACK_CHECK \n\n\n"); if ($this->black_check($remote_addr)) { // TODO: waiting async 5 sec before close - fprintf(STDERR, "\n\n\n BLACK_CHECK \n\n\n"); + fprintf(STDERR, "\n\n\n BLACK CHECK\n\n\n"); return (FALSE); }