PageFlush added, log_legal without remote address
[brisk.git] / web / Obj / brisk.phh
index 58f1e85..9051a75 100644 (file)
@@ -275,7 +275,7 @@ $G_room_about = array( 'it' => '<br>
   briscola chiamata in salsa ajax
 </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>',
                       'en' => '<br>
 <div id=\\"header\\" class=\\"header\\">
   <img class=\\"nobo\\" src=\\"img/brisk_logo64.png\\">
@@ -690,6 +690,10 @@ define('USER_FLAG_TY_SUPER',   0x020000); // done
 define('USER_FLAG_TY_SUSPEND', 0x400000); // done
 define('USER_FLAG_TY_DISABLE', 0x800000); // done
 
+// 240 is the right value, 600 is for fwrite error test
+define('RD_ENDTIME_DELTA',  240);
+define('RD_KEEPALIVE_TOUT',   4);
+
 class User {
   var $idx;        // index in the users array when you are in game
   var $idx_orig;   // index in the users array when you aren't in game
@@ -712,6 +716,9 @@ class User {
   var $rd_step;    // actual step of push stream
   var $rd_from;    // referer
   var $rd_scristp; // current script step (for each session) 
+  var $rd_kalive;  // if no message are sent after RD_KEEPALIVE_TOUT secs we send a keepalive from server
+  var $rd_cache;   // place where store failed fwrite data
+
   var $comm;       // commands array
   // var $asta_card;  // 
   // var $asta_pnt;   //
@@ -763,6 +770,8 @@ class User {
     $thiz->rd_step    = -1;
     $thiz->rd_from    = "";
     $thiz->rd_scristp = -1;
+    $thiz->rd_kalive  = -1;
+    $thiz->rd_cache   = "";
 
     $thiz->asta_card  = -2;
     $thiz->asta_pnt   = -1;
@@ -896,6 +905,17 @@ class User {
     return ($thiz);
   }
 
+  function rd_data_set($curtime, $stat, $subst, $step, $from)
+  {
+      $this->rd_endtime = $curtime + RD_ENDTIME_DELTA;
+      $this->rd_stat    = $stat;
+      $this->rd_subst   = $subst;
+      $this->rd_step    = $step;
+      $this->rd_from    = $from;
+      $this->rd_scristp = 0;
+      $this->rd_kalive  = $curtime + RD_KEEPALIVE_TOUT;
+  }
+
   function rd_socket_get() {
       return ($this->rd_socket);
   }
@@ -904,6 +924,43 @@ class User {
       $this->rd_socket = $sock;
   }
 
+  function rd_kalive_get()
+  {
+      return ($this->rd_kalive);
+  }
+
+  function rd_kalive_set($tm)
+  {
+      $this->rd_kalive = $tm;
+  }
+
+  function rd_kalive_is_expired($tm)
+  {
+      // printf("rd_kalive %d tm %d\n", $this->rd_kalive, $tm);
+      return ($this->rd_kalive < $tm);
+  }
+
+  function rd_endtime_is_expired($tm)
+  {
+      // printf("rd_endtime %d tm %d\n", $this->rd_kalive, $tm);
+      return ($this->rd_endtime < $tm);
+  }
+
+  function rd_kalive_reset($tm)
+  {
+      $this->rd_kalive = $tm + RD_KEEPALIVE_TOUT;
+  }
+
+  function rd_cache_get()
+  {
+      return ($this->rd_cache);
+  }
+
+  function rd_cache_set($cache)
+  {
+      $this->rd_cache = $cache;
+  }
+
   function idx_get() {
       return ($this->idx);
   }
@@ -942,16 +999,6 @@ class User {
       return TRUE;
   }
 
-  function rd_data_set($endtime, $stat, $subst, $step, $from)
-  {
-      $this->rd_endtime = $endtime;
-      $this->rd_stat    = $stat;
-      $this->rd_subst   = $subst;
-      $this->rd_step    = $step;
-      $this->rd_from    = $from;
-      $this->rd_scristp = 0;
-  }
-
 
   function save_step() 
   {
@@ -1012,7 +1059,7 @@ class User {
 
   function reset() {
     $curtime = time();
-    log_legal($curtime, $this, "STAT:LOGOUT", '');
+    log_legal($curtime, 'xxx', $this, "STAT:LOGOUT", '');
 
     $tmp_sess = $this->sess;
     $this->sess = "";
@@ -1258,7 +1305,7 @@ class Room {
                  $user_cur->bantime    = $bri_user->bantime;
                }
 
-                log_legal($curtime, $user_cur, "STAT:DESTROY_GAME", $plist);
+                log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME", $plist);
 
                $this->room_join_wakeup($user_cur, FALSE, 0); 
                $table_cur->table_token = "";
@@ -1297,7 +1344,7 @@ class Room {
               for ($i = 0 ; $i < $table_cur->player_n ; $i++) {
                 $plist .= '|'.$this->user[$table_cur->player[$i]]->sess;
               }
-              log_legal($curtime, $user_cur, "STAT:DESTROY_GAME(RECOVERY)", $plist);
+              log_legal($curtime, 'xxx', $user_cur, "STAT:DESTROY_GAME(RECOVERY)", $plist);
               
              $this->room_join_wakeup($user_cur, TRUE, -2); 
              $table_cur->table_token = "";
@@ -1984,7 +2031,7 @@ class Room {
         $to_room = $to_user;
       }
 
-      log_legal($curtime, $user, 
+      log_legal($curtime, 'xxx', $user, 
                ($user->stat == 'room' ? 'room' : 'table '.$user->table),$msg);
       
       $user->chat_lst = "$msg";
@@ -2975,7 +3022,7 @@ function log_auth($sess, $log)
     if (( (BRISK_DEBUG | ($sess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_AUTH) == 0)
         return;
     
-    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
+    if ((BRISK_DEBUG | ($sess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -3013,15 +3060,14 @@ function log_shme($log)
 
 
 // function log_legal($curtime, $sess, $name, $where, $mesg) 
-function log_legal($curtime, $user, $where, $mesg) 
+function log_legal($curtime, $addr, $user, $where, $mesg) 
 {
-  GLOBAL $_SERVER;
 
   if (($fp = @fopen(LEGAL_PATH."/legal.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));
+                        $user->name, $addr, $where , $mesg));
     fclose($fp);
   }
 }
@@ -3140,7 +3186,7 @@ function sharedmem_sz($tok)
   $shm_sz = shmop_size($shm_id);
   shmop_close($shm_id);
   
-  log_main("shm_sz: ".$shm_sz."   SHM_DIMS: ".SHM_DIMS);
+  // log_main("shm_sz: ".$shm_sz."   SHM_DIMS: ".SHM_DIMS);
   return ($shm_sz);
 }