/*
* brisk - brisk.phh
*
- * Copyright (C) 2006-2011 Matteo Nastasi
+ * Copyright (C) 2006-2012 Matteo Nastasi
* mailto: nastasi@alternativeoutput.it
* matteo.nastasi@milug.org
* web: http://www.alternativeoutput.it
define('CHAT_N', 3);
define('CHAT_ILL_TIME', 6);
+define('CHAT_ENABLED', TRUE);
define('SESS_LEN', 13);
define('STREAM_TIMEOUT', 60);
/* FIXME: move to sac-a-push .phh */
+/* TIME_RD define the server-side timeout, after half of it a ping request
+ is sent to client, after this time the client is log out */
define('EXPIRE_TIME_RD', 180);
define('EXPIRE_TIME_SMAMMA', 360);
define('EXPIRE_TIME_WAG', 10);
$G_lng = langtolng($G_lang);
$G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "3.6.3";
+$G_brisk_version = "4.0.0";
/* MLANG: ALL THE INFO STRINGS IN brisk.phh */
-$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: nuovo sistema di evidenziazione degli utenti registrati.',
+$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: adottato sac-a-push come motore per l\'invio dei dati in tempo reale.',
'Se vuoi iscriverti alla <a target="_blank" href="mailto:ml-briscola+subscribe@milug.org">Mailing List</a>, cliccala!' ),
'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NEWS</b>: usage of reader/writer locking instead of generic exclusive locking.',
'If you want to subscribe our <a target="_blank" href="ml-briscola+subscribe@milug.org">Mailing List</a>, click it!' ) );
declaration briscola in ajax sauce <b>(Beta)</b>
</div>
<br><b>version '.$G_brisk_version.'</b><br><br>
-Copyright 2006-2009 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nastasi</a> (aka mop)<br><br>');
+Copyright 2006-2012 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nastasi</a> (aka mop)<br><br>');
function mop_flush()
{
var $match;
var $comm; // commands for many people
var $step; // current step of the comm array
- // externalized var $garbage_timeout;
+ var $garbage_timeout;
var $shm_sz;
function Room () {
else
$this->table[$i]->auth_only = FALSE;
}
- // externalized $this->garbage_timeout = 0;
- Room::garbage_time_expire_set(0);
+ $this->garbage_timeout = 0;
$this->shm_sz = SHM_DIMS_MIN;
}
/* Garbage collector degli utenti in timeout */
$curtime = time();
- // externalized if ($force || $this->garbage_timeout < $curtime) {
- if (!$force && !Room::garbage_time_is_expired($curtime)) {
+ if (!$force && !($this->garbage_timeout < $curtime)) {
return ($ismod);
}
}
log_rd2("GARBAGE UPDATED!");
- // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
- Room::garbage_time_expire_set($curtime + GARBAGE_TIMEOUT);
+ $this->garbage_timeout = $curtime + GARBAGE_TIMEOUT;
$ismod = TRUE;
return ($ismod);
$ret .= sprintf('tra.rem(%d); ', $i);
}
$ret .= $this->standup_content($user);
-
+ $ret .= "setTimeout(preload_images, 0, g_preload_img_arr, g_imgct); ";
+
return ($ret);
}
$only_you = FALSE;
// common settings
- $msg = substr($mesg, 6, 128);
+ $msg = mb_substr($mesg, 6, 128, "UTF-8");
$curtime = time();
$dt = date("H:i ", $curtime);
$target = "";
else { // normal chat line
$is_normchat = TRUE;
- if ($curtime < ($user->chat_ban + $user->chat_dlt)) {
+ if (CHAT_ENABLED && $curtime < ($user->chat_ban + $user->chat_dlt)) {
$only_you = TRUE;
$user->chat_dlt = $user->chat_dlt * 2;
if ($user->chat_dlt > 120)
}
else if ($user->chat_lst == $msg)
$only_you = TRUE;
- else if ($curtime - $user->chattime[($user->chat_cur + 1) % CHAT_N] < CHAT_ILL_TIME) {
+ else if (CHAT_ENABLED && $curtime - $user->chattime[($user->chat_cur + 1) % CHAT_N] < CHAT_ILL_TIME) {
$user->chat_ban = $curtime;
$user->chat_dlt = 5;
$only_you = TRUE;
* if ($idx == -$idx && ret == user) => SUCCESS (but the login exists in the auth db)
*/
- function add_user(&$sess, &$idx, $name, $pass, $ip)
+ function add_user(&$sess, &$idx, $name, $pass, $ip, $cookie)
{
- GLOBAL $G_base, $CO_list;
+ GLOBAL $G_base;
$idx = 0;
$this->user[$idx]->code = $authenticate->code_get();
$this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
- if (isset($CO_list)) {
- if (strcmp($CO_list, "auth") == 0) {
+ if (isset($cookie['CO_list'])) {
+ if (strcmp($cookie['CO_list'], "auth") == 0) {
$this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
$this->user[$idx]->flags |= USER_FLAG_LISTAUTH;
}
- if (strcmp($CO_list, "isolation") == 0) {
+ if (strcmp($cookie['CO_list'], "isolation") == 0) {
$this->user[$idx]->flags &= ~USER_FLAG_MAP_AUTH;
$this->user[$idx]->flags |= USER_FLAG_ISOLAUTH;
}
GLOBAL $sess;
do {
- if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
+ if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1) {
log_main("ftok failed");
break;
}
// var_dump($room);
- if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1)
+ if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
return (FALSE);
while ($room->shm_sz < SHM_DIMS_MAX) {
$ret = FALSE;
$shm = FALSE;
- if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1)
+ if (($tok = @ftok(FTOK_PATH."/main", "C")) == -1)
return (FALSE);
// SHSPLIT: before save the $room you must save users,
return ($ret);
}
- static function garbage_time_is_expired($tm)
- {
- $ret = TRUE;
- $fp = FALSE;
- do {
- if (file_exists(PROXY_PATH) == FALSE)
- mkdir(PROXY_PATH, 0775, TRUE);
- if (($fp = @fopen(PROXY_PATH."/garbage_time.expired", 'rb')) == FALSE)
- break;
- if (($s = fread($fp, 4)) == FALSE)
- break;
- if (mb_strlen($s, "ASCII") != 4)
- break;
- $arr = unpack('Le', $s);
- if ($arr['e'] > $tm)
- $ret = FALSE;
- } while (0);
-
- if ($fp != FALSE)
- fclose($fp);
-
- log_rd2("END: return ".($ret ? "TRUE" : "FALSE"));
-
- return ($ret);
- }
-
- static function garbage_time_expire_set($tm)
- {
- do {
- if (file_exists(PROXY_PATH) == FALSE)
- mkdir(PROXY_PATH, 0775, TRUE);
- if (($fp = @fopen(PROXY_PATH."/garbage_time.expired", 'wb')) == FALSE)
- break;
- fwrite($fp, pack("L",$tm));
- fclose($fp);
-
- return (TRUE);
- } while (0);
-
- return (FALSE);
- }
-
- function request_mgr(&$s_a_p, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie)
+ function request_mgr(&$s_a_p, $enc, &$header_out, &$new_socket, $path, $addr, $get, $post, $cookie)
{
printf("NEW_SOCKET (root): %d\n", intval($new_socket));
case "":
case "index.php":
ob_start();
- index_main($this, $header_out, $addr, $get, $post, $cookie);
- $content = ob_get_contents();
- ob_end_clean();
+ index_main($this, $header_out, $addr, $get, $post, $cookie);
+ $content = ob_get_contents();
+ ob_end_clean();
- $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
- return TRUE;
+ $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
+ return TRUE;
- break;
+ break;
case "index_wr.php":
ob_start();
index_wr_main($this, $addr, $get, $post, $cookie);
$content = ob_get_contents();
ob_end_clean();
-
- $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
+
+ $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
return TRUE;
break;
do {
if (!isset($cookie['sess'])
|| (($user = $this->get_user($cookie['sess'], $idx)) == FALSE)) {
- $content = User::stream_fini(TRUE);
+ $content = User::stream_fini($s_a_p->rndstr, TRUE);
- $s_a_p->pgflush_try_add($new_socket, 20, $header_out, $content);
+ $s_a_p->pgflush_try_add($enc, $new_socket, 20, $header_out, $content);
return TRUE;
break;
printf("CLOSE AND OPEN AGAIN ON IFRA2\n");
$user->rd_socket_set(NULL);
}
-
+
$content = "";
- $user->stream_init($header_out, $content, $get, $post, $cookie);
+ $user->stream_init($s_a_p->rndstr, $enc, $header_out, $content, $get, $post, $cookie);
- $response = headers_render($header_out, -1).chunked_content($content);
+ $response = headers_render($header_out, -1).chunked_content($user->rd_zls_get(), $content);
$response_l = mb_strlen($response, "ASCII");
$wret = @fwrite($new_socket, $response, $response_l);
$subs = "briskin5/";
$subs_l = strlen($subs);
if (!strncmp($path, $subs, $subs_l)) {
- $ret = Bin5::request_mgr(&$s_a_p, &$header_out, &$new_socket, substr($path, $subs_l) , $addr, $get, $post, $cookie);
+ $ret = Bin5::request_mgr(&$s_a_p, $enc, &$header_out, &$new_socket, substr($path, $subs_l) , $addr, $get, $post, $cookie);
return ($ret);
}
break;
function validate_name($name)
{
- $name_new = str_replace(' ', '_', substr(trim($name),0,12));
+ $name_new = str_replace(' ', '_', mb_substr(trim($name),0,12, "UTF-8"));
for ($i = 0 ; $i < strlen($name_new) ; $i++) {
$c = $name_new[$i];