X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fbrisk.phh;h=9db417c7154f9607d55303dce416c95f2d9a7bdf;hb=1c864a7f5b393bddf3ef4ce94886703d2ac3b21c;hp=32168dc1801af1168a7f7f89ad8bf4493c0609d4;hpb=5b42d77cdb09b136c0243184e46a43db453ef8ab;p=brisk.git diff --git a/web/brisk.phh b/web/brisk.phh index 32168dc..9db417c 100644 --- a/web/brisk.phh +++ b/web/brisk.phh @@ -20,7 +20,7 @@ */ define( FTOK_PATH, "/var/lib/brisk"); -define(TABLES_N, 4); +define(TABLES_N, 8); define(PLAYERS_N, 3); define(MAX_POINTS, 5); define(MAX_PLAYERS, (PLAYERS_N * TABLES_N)); @@ -29,14 +29,34 @@ define(COMM_GEN_N, 50); define(SESS_LEN, 13); define(STREAM_TIMEOUT, 20); define(EXPIRE_TIME, 180); -define(GARBAGE_TIMEOUT, 30); +define(GARBAGE_TIMEOUT, 10); define(NICKSERV, "SERVER"); define(BRISK_DEBUG, FALSE); // define(DEBUGGING, "local"); +/* +$root_wellarr = Array ( 'GOOGLE', + 'pinollo lanollo', + 'rorella liolla' ); +*/ +$root_wellarr = Array ( ); +$table_wellarr = Array ( ); + +$G_brisk_version = "0.4.2"; + +/*$G_room_help = ' +Brisk - Ver. '.$G_brisk_version.'

+Copyright 2006 Matteo Nastasi

'; +*/ +$G_room_help = 'Brisk - Ver. '.$G_brisk_version.'

Copyright 2006 Matteo Nastasi

