X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=07c6168dd0591cc9cb539cd5f69e94b68e94cd0d;hb=d9f1de409fac8d9bff593813fec3db1f0c08cdc7;hp=cad94201568df618e40094503437caafb4b92f0b;hpb=02a0a89ec4abd3fa30cf6b6a452f83f0a3c21cfc;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index cad9420..07c6168 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -120,7 +120,9 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi', 'tit_onauth'=>array( 'it' => '(solo aut.)', 'en' => '(only aut.)'), 'tit_onisol'=>array( 'it' => '(isolam.to)', - 'en' => '(isolation)') + 'en' => '(isolation)'), + 'db_failed' =>array('it' => '
Il collegamento al database è fallito.
Temporaneamente tutte le autenticazioni verranno sospese, accederai a Brisk come un utente normale.

Ci scusiamo per il disagio.', + 'en' => 'Connection to the database failed
All authentications are suspended temporarly, you login as normal user.
We are about the limitation') ); @@ -129,7 +131,7 @@ $G_false = FALSE; $G_lng = langtolng($G_lang); $G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 ); -$G_brisk_version = "2.5.0"; +$G_brisk_version = "3.2.0"; /* MLANG: ALL THE INFO STRINGS IN brisk.phh */ $root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': informazioni al tavolo sul chiamante, nuovo stato di supporter del sito.', @@ -277,6 +279,26 @@ Copyright 2006-2009 Matteo Nasta
version '.$G_brisk_version.'

Copyright 2006-2009
Matteo Nastasi (aka mop)

'); +$escinp_from = array( "\"" ); +$escinp_to = array( """ ); + +function escinput($s) +{ + GLOBAL $escinp_from, $escinp_to; + + return str_replace($escinp_from, $escinp_to, $s); +} + +function eschtml($s) +{ + return htmlentities($s); +} + +function esclfhtml($s) +{ + return str_replace("\n", "
\n", htmlentities($s)); +} + function langtolng($lang) { @@ -552,10 +574,11 @@ class Table { define(USER_FLAG_AUTH, 0x02); define(USER_FLAG_MAP_AUTH, 0x0c); - define(USER_FLAG_LISTAUTH, 0x04); define(USER_FLAG_ISOLAUTH, 0x08); +define(USER_FLAG_DBFAILED, 0x10); + // user status define(USER_FLAG_S_NORM, 0x000); // done define(USER_FLAG_S_PAU, 0x100); // done @@ -573,11 +596,15 @@ define(USER_FLAG_S_MOP, 0xb00); // done define(USER_FLAG_S_ALL, 0xf00); // done /* type of user normal, supporter etc ... */ -define(USER_FLAG_TY_ALL, 0xf0000); // done -define(USER_FLAG_TY_NORM, 0x10000); // done -define(USER_FLAG_TY_SUPER, 0x20000); // done +define(USER_FLAG_TY_ALL, 0xff0000); // done +define(USER_FLAG_TY_NORM, 0x010000); // done +define(USER_FLAG_TY_SUPER, 0x020000); // done +// ... other usefull status ... +define(USER_FLAG_TY_SUSPEND, 0x400000); // done +define(USER_FLAG_TY_DISABLE, 0x800000); // done class User { + var $code; // authentication code var $name; // name of the user var $sess; // session of the user var $ip; // ip of the user @@ -617,6 +644,7 @@ class User { if (($thiz =& new User()) == FALSE) return ($G_false); + $thiz->code = -1; $thiz->name = $name; $thiz->sess = $sess; $thiz->ip = $ip; @@ -653,6 +681,7 @@ class User { { GLOBAL $G_false; + $this->code = $from->code; $this->name = $from->name; $this->sess = $from->sess; $this->ip = $from->ip; @@ -714,6 +743,7 @@ class User { if (($thiz =& new User()) == FALSE) return ($G_false); + $thiz->code = $from->code; $thiz->name = $from->name; $thiz->sess = $from->sess; $thiz->ip = $from->ip; @@ -756,6 +786,10 @@ class User { return ($thiz); } + + function code_get() { + return ($this->code); + } function stat_set($stat) { log_main("sess: [".$this->sess. "] NEW STAT: [".$stat."]"); @@ -907,7 +941,7 @@ class Room { function garbage_manager($force) { - GLOBAL $G_lang, $mlang_brisk; + GLOBAL $G_lang, $mlang_brisk, $G_base; $ismod = FALSE; @@ -918,7 +952,7 @@ class Room { if ($force || $this->garbage_timeout < $curtime) { // FIXME BRISK4: include for each kind of table - require_once("briskin5/Obj/briskin5.phh"); + require_once("${G_base}briskin5/Obj/briskin5.phh"); // Before all align times with table timeout for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) { @@ -1096,6 +1130,11 @@ class Room { $ret .= sprintf('stat = "%s";', $user->stat); $ret .= root_wellcome($user); + if ($user->flags & USER_FLAG_DBFAILED) { + $ret .= "gst.st = ".($user->step+1)."; "; + $ret .= show_notify($mlang_brisk['db_failed'][$G_lang], 0, $mlang_brisk['btn_close'][$G_lang], 400, 140); + } + $ret .= sprintf('subst = "%s";', $user->subst); $itin = ($user->flags & USER_FLAG_AUTH ? "" : ""); $itou = ($user->flags & USER_FLAG_AUTH ? "" : ""); @@ -1407,7 +1446,7 @@ class Room { function chatt_send(&$user, $mesg) { - GLOBAL $G_alarm_passwd, $mlang_brisk, $G_lang; + GLOBAL $G_base, $G_alarm_passwd, $mlang_brisk, $G_lang; $only_you = FALSE; // common settings @@ -1596,12 +1635,14 @@ class Room { $user->name = $name_new; // OK - nick changed /* se nome gia' in uso, segnala cosa potrebbe capitare */ if (($user->flags & USER_FLAG_AUTH) == 0) { - $userdb = new LoginDB(); - /* MLANG: "Il nickname \'%s\' è già registrato, se il suo proprietario si autentificherà verrai rinominato d\'ufficio come ghostN." */ - if ($userdb->login_exists($name_new)) { - $prestr = sprintf($mlang_brisk['nickjust'][$G_lang], xcape($name_new)); - $to_user .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $prestr); - } + if (($bdb = BriskDB::create()) != FALSE) { + $bdb->users_load(); + /* MLANG: "Il nickname \'%s\' è già registrato, se il suo proprietario si autentificherà verrai rinominato d\'ufficio come ghostN." */ + if ($bdb->login_exists($name_new)) { + $prestr = sprintf($mlang_brisk['nickjust'][$G_lang], xcape($name_new)); + $to_user .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $prestr); + } + } } log_main("chatt_send start set"); @@ -1752,7 +1793,7 @@ class Room { if ($to_tabl) { // FIXME BRISK4: include for each kind of table - require_once("briskin5/Obj/briskin5.phh"); + require_once("${G_base}briskin5/Obj/briskin5.phh"); // Before all align times with table timeout for ($table_idx = 0 ; $table_idx < TABLES_N ; $table_idx++) { $table_cur =& $this->table[$table_idx]; @@ -1831,8 +1872,6 @@ class Room { return ($G_false); } - - /* * function &add_user(&$room, &$sess, &$idx, $name, $pass, $ip) * @@ -1842,14 +1881,12 @@ class Room { * if ($idx == -3 && ret == FALSE) => wrong password * if ($idx == -1 && ret == FALSE) => no space left * if ($idx == 0 && ret == user) => SUCCESS - * if ($idx == -$idx && ret == user) => SUCCESS (but the login exists in the auth db + * if ($idx == -$idx && ret == user) => SUCCESS (but the login exists in the auth db) */ - - function &add_user(&$sess, &$idx, $name, $pass, $ip) { - GLOBAL $G_false, $CO_list; + GLOBAL $G_base, $G_false, $CO_list; $idx = 0; @@ -1860,7 +1897,8 @@ class Room { $ghost_auth = FALSE; $idx = -1; $idfree = -1; - + $code = FALSE; + if (($name_new = validate_name($name)) == FALSE) { $idx = -2; return ($G_false); @@ -1872,22 +1910,29 @@ class Room { /* if pass != FALSE verify the login with pass */ log_auth("XXX", "auth1"); - $userdb = new LoginDB(); - if ($pass != FALSE) { - log_auth("XXX", "auth2"); - $authenticate = $userdb->login_verify($name_new, $pass); - log_auth("XXX", "authenticate: ".($authenticate != FALSE ? "TRUE" : "FALSE")); - - if ($authenticate != FALSE) { - $user_type = $authenticate->typeget(); - } - else { - $idx = -3; - return ($G_false); - } + + if (($bdb = BriskDB::create()) != FALSE) { + $bdb->users_load(); + if ($pass != FALSE) { // TODO: here add a method to $bdb to check if the db is available. + log_auth("XXX", "auth2"); + $authenticate = $bdb->login_verify($name_new, $pass, $code); + log_auth("XXX", "authenticate: ".($authenticate != FALSE ? "TRUE" : "FALSE")); + + if ($authenticate != FALSE) { + $user_type = $authenticate->type_get(); + } + else { + $idx = -3; + return ($G_false); + } + } + else { + $login_exists = $bdb->login_exists($name_new); + } } else { - $login_exists = $userdb->login_exists($name_new); + // if db is down, send a warning and verify only current users + // no actions at this moment } for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { /* free user ? */ @@ -1895,7 +1940,7 @@ class Room { if ($idx == -1) $idx = $i; } - if ($idfree == -1 && strcmp("", $this->user[$i]->sess) == 0) { + if ($idfree == -1 && strcmp($this->user[$i]->sess, "") == 0) { $idfree = $i; continue; // NOTE: CHECK IT !! } @@ -1915,6 +1960,8 @@ class Room { log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new)); + /* there is another user logged with your account and you and him have authenticated => che new user + get the session of the old user */ if ($ghost > -1 && $ghost_auth && ($authenticate != FALSE)) { /* swap session */ @@ -1933,7 +1980,7 @@ class Room { $table_idx = $ghost_user->table; if ($ghost_user->stat == "table" && $this->table[$table_idx]->player_n == PLAYERS_N) { // FIXME BRISK4: include for each kind of table - require_once("briskin5/Obj/briskin5.phh"); + require_once("${G_base}briskin5/Obj/briskin5.phh"); if (($brisem = Briskin5::lock_data($table_idx)) != FALSE) { if (($bri = &Briskin5::load_data($table_idx)) != FALSE) { if ($bri->the_end != TRUE) { @@ -1969,12 +2016,14 @@ class Room { $this->user[$idx]->bantime = 0; $this->user[$idx]->ip = $ip; - $this->user[$idx]->flags = ($authenticate != FALSE ? USER_FLAG_AUTH : 0x00) | $user_type; - + $this->user[$idx]->flags = $user_type; + $this->user[$idx]->flags |= ($authenticate != FALSE ? USER_FLAG_AUTH : 0x00); + $this->user[$idx]->flags |= ( ($pass != FALSE && $bdb == FALSE) ? USER_FLAG_DBFAILED : 0x00); log_auth("XXX", sprintf("FLAGS: [%x]", $this->user[$idx]->flags)); if ($authenticate != FALSE) { + $this->user[$idx]->code = $authenticate->code_get(); $this->user[$idx]->flags |= USER_FLAG_LISTAUTH; if (isset($CO_list)) { @@ -2031,11 +2080,13 @@ class Room { } } // if ($ghost > -1) { - log_main(sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name_new)); $real_idx = $idx; if ($login_exists) $idx = -($idx + 1); - return ($this->user[$real_idx]); + log_main(sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s] count [%d] name [%s] code [%s]", $idx, $sess, $name_new, count($this->user),$this->user[$real_idx]->name, $this->user[$real_idx]->code)); + + $ret = $this->user[$real_idx]; + return ($ret); } return ($G_false); @@ -2523,21 +2574,6 @@ function log_legal($curtime, &$user, $where, $mesg) } } -function log_points($curtime, &$user, $where, $mesg) -{ - GLOBAL $_SERVER; - - if (($fp = @fopen(LEGAL_PATH."/points.log", 'a')) != FALSE) { - /* Unix time | session | nickname | IP | where was | mesg */ - fwrite($fp, sprintf("%ld|%s|%s|%s|%s|%s|%s|\n", $curtime, $user->sess, - ($user->flags & USER_FLAG_AUTH ? 'A' : 'N'), - $user->name, $_SERVER['REMOTE_ADDR'], $where , $mesg)); - fclose($fp); - } -} - - - function lock_banlist() {