'; + + function xcape($s) { - return (str_replace('\\', '\\\\', str_replace('@', '@', str_replace('|', '¦', htmlentities($s,ENT_COMPAT,"UTF-8"))))); + $from = array ( '\\', '@', '|' ); + $to = array ( '\\\\', '@', '¦' ); + + return (str_replace($from, $to, htmlentities($s,ENT_COMPAT,"UTF-8"))); } @@ -219,8 +239,37 @@ class Table { { $this->player[$idx] = $player; } -} + function user_add($idx) + { + $this->player[$this->player_n] = $idx; + $this->player_n++; + + return ($this->player_n - 1); + } + + function user_rem(&$bri, &$user) + { + $tabpos = $user->table_pos; + + /* verifico la consistenza dei dati */ + if ($bri->user[$this->player[$tabpos]] == $user) { + + /* aggiorna l'array dei giocatori al tavolo. */ + for ($i = $tabpos ; $i < $this->player_n-1 ; $i++) { + $this->player[$i] = $this->player[$i+1]; + $user_cur = &$bri->user[$this->player[$i]]; + $user_cur->table_pos = $i; + } + $this->player_n--; + } + else { + log_main($user->sess, "INCONSISTENCY ON TABLE."); + } + } + +} // End class Table + class User { var $name; // name of the user var $sess; // session of the user @@ -343,14 +392,10 @@ class brisco { } } } + /* aggiorna l'array dei giocatori al tavolo. */ - for ($i = $user->table_pos ; $i < $table->player_n-1 ; $i++) { - $table->player[$i] = $table->player[$i+1]; - $user_cur = &$this->user[$table->player[$i]]; - $user_cur->table_pos = $i; - } - $this->table[$table_idx]->player_n--; - + $table->user_rem(&$this, &$user); + for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { $user_cur = &$this->user[$i]; if ($user_cur->sess == '' || $user_cur->stat != 'room') @@ -362,7 +407,7 @@ class brisco { $ret = "gst.st = ".($user_cur->step+1)."; "; if ($from_table && ($user_cur->table == $table_idx || $user_cur == $user)) { - $ret .= 'gst.st_loc++; the_end=true; document.location.assign("index.php");|'; + $ret .= 'gst.st_loc++; the_end=true; window.onunload = null; document.location.assign("index.php");|'; // $ret .= 'gst.st_loc++; document.location.assign("index.php");|'; log_main("DOCUMENT.index.php", "from table"); } @@ -480,7 +525,7 @@ class brisco { if (strncmp($user_mesg, "/nick ", 6) == 0) { log_main($user->sess, "chatt_send BEGIN"); - $name_new = substr(trim(substr($user_mesg, 6)),0,12); + $name_new = str_replace(' ', '_', substr(trim(substr($user_mesg, 6)),0,12)); $user_mesg = "COMMAND ".$user_mesg; // Search dup name // change @@ -511,7 +556,7 @@ class brisco { continue; if ($user_cur->stat == 'room') { if ($user->stat == 'room' && $user->subst == 'standup') { - standup_update(&$this,&$user); + $this->standup_update(&$user); } else if ($user->stat == 'room' && $user->subst == 'sitdown' || $user->stat == 'table') { @@ -552,13 +597,115 @@ class brisco { } $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; "; - $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('chatt_sub("%s",\'%s\');', + $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('chatt_sub("%s","%s");', $dt.xcape($user->name), xcape($user_mesg)); $user_cur->step++; } } } + + function &get_user($sess, &$idx) + { + GLOBAL $PHP_SELF; + + if (strlen($sess) == SESS_LEN) { + for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { + if (strcmp($sess, $this->user[$i]->sess) == 0) { + // find it + $idx = $i; + return ($this->user[$i]); + } + } + log_main($sess, sprintf("get_user: Wrong sess from page [%s]",$PHP_SELF)); + // for ($i = 0 ; $i < MAX_PLAYERS ; $i++) + // log_main($sess, sprintf("get_user: Wrong sess compared with [%s]",$this->user[$i]->sess)); + } + else { + log_main($sess, sprintf("get_user: Wrong strlen [%s]",$sess)); + } + return (FALSE); + } + + /* + * function &add_user(&$bri, &$sess, &$idx, $name) + * + * RETURN VALUE: + * if ($idx != -1 && ret == FALSE) => duplicated nick + * if ($idx == -1 && ret == FALSE) => no space left + * if (ret == TRUE) => SUCCESS + */ + function &add_user(&$sess, &$idx, $name) + { + $idx = -1; + $idfree = -1; + + log_auth("XXX", sprintf("ARRIVA: [%s]", $sess)); + if (validate_sess($sess) == FALSE) + $sess = ""; + + for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { + /* free user ? */ + if (strcmp($sess, $this->user[$i]->sess) == 0) { + if ($idx == -1) + $idx = $i; + } + if ($idfree == -1 && strcmp("", $this->user[$i]->sess) == 0) { + $idfree = $i; + } + if (strcmp($this->user[$i]->name, $name) == 0) { + $idx = $i; + break; + } + } + if ($idx == -1) + $idx = $idfree; + + log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name)); + + if ($idx != -1 && $i == MAX_PLAYERS) { + /* SUCCESS */ + if ($sess == "") { + $this->user[$idx]->sess = uniqid(""); + $sess = $this->user[$idx]->sess; + + } + else { + $this->user[$idx]->sess = $sess; + } + $this->user[$idx]->name = $name; + $this->user[$idx]->stat = "room"; + $this->user[$idx]->subst = "standup"; + + log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name)); + + return ($this->user[$idx]); + } + + return (FALSE); + } + function standup_update(&$user) + { + for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { + $user_cur = &$this->user[$i]; + if ($user_cur->sess == '') + continue; + + log_main("STANDUP START", $user_cur->stat); + + if ($user_cur->stat == 'room') { + $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ".standup_content($this, $user_cur); + if ($user_cur == $user) + $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('$("myname").innerHTML = "%s: ";', xcape($user->name)); + + log_main("FROM STANDUP", "NAME: ".$user_cur->name." SENDED: ".$user_cur->comm[$user_cur->step % COMM_N]); + + $user_cur->step++; + } + } + } + + } // end class brisco function make_seed() @@ -715,80 +862,18 @@ function save_data(&$bri) return ($ret); } -function &get_user(&$bri, $sess, &$idx) -{ - GLOBAL $PHP_SELF; - - if (strlen($sess) == SESS_LEN) { - for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { - if (strcmp($sess, $bri->user[$i]->sess) == 0) { - // find it - $idx = $i; - return ($bri->user[$i]); - } - } - log_main($sess, sprintf("get_user: Wrong sess from page [%s]",$PHP_SELF)); - // for ($i = 0 ; $i < MAX_PLAYERS ; $i++) - // log_main($sess, sprintf("get_user: Wrong sess compared with [%s]",$bri->user[$i]->sess)); - } - else { - log_main($sess, sprintf("get_user: Wrong strlen [%s]",$sess)); - } - return (FALSE); -} - -/* - * function &add_user(&$bri, &$sess, &$idx, $name) - * - * RETURN VALUE: - * if ($idx != -1 && ret == FALSE) => duplicated nick - * if ($idx == -1 && ret == FALSE) => no space left - * if (ret == TRUE) => SUCCESS - */ -function &add_user(&$bri, &$sess, &$idx, $name) -{ - $idx = -1; - - for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { - /* free user ? */ - if (strcmp($sess, $bri->user[$i]->sess) == 0) { - if ($idx == -1) - $idx = $i; - } - if (strcmp($bri->user[$i]->name, $name) == 0) { - $idx = $i; - break; - } - } - if ($idx != -1 && $i == MAX_PLAYERS) { - /* SUCCESS */ - $bri->user[$idx]->sess = uniqid(""); - $sess = $bri->user[$idx]->sess; - $bri->user[$idx]->name = $name; - $bri->user[$idx]->stat = "room"; - $bri->user[$idx]->subst = "standup"; - - log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name)); - - return ($bri->user[$idx]); - } - else { - return (FALSE); - } -} - function table_act_content($isstanding, $sitted, $table, $cur_table) { $ret = ""; if ($isstanding) { if ($sitted < PLAYERS_N) { - $ret = sprintf('', $table, $table); + $ret = sprintf('', $table, $table); } } else { if ($table == $cur_table) - $ret = sprintf(''); + $ret = sprintf(''); else $ret = ""; } @@ -822,8 +907,10 @@ function table_content($bri, $user, $table_idx) $content .= sprintf("%s%s%s
",$hilion, xcape($user_cur->name), $hilioff); } + /* for ( ; $i < PLAYERS_N ; $i++) $content .= "
"; + */ $ret .= sprintf('$("table%d").innerHTML = "%s";', $table_idx, $content); @@ -838,7 +925,14 @@ function standup_content(&$bri, $user) if ($user->stat != 'room') return; - $content .= ''; + for ($e = 0 , $ct = 0 ; $ct < 4 && $e < MAX_PLAYERS ; $e++) { + if ($bri->user[$e]->sess == "" || $bri->user[$e]->stat != "room" || $bri->user[$e]->name == "") + continue; + $ct++; + } + + $content .= sprintf('
', $ct); + for ($e = 0 , $ct = 0 ; $e < MAX_PLAYERS ; $e++) { if ($bri->user[$e]->sess == "" || $bri->user[$e]->stat != "room" || $bri->user[$e]->name == "") continue; @@ -853,7 +947,7 @@ function standup_content(&$bri, $user) else { $hilion = ""; $hilioff = ""; } - $content .= sprintf('',$hilion, xcape($bri->user[$e]->name), $hilioff); + $content .= sprintf('',$hilion, xcape($bri->user[$e]->name), $hilioff); if (($ct % 4) == 3) { $content .= ''; } @@ -862,42 +956,21 @@ function standup_content(&$bri, $user) } $content .= '
%s%s%s%s%s%s
'; - $content .= '
'; - - $ret .= sprintf('$("standup").innerHTML = "%s";', $content); + $content2 = ''; + $ret .= sprintf('$("standup").innerHTML = "%s"; $("esco").innerHTML = "%s";', + $content, $content2); return ($ret); } -function standup_update(&$bri, &$user) -{ - for ($i = 0 ; $i < MAX_PLAYERS ; $i++) { - $user_cur = &$bri->user[$i]; - if ($user_cur->sess == '') - continue; - - log_main("STANDUP START", $user_cur->stat); - - if ($user_cur->stat == 'room') { - $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ".standup_content($bri, $user_cur); - if ($user_cur == $user) - $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('$("myname").innerHTML = "%s: ";', xcape($user->name)); - - log_main("FROM STANDUP", "NAME: ".$user_cur->name." SENDED: ".$user_cur->comm[$user_cur->step % COMM_N]); - - $user_cur->step++; - } - } -} - -function show_notify($text, $tout, $butt) +function show_notify($anc, $text, $tout, $butt) { log_main("SHOW_NOTIFY", $text); - return sprintf('var noti = new notify(gst,$("bg"),"%s",%d,"%s");', $text, $tout,$butt); + return sprintf('var noti = new notify(gst,$("%s"),"%s",%d,"%s");', $anc, $text, $tout,$butt); } @@ -1030,17 +1103,37 @@ function show_table_info(&$bri, &$table, $table_pos) } $noty .= "

"; - $ret .= show_notify($noty, 3000, "torna alla partita"); + $ret .= show_notify("bg", $noty, 3000, "torna alla partita"); return ($ret); } +function root_wellcome($user) +{ + GLOBAL $root_wellarr; + + for ($i = 0 ; $i < count($root_wellarr) ; $i++) + $ret .= sprintf('chatt_sub("ChanServ: ","%s");', str_replace('"', '\"', $root_wellarr[$i])); + + return ($ret); +} + +function table_wellcome($user) +{ + GLOBAL $table_wellarr; + + for ($i = 0 ; $i < count($table_wellarr) ; $i++) + $ret .= sprintf('chatt_sub("ChanServ: ","%s");', str_replace('"', '\"', $table_wellarr[$i])); + return ($ret); +} function show_room(&$bri, &$user) { $ret .= sprintf('gst.st = %d;', $user->step); $ret .= sprintf('stat = "%s";', $user->stat); + + $ret .= root_wellcome($user); $ret .= sprintf('subst = "%s";', $user->subst); $ret .= sprintf('$("myname").innerHTML = "%s";', xcape($user->name,ENT_COMPAT,"UTF-8")); for ($i = 0 ; $i < TABLES_N ; $i++) { @@ -1098,6 +1191,7 @@ function show_table(&$bri, &$user, $sendstep, $is_transition, $is_again) /* NOTIFY FOR THE CARD MAKER */ if ($is_transition) { // && $user->subst == "asta" superfluo $ret .= show_table_info(&$bri, &$table, $user->table_pos); + $ret .= table_wellcome($user); } /* CARDS */ @@ -1116,7 +1210,7 @@ function show_table(&$bri, &$user, $sendstep, $is_transition, $is_again) } log_rd($sess, "O ".$o." VAL ".$table->card[$o]->value." Owner: ".$table->card[$o]->owner); - $ret .= sprintf( ' card_send(%d,%d,%d,%f,%d);|', ($table->gstart + $e) % PLAYERS_N, + $ret .= sprintf( ' card_send(%d,%d,%d,%8.2f,%d);|', ($table->gstart + $e) % PLAYERS_N, $i, ((($e + PLAYERS_N - $user->table_pos + $table->gstart) % PLAYERS_N) == 0 ? $table->card[$o]->value : -1), ($i == 7 && $e == (PLAYERS_N - 1) ? 1 : 0.5),$i+1); @@ -1337,4 +1431,10 @@ function calculate_points(&$table) $table->mult = 1; } +function validate_sess($sess) { + if (strlen($sess) == SESS_LEN) + return (TRUE); + else + return (FALSE); +} ?>