first set of commands arrive from index_rd_ifra.php handler
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.com>
Mon, 16 Jul 2012 07:15:01 +0000 (09:15 +0200)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.com>
Mon, 16 Jul 2012 07:15:01 +0000 (09:15 +0200)
web/Obj/brisk.phh
web/index.php
web/index_rd_ifra.php
web/index_wr.php
web/spush/brisk-spush.php
web/spush/sac-a-push.phh

index bcb4d75..58f1e85 100644 (file)
@@ -704,6 +704,14 @@ class User {
   var $subst;      // substatus for each status   
   var $step;       // step of the current status
   var $trans_step; // step to enable transition between pages (disable == -1)
+
+  var $rd_socket;  // socket handle of push stream
+  var $rd_endtime; // end time for push stream
+  var $rd_stat;    // actual status of push stream
+  var $rd_subst;   // actual substatus of push stream
+  var $rd_step;    // actual step of push stream
+  var $rd_from;    // referer
+  var $rd_scristp; // current script step (for each session) 
   var $comm;       // commands array
   // var $asta_card;  // 
   // var $asta_pnt;   //
@@ -747,6 +755,15 @@ class User {
     $thiz->step       = 1;
     $thiz->trans_step = -1;
     $thiz->comm       = array();
+
+    $thiz->rd_socket  = NULL;
+    $thiz->rd_endtime = -1;
+    $thiz->rd_stat    = -1;
+    $thiz->rd_subst   = "";
+    $thiz->rd_step    = -1;
+    $thiz->rd_from    = "";
+    $thiz->rd_scristp = -1;
+
     $thiz->asta_card  = -2;
     $thiz->asta_pnt   = -1;
     $thiz->handpt     = -1;
@@ -879,6 +896,14 @@ class User {
     return ($thiz);
   }
 
+  function rd_socket_get() {
+      return ($this->rd_socket);
+  }
+
+  function rd_socket_set($sock) {
+      $this->rd_socket = $sock;
+  }
+
   function idx_get() {
       return ($this->idx);
   }
@@ -917,6 +942,17 @@ 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() 
   {
       do {
index 45b5b57..587acd8 100644 (file)
@@ -220,20 +220,32 @@ function carousel_top()
     return (sprintf('<a target="_blank" href="http://shop.alternativeoutput.it"><img class="nobo" style="display: inline; border: 1px solid #808080;" src="img/briskshop%d.gif"></a>', $rn));
 }
 
-function index_main(&$room)
+function index_main(&$room, &$header_out, $get, $post, $cookie)
 {
-  GLOBAL $G_with_donors, $G_donors_cur, $G_donors_all;
-  GLOBAL $G_with_topbanner, $G_topbanner, $G_is_local;
-  GLOBAL $G_with_sidebanner, $G_sidebanner; 
-  GLOBAL $G_with_sidebanner2, $G_sidebanner2; 
-  GLOBAL $G_with_poll;
-  GLOBAL $sess, $name, $pass_private, $table_idx, $table_token, $BRISK_SHOWHTML, $BRISK_DEBUG, $_SERVER;
-  GLOBAL $G_lang, $G_lng, $mlang_room;
-
-  // Use of proxies isn't allowed.
-  if (!$G_is_local && is_proxy()) {
-      return FALSE;
-  }
+    GLOBAL $G_with_donors, $G_donors_cur, $G_donors_all;
+    GLOBAL $G_with_topbanner, $G_topbanner, $G_is_local;
+    GLOBAL $G_with_sidebanner, $G_sidebanner; 
+    GLOBAL $G_with_sidebanner2, $G_sidebanner2; 
+    GLOBAL $G_with_poll;
+    GLOBAL $G_lang, $G_lng, $mlang_room;
+    GLOBAL $BRISK_SHOWHTML, $BRISK_DEBUG, $_SERVER;
+
+    if (($sess = gpcs_var('sess', $get, $post, $cookie)) === FALSE) 
+        unset($sess);
+    if (($name = gpcs_var('name', $get, $post, $cookie)) === FALSE)
+        unset($name);
+    if (($pass_private = gpcs_var('pass_private', $get, $post, $cookie)) === FALSE)
+        unset ($pass_private);
+    if (($table_idx = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE)
+        unset ($table_idx);
+    if (($table_token = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE)
+        unset ($table_token);
+    
+    
+    // Use of proxies isn't allowed.
+    if (!$G_is_local && is_proxy()) {
+        return FALSE;
+    }
 
   $is_login = FALSE;
   $body = "";
@@ -257,7 +269,7 @@ function index_main(&$room)
               if ($user->stat == "table") {
                   setcookie("table_token", $user->table_token, $curtime + 31536000);
                   setcookie("table_idx", $user->table, $curtime + 31536000);
-                  header ("Location: briskin5/index.php");
+                  $header_out['Location'] = "Location: briskin5/index.php";
                   return TRUE;
               }
               $ACTION = "room";
@@ -288,7 +300,7 @@ function index_main(&$room)
               if ($user->stat == "table") {
                   setcookie("table_token", $user->table_token, $curtime + 31536000);
                   setcookie("table_idx", $user->table, $curtime + 31536000);
-                  header ("Location: briskin5/index.php");
+                  $header_out['Location'] = "Location: briskin5/index.php";
                   return TRUE;
               }
               
@@ -845,7 +857,7 @@ supported by:<br>
     
   /* Templates. */
   if ($ACTION == 'login') {
-    header('Content-type: text/html; charset="utf-8"',true);
+      $header_out['Content-type'] = "text/html; charset=\"utf-8\"";
 ?>
 <html>
 <head>
@@ -979,7 +991,7 @@ echo "$body"; ?>
 <?php
   }
   else if ($ACTION == 'room') {
-    header('Content-type: text/html; charset="utf-8"',true);
+      $header_out['Content-type'] = "text/html; charset=\"utf-8\"";
   ?>
 <html>
 <head>
index 86a1b2e..7d4f493 100644 (file)
  *
  */
 
-$G_base = "";
-
-require_once("Obj/brisk.phh");
+// require_once("Obj/brisk.phh");
 // require_once("Obj/proxyscan.phh");
-require_once("briskin5/Obj/briskin5.phh");
+// require_once("briskin5/Obj/briskin5.phh");
+
+$G_four_rnd_string = 
+ "GGZDGDRBXDWFXHGPYAAVDXEKFDUWSTEDTDVXBXQPMZAIFPNLRPTWMJAZRHXTIRNZ"
+."HTZXAUVJDCLXENDCLIZXSSEQQGUADYEKNNANJWEGRUFHPLUNSEROZQJSLMUYNUVG"
+."FPLQAGCMTTGIRRXZFBFQFTRBYPHTWFSXFKHKYBRDAOSOURCMEVGPVXJVUQAOCFPV"
+."OQSUBOYWOZLDGRPQQIBNOTHFUHTCRRZOBCUONAXIYUYCJBFTVNWIITVHBYLNMPWR"
+."LPMMIROZVRUNYXSJSMJINSXGACXDMJAEPNFFAERHVDJELXSPPJWKMNFGVGAPTIMR"
+."VMVMVCLWKMPOAJWZGPSPFEXVNQANXGLZIQSCBIYVFSTXZOODZYCXUVUZFCLFGHUJ"
+."TXZWFHSMFJQAZOQRANKZJAUJHFJIKHIIEQUSDXUBRPQBKMIAVTWYQEOIMYKKDTEV"
+."EYERPXKFJXWNIMJPOFFMWJCJSLFZKPNRNVXIDLUSRVBGLUCQZCUQCZNAORDXMRSS"
+."UBNMPXJDQXXLMQRCTOCCJJWHFSUWBNWXWZHPKWYYKPZIMBXTYAZXJJQSBLNAQGJI"
+."AIXZUHNTQYFSGUYMVOWEGUWWRBEMRJHXXOMLRXXWJZLPGLMKEANZWWXIXPIUTURJ"
+."TCXYIKIPNTSUIOWBCEVQHLTHYQNGBHAOPREWGJVOQKNUKTXVTMBRHCERDGYWQVXB"
+."BCZUGMIJXALLIOSXCYMEIDNTPLGRMKXKVFKWGRFKCBIRASOOYIFTLXFSBEOJSDFN"
+."PHSWPGERDYIGUPDXUBSAFCHTPJNBORIRMAOCKGAMFFZUBTVSGEEFMYMEBPUVCRSP"
+."DEEAROBQLJHNMCDAFMPLUKNZXTTJJIULUTDTLEZLVMRLKNLXGCQIGFCBHEWDHNPW"
+."VRONBYCXVRGNQUMFSRADSIFLNRMQXAZKQUKYXGOAKTSLWVSBJMQYZMULCNYKFFUC"
+."LKIPNJOURQLYDHLZYPHEJXPBYTXTGVZOGQUZXAORYINAOTRJCNEDPAXSJIQICWEY"
+."UEJPQALSYHKYZLPJTMBLIDNFRFLTIOVZZTEWPSJCUNDWUDZWJKDDRJEXOICJBSYP"
+."ZHLECBYVMMYLCCPCSVOVPEHEWQDJYSCOWTKFHTWVTSBCQSFKQFCNTGOQBEPSEXKR"
+."AMJIKXZCWLPXMEUBLRJHNEVGMTGARBOBLOYPWUCWSBVTMZBIBRDCNOYXLPSDZODN"
+."JSZXXQUCJZKIYOCCRHYALAJSYXFMWBAOIVAJWIAPOECUJAMFPCOCZDBDHRTBUWWJ"
+."EJYZESNKIXFEBENSOHLCNSQPWGGJLOMTFEZVWWQAKPIFGUUUMWOKLXDUPFMOEKQG"
+."ELOIQAUJPPIJZWKTCYQTJWXCBJMQWIOLQWJIASSXSFLWGUSETHRKEJHCHBOFLJJC"
+."KPPLOTKBXSKUOSNSFHOJRCKXOKQHETCGSMABVALDSBAXBQRFNNJGIDZMNUYQYDHX"
+."DJAHJBJSUEHADPSHOPOXEIRQPEAJEMEBWNXTOSGEQFUVXVHZDYHRUXCRICUHYUHA"
+."FXXGTKWVDDMDSLXEVKZUNTEUKWAGSAWPHGQHEBUMQDHZDVIFVFNDXDUEVZVGSBCQ"
+."STWYUOIHBOQQBAIAQJVNDZQVWHNXHMROIMXNCZRHYXUBFYLEZTWFCYOVILASEFSH"
+."ZUQSNNTYEOCSTRDJPFHCPTDEWCQNEDFOQCZMXKCFIANKWOVDARXWRUCTPYPGTEZB"
+."PERZIMOHRCNBYYJVYFBQJARSULMIAQPILDHEMKNVWMGFQBGZRSQZWZBMSDYKLOTA"
+."VUILKBJADGDTEZENLJEOYPXIXJWIJXONTLXBRLIJFQZORAJIIZQRCUOZLVUTIHXI"
+."NDRVVDJTEIKVLKZVRWHINEYVRGJHXLRNDCNFIYFRUUWMKKGHCPWLZKFULMJOIGJZ"
+."OONOCNPLEJIBKYFDGEQEMMWYBNBWPDRCEIUMFTYAULDBHSHAGPFWVTZXYQGUAXYN"
+."JGGOAMNBBFFSCDSXRTPOHBOVZEXYKAENIWSMBOXGQQTDTIBPSXFHMQUMMKNYYWIC"
+."MFDWSMZDWHGCEWQHFTIMDGTMCEFKWMBAVPEBTCKHRRTLAYEGZTINIWYCUJRZMBPS"
+."TLLEDLEPSAFMQPHYNJWBSSXKEMKLEZIAVNYIOUOTKGYUYJBKBSBQCFRXKOQABUWF"
+."YCNLGXGTLWMLEJVSNDIAMYSXSYFLMNGBOZSREPCPQLRCLNYFVKTWUWBNYAPZTJVO"
+."ONEPJBVBIOPBGVUNWUWZZBJEBDWUWUNFDBOICCGKXDBQWSWFUMIYRCXHLDWFKDUO"
+."PBGTXWNOMUEBENXMARIGPKDETSZNTRODQZYNJJDMYSUBOLPWOEWEVESPLXIKLELG"
+."DCIPTCCKJNNDBRCNVNHVZWPKWPUWLSOORQHNXRBZHHIYPJNBIRCZCIGGEMYKNWXV"
+."TLCLXTIYRVUXONAJUCNMWHNMUSHRWHOEQTTGYJRJEZKNHLVUXUKQQYREZXWRNQKO"
+."BDZTUGIKACSXLRJLESYYPLRFCFVSWJSZYPJBLBTPSEGUZOEXDIXEVWZJEOMOJOIB"
+."QNXNFUXBRJYXMDXQOLVWVLZZMTEMTYRZBWUEEFIBOWXAPKEIQIZZCLMWAOBZVFTP"
+."QQPBYCCLEYRLXVBPMUUMUDPECMDFSVJNKKAEMBYJJXMZGWYTAHECIXAFGWAOGIWV"
+."GAOHCMVHJZVWZCHJWGJJDBZNDXPXOYTDVZEDPWZIIMQVCQPLQIEOSRPVVICTZKGX"
+."JXSFDFUHKKOTXTEGLDSCAODMCVGSSEYANCXJDATMRJRIDLLIJHINSOXJQDEABCVU"
+."WFXWKXJQEREZDLOVUQHYBESHNJWTESPNDVIKYLCTNQEVVUXAWFNQEYIVZXNMJEPL"
+."MFMTOKXXFQYYVBHAXYQVUBALQLSNJSVOTZDDTOZMUEVZJATXQNQVSFXWTGACHUDD"
+."QXCPCRLSREKXHKJNUYUJGIGCNWXUSXOGGYPQWFZDJCKKZONXJUSJKBYIPJSMPVIN"
+."UFBIFNROMBTKQPBIZYJWLPQIJLNTLHTUEWFINOQQDAHCXXKVADTEDBANOPIJBXXC"
+."NAEZOVJAISUQBCBNOYIJBXMRPYPKXBFKFVGQLOEFPOCTZHJXKGUPZQPZOZWXXSSH"
+."SLBGVGVPRAFJCVRKWLSWLMHBMYOKVJDCZSQBLTGSOJDJHOVIDEBKJZNAQYLFIEYS"
+."AYHOSGGDDJAAVTMBYFREMEPLWZXYZUYYRQWKQBLKAPDXMMHCBWSARJCHPGZFCVJG"
+."OXXKCMWTVMKHUUSUMQOGNIHKIIAXNOAHPRIWHDOBJTRKSZAKOMHWTPQQXGZBOPIP"
+."FQEVUBULHGESOARVICLMSUSHHTVYLFMLHFGKJNPYIYEMLBAZMLIDDSWRCVFOUSGC"
+."TUQHWTUHRJUZHYQOKTWTLRVOSWRPSYBOBSZHZLRZEIZKKCMLNYICCUTIXNXETTKL"
+."PYIFTUDCMWRQBZDROXTTVTAOOIQHIWOZESRHKPNGNCSHNAVEWUSGOTZCRNFSIXGF"
+."QJUMUFPEZBFPOVGZZDCGDKEODSWAPNDNHVJUQDYLCXWNXSCDFFFPBTDOIZIZLBBP"
+."ZXZYWTTPEUUCKXGBTXAJBAXYLMUVWWGWZYTXTKYVRXSOXOBHERLZJPRDXIQZRQLU"
+."TXCLIJNKIRWMVQEJTLHZIDTNGBOYSULGWUTSYTKGNMGZFWKXCCZXGOQGZNQFZJUK"
+."JMBQPQPZOPYTQMPEFTZUDLIIBZAZSZAPNILMIKMPKXJIRHRQMFSTJKAPIIQWOFYQ"
+."HGANJGJSUGDIENDVEQFEMUJBGMZBPHLOARCVGMUUCHLCDDNKSJSCKYSALUAGUZFN"
+."YVURVLREBESGXPANIDKGLPJZGXLKFKTPEQBQEINOYYZTBMPFBLBKIKVPAPFDKKRZ"
+."YMVUBYCYTRXCIICUPTXKGQOIJSVSWPYVALIROWGVXDXGNSRVZOLEJHNRSUKHNTRJ"
+."LQZQKBEFXYKIPXJRZMQMJKUGCNUKBZBWABPLHMAJJZVBCWOQYCLSGDUKJSTHTVXV"
+."OUGJVADGJWGVNBNXYRZDSNLOZDIQRKOQAKJJDKXRMMTXRVTLOMTETNROPDYNXAGR";
 
 $S_load_stat = array( 'rU_heavy'      => 0,
                       'lL_laccgarb'   => 0,
@@ -57,13 +121,6 @@ if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
   exit;
 }
 
-function shutta()
-{
-  log_rd2("SHUTTA [".connection_status()."] !");
-}
-
-register_shutdown_function(shutta);
-
 function blocking_error($is_unrecoverable)
 {
   GLOBAL $is_page_streaming;
@@ -88,7 +145,7 @@ function page_sync($sess, $page, $table_idx, $table_token)
 
 
 
-function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_subst, &$new_step)
+function maincheck(&$room, &$user, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_subst, &$new_step)
 {
     GLOBAL $G_lang, $mlang_indrd, $is_page_streaming;
     // GLOBAL $first_loop;
@@ -102,81 +159,81 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
     log_rd("maincheck begin");
 
     $ret = FALSE;
-    $room = FALSE;
-    $user = FALSE;
+    // $room = FALSE;
+    // $user = FALSE;
     $curtime = time();
     
     // NOTE: qui forse si potrebbe fallback-are a una User::load_data 
     //       anche se non ce ne dovrebbe essere mai la necessità
-    if (($proxy_step = User::load_step($sess)) == FALSE) {
-        log_only2("R");
-        ignore_user_abort(FALSE);
-        return (blocking_error(TRUE));
-    }
+    /* if (($proxy_step = User::load_step($sess)) == FALSE) { */
+    /*     log_only2("R"); */
+    /*     ignore_user_abort(FALSE); */
+    /*     return (blocking_error(TRUE)); */
+    /* } */
     
     // log_rd2("M");
     /* Sync check (read only without modifications */
     ignore_user_abort(TRUE);
 
 
-    /* shared locking to load info */
-    if (($sem = Room::lock_data(FALSE)) == FALSE) { 
-        // wait 20 secs, then restart the xhr 
-        ignore_user_abort(FALSE);
-        return ("sleep(gst,20000);|hstm.xhr_abort();");
-    }
+    /* /\* shared locking to load info *\/ */
+    /* if (($sem = Room::lock_data(FALSE)) == FALSE) {  */
+    /*     // wait 20 secs, then restart the xhr  */
+    /*     ignore_user_abort(FALSE); */
+    /*     return ("sleep(gst,20000);|hstm.xhr_abort();"); */
+    /* } */
     
-    // Verifica l'expire time lato server
-    if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) {
-        Room::unlock_data($sem);
-        ignore_user_abort(FALSE);
-        return (blocking_error(TRUE));
-    }
+    /* // Verifica l'expire time lato server */
+    /* if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) { */
+    /*     Room::unlock_data($sem); */
+    /*     ignore_user_abort(FALSE); */
+    /*     return (blocking_error(TRUE)); */
+    /* } */
     /* if lacc time great than STREAM_TIMEOUT or the room garbage_time is expired 
          switch to exclusive locking and verify again the conditions */
     if ((($curtime - $user->lacc) >  STREAM_TIMEOUT) || Room::garbage_time_is_expired($curtime)) {
         /* there is some info that require to change data, switch to exclusive locking */
-        Room::unlock_data($sem);
-        if (($sem = Room::lock_data(TRUE)) == FALSE) { 
-            // wait 20 secs, then restart the xhr 
-            ignore_user_abort(FALSE);
-            return ("sleep(gst,20000);|hstm.xhr_abort();");
-        }
+        // Room::unlock_data($sem);
+        /* if (($sem = Room::lock_data(TRUE)) == FALSE) {  */
+        /*     // wait 20 secs, then restart the xhr  */
+        /*     ignore_user_abort(FALSE); */
+        /*     return ("sleep(gst,20000);|hstm.xhr_abort();"); */
+        /* } */
         $S_load_stat['lL_laccgarb']++;
 
         // load again the data after locking
-        unset($user);
+        // unset($user);
         // Verifica l'expire time lato server
-        if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) {
-            Room::unlock_data($sem);
-            ignore_user_abort(FALSE);
-            return (blocking_error(TRUE));
-        }
+        /* if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) { */
+        /*     Room::unlock_data($sem); */
+        /*     ignore_user_abort(FALSE); */
+        /*     return (blocking_error(TRUE)); */
+        /* } */
 
         if (($curtime - $user->lacc) >=  STREAM_TIMEOUT) {
             $S_load_stat['wU_lacc_upd']++;
             $user->lacc = $curtime;
             // lacc field updated
-            User::save_data($user, $user->idx);
+            /* User::save_data($user, $user->idx); */
         }
         
         if (Room::garbage_time_is_expired($curtime)) {
             log_only("F");
             
             $S_load_stat['wR_garbage']++;
-            if (($room = Room::load_data()) == FALSE) {
-                Room::unlock_data($sem);
-                ignore_user_abort(FALSE);
-                return (blocking_error(TRUE));
-            }
+            /* if (($room = Room::load_data()) == FALSE) { */
+            /*     Room::unlock_data($sem); */
+            /*     ignore_user_abort(FALSE); */
+            /*     return (blocking_error(TRUE)); */
+            /* } */
             log_main("pre garbage_manager TRE");
             $room->garbage_manager(FALSE);
-            Room::save_data($room);
-            unset($room);
+            /* Room::save_data($room); */
+            /* unset($room); */
         }
     }
     log_main("infolock: U");
-    Room::unlock_data($sem);
+    /* Room::unlock_data($sem); */
     ignore_user_abort(FALSE);
 
     
@@ -221,35 +278,35 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
 //         $first_loop = FALSE;
 //     } // if  ($first_loop == TRUE) {
     
-    if ($cur_step == $proxy_step['s']) {
-        log_main("infolock: P");
-        return (FALSE);
-    }
-    else {
-        log_only2("R");
-    }
+    /* if ($cur_step == $proxy_step['s']) { */
+    /*     log_main("infolock: P"); */
+    /*     return (FALSE); */
+    /* } */
+    /* else { */
+    /*     log_only2("R"); */
+    /* } */
 
     $S_load_stat['rU_heavy']++;
-    if ($user == FALSE) {
-        do {
-            ignore_user_abort(TRUE);
-            if (($sem = Room::lock_data(FALSE)) == FALSE) 
-                break;
+    /* if ($user == FALSE) { */
+    /*     do { */
+    /*         ignore_user_abort(TRUE); */
+    /*         if (($sem = Room::lock_data(FALSE)) == FALSE)  */
+    /*             break; */
             
-            log_main("infolock: P");
-            if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) {
-                break;
-            }
-        } while (0);
+    /*         log_main("infolock: P"); */
+    /*         if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) { */
+    /*             break; */
+    /*         } */
+    /*     } while (0); */
         
-        if ($sem != FALSE)
-            Room::unlock_data($sem);
+    /*     if ($sem != FALSE) */
+    /*         Room::unlock_data($sem); */
         
-        ignore_user_abort(FALSE);
-        if ($user == FALSE) {
-            return (blocking_error(TRUE));
-        }
-    }
+    /*     ignore_user_abort(FALSE); */
+    /*     if ($user == FALSE) { */
+    /*         return (blocking_error(TRUE)); */
+    /*     } */
+    /* } */
     
     /* Nothing changed, return. */
     if ($cur_step == $user->step) 
@@ -263,22 +320,22 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
          */
 
         /* unset the $user var to reload it from main structure */
-        unset($user);
+        /* unset($user); */
 
         ignore_user_abort(TRUE);
-        $sem = Room::lock_data(TRUE);
-        if (($room = Room::load_data()) == FALSE) {
-            Room::unlock_data($sem);
-            ignore_user_abort(FALSE);
-            return (blocking_error(TRUE));
-        }
+        /* $sem = Room::lock_data(TRUE); */
+        /* if (($room = Room::load_data()) == FALSE) { */
+        /*     Room::unlock_data($sem); */
+        /*     ignore_user_abort(FALSE); */
+        /*     return (blocking_error(TRUE)); */
+        /* } */
         $S_load_stat['wR_minusone']++;
         
-        if (($user = $room->get_user($sess, $idx)) == FALSE) {
-            Room::unlock_data($sem);
-            ignore_user_abort(FALSE);
-            return (blocking_error(TRUE));
-        }
+        /* if (($user = $room->get_user($sess, $idx)) == FALSE) { */
+        /*     Room::unlock_data($sem); */
+        /*     ignore_user_abort(FALSE); */
+        /*     return (blocking_error(TRUE)); */
+        /* } */
         
         if ($user->the_end == TRUE) { 
             log_rd2("main_check: the end".var_export(debug_backtrace()));
@@ -290,8 +347,8 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
             $cur_step = $user->trans_step;
             $user->trans_step = -1;
             
-            Room::save_data($room);
-            Room::unlock_data($sem);
+            /* Room::save_data($room); */
+            /* Room::unlock_data($sem); */
             ignore_user_abort(FALSE);
         }
         else {
@@ -305,7 +362,7 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
             //        Room::save_data($room);
             //        //        $new_step = $user->step;
             
-            Room::unlock_data($sem);
+            /* Room::unlock_data($sem); */
             ignore_user_abort(FALSE);
         }
     }
@@ -351,20 +408,20 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
     } /* if ($cur_step == -1) { */
     else {
         ignore_user_abort(TRUE);
-        $sem = Room::lock_data(FALSE);
+        /* $sem = Room::lock_data(FALSE); */
         $S_load_stat['rU_heavy']++;
-        if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) {
-            Room::unlock_data($sem);
-            ignore_user_abort(FALSE);
-            return (blocking_error(TRUE));
-        }
+        /* if (($user = User::load_data($proxy_step['i'], $sess)) == FALSE) { */
+        /*     Room::unlock_data($sem); */
+        /*     ignore_user_abort(FALSE); */
+        /*     return (blocking_error(TRUE)); */
+        /* } */
         
         if ($cur_step < $user->step) {
             do {
                 if ($cur_step + COMM_N < $user->step) {
                     if (($cur_stat != $user->stat)) {
                         $to_stat = $user->stat;
-                        Room::unlock_data($sem);
+                        /* Room::unlock_data($sem); */
                         ignore_user_abort(FALSE);
                         log_load("RESYNC");
                         return (page_sync($user->sess, ($to_stat == "table" ? "briskin5/index.php" : "index.php"), $user->table, $user->table_token));
@@ -386,25 +443,25 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
             log_rd2($user->step, 'index_rd.php: after ret set');
             
             if ($user->the_end == TRUE) {
-                Room::unlock_data($sem);
+                /* Room::unlock_data($sem); */
                 
                 /* Switch to exclusive locking */
-                $sem = Room::lock_data(TRUE);
+                /* $sem = Room::lock_data(TRUE); */
 
-                unset($user);
+                /* unset($user); */
 
                 $S_load_stat['wR_the_end']++;
-                if (($room = Room::load_data()) == FALSE) {
-                    Room::unlock_data($sem);
-                    ignore_user_abort(FALSE);
-                    return (blocking_error(TRUE));
-                }
-
-                if (($user = $room->get_user($sess, $idx)) == FALSE) {
-                    Room::unlock_data($sem);
-                    ignore_user_abort(FALSE);
-                    return (blocking_error(TRUE));
-                }              
+                /* if (($room = Room::load_data()) == FALSE) { */
+                /*     Room::unlock_data($sem); */
+                /*     ignore_user_abort(FALSE); */
+                /*     return (blocking_error(TRUE)); */
+                /* } */
+
+                /* if (($user = $room->get_user($sess, $idx)) == FALSE) { */
+                /*     Room::unlock_data($sem); */
+                /*     ignore_user_abort(FALSE); */
+                /*     return (blocking_error(TRUE)); */
+                /* }               */
 
                 log_rd2("LOGOUT BYE BYE!!");
                 log_auth($user->sess, "Explicit logout.");
@@ -421,12 +478,12 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
                     else
                         log_rd2("LOGOUT FROM WHAT ???");
                     
-                    Room::save_data($room);
+                    /* Room::save_data($room); */
                 } /* if ($user->the_end == TRUE) { ... */
             } /* if ($user->the_end == TRUE) { ... */
         } /* if ($cur_step < $user->step) { */
         
-        Room::unlock_data($sem);
+        /* Room::unlock_data($sem); */
         ignore_user_abort(FALSE);
     }  /* else of if ($cur_step == -1) { */
     
@@ -444,164 +501,117 @@ function maincheck($sess, $cur_stat, $cur_subst, $cur_step, &$new_stat, &$new_su
    stat
    step
 */
+function index_rd_ifra_init(&$room, &$user, &$header_out, &$body, $get, $post, $cookie)
+{
+    GLOBAL $G_four_rnd_string;
 
-$is_page_streaming = FALSE; // (webservers_exceeded() || stristr($HTTP_USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0)") || stristr($HTTP_USER_AGENT, "MSIE") || stristr($HTTP_USER_AGENT, "CHROME") ? TRUE : FALSE);
+    $is_page_streaming = FALSE; // (webservers_exceeded() || stristr($HTTP_USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; rv:5.0)") || stristr($HTTP_USER_AGENT, "MSIE") || stristr($HTTP_USER_AGENT, "CHROME") ? TRUE : FALSE);
 
-header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
-header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
-header('Content-type: text/html; charset="utf-8"',true);
+    $header_out['Cache-Control'] = 'no-cache, must-revalidate';     // HTTP/1.1
+    $header_out['Expires']       = 'Mon, 26 Jul 1997 05:00:00 GMT'; // Date in the past
+    $header_out['Content-type']  = 'text/html; charset="utf-8"';
 
-$four_rnd_string = 
- "GGZDGDRBXDWFXHGPYAAVDXEKFDUWSTEDTDVXBXQPMZAIFPNLRPTWMJAZRHXTIRNZ"
-."HTZXAUVJDCLXENDCLIZXSSEQQGUADYEKNNANJWEGRUFHPLUNSEROZQJSLMUYNUVG"
-."FPLQAGCMTTGIRRXZFBFQFTRBYPHTWFSXFKHKYBRDAOSOURCMEVGPVXJVUQAOCFPV"
-."OQSUBOYWOZLDGRPQQIBNOTHFUHTCRRZOBCUONAXIYUYCJBFTVNWIITVHBYLNMPWR"
-."LPMMIROZVRUNYXSJSMJINSXGACXDMJAEPNFFAERHVDJELXSPPJWKMNFGVGAPTIMR"
-."VMVMVCLWKMPOAJWZGPSPFEXVNQANXGLZIQSCBIYVFSTXZOODZYCXUVUZFCLFGHUJ"
-."TXZWFHSMFJQAZOQRANKZJAUJHFJIKHIIEQUSDXUBRPQBKMIAVTWYQEOIMYKKDTEV"
-."EYERPXKFJXWNIMJPOFFMWJCJSLFZKPNRNVXIDLUSRVBGLUCQZCUQCZNAORDXMRSS"
-."UBNMPXJDQXXLMQRCTOCCJJWHFSUWBNWXWZHPKWYYKPZIMBXTYAZXJJQSBLNAQGJI"
-."AIXZUHNTQYFSGUYMVOWEGUWWRBEMRJHXXOMLRXXWJZLPGLMKEANZWWXIXPIUTURJ"
-."TCXYIKIPNTSUIOWBCEVQHLTHYQNGBHAOPREWGJVOQKNUKTXVTMBRHCERDGYWQVXB"
-."BCZUGMIJXALLIOSXCYMEIDNTPLGRMKXKVFKWGRFKCBIRASOOYIFTLXFSBEOJSDFN"
-."PHSWPGERDYIGUPDXUBSAFCHTPJNBORIRMAOCKGAMFFZUBTVSGEEFMYMEBPUVCRSP"
-."DEEAROBQLJHNMCDAFMPLUKNZXTTJJIULUTDTLEZLVMRLKNLXGCQIGFCBHEWDHNPW"
-."VRONBYCXVRGNQUMFSRADSIFLNRMQXAZKQUKYXGOAKTSLWVSBJMQYZMULCNYKFFUC"
-."LKIPNJOURQLYDHLZYPHEJXPBYTXTGVZOGQUZXAORYINAOTRJCNEDPAXSJIQICWEY"
-."UEJPQALSYHKYZLPJTMBLIDNFRFLTIOVZZTEWPSJCUNDWUDZWJKDDRJEXOICJBSYP"
-."ZHLECBYVMMYLCCPCSVOVPEHEWQDJYSCOWTKFHTWVTSBCQSFKQFCNTGOQBEPSEXKR"
-."AMJIKXZCWLPXMEUBLRJHNEVGMTGARBOBLOYPWUCWSBVTMZBIBRDCNOYXLPSDZODN"
-."JSZXXQUCJZKIYOCCRHYALAJSYXFMWBAOIVAJWIAPOECUJAMFPCOCZDBDHRTBUWWJ"
-."EJYZESNKIXFEBENSOHLCNSQPWGGJLOMTFEZVWWQAKPIFGUUUMWOKLXDUPFMOEKQG"
-."ELOIQAUJPPIJZWKTCYQTJWXCBJMQWIOLQWJIASSXSFLWGUSETHRKEJHCHBOFLJJC"
-."KPPLOTKBXSKUOSNSFHOJRCKXOKQHETCGSMABVALDSBAXBQRFNNJGIDZMNUYQYDHX"
-."DJAHJBJSUEHADPSHOPOXEIRQPEAJEMEBWNXTOSGEQFUVXVHZDYHRUXCRICUHYUHA"
-."FXXGTKWVDDMDSLXEVKZUNTEUKWAGSAWPHGQHEBUMQDHZDVIFVFNDXDUEVZVGSBCQ"
-."STWYUOIHBOQQBAIAQJVNDZQVWHNXHMROIMXNCZRHYXUBFYLEZTWFCYOVILASEFSH"
-."ZUQSNNTYEOCSTRDJPFHCPTDEWCQNEDFOQCZMXKCFIANKWOVDARXWRUCTPYPGTEZB"
-."PERZIMOHRCNBYYJVYFBQJARSULMIAQPILDHEMKNVWMGFQBGZRSQZWZBMSDYKLOTA"
-."VUILKBJADGDTEZENLJEOYPXIXJWIJXONTLXBRLIJFQZORAJIIZQRCUOZLVUTIHXI"
-."NDRVVDJTEIKVLKZVRWHINEYVRGJHXLRNDCNFIYFRUUWMKKGHCPWLZKFULMJOIGJZ"
-."OONOCNPLEJIBKYFDGEQEMMWYBNBWPDRCEIUMFTYAULDBHSHAGPFWVTZXYQGUAXYN"
-."JGGOAMNBBFFSCDSXRTPOHBOVZEXYKAENIWSMBOXGQQTDTIBPSXFHMQUMMKNYYWIC"
-."MFDWSMZDWHGCEWQHFTIMDGTMCEFKWMBAVPEBTCKHRRTLAYEGZTINIWYCUJRZMBPS"
-."TLLEDLEPSAFMQPHYNJWBSSXKEMKLEZIAVNYIOUOTKGYUYJBKBSBQCFRXKOQABUWF"
-."YCNLGXGTLWMLEJVSNDIAMYSXSYFLMNGBOZSREPCPQLRCLNYFVKTWUWBNYAPZTJVO"
-."ONEPJBVBIOPBGVUNWUWZZBJEBDWUWUNFDBOICCGKXDBQWSWFUMIYRCXHLDWFKDUO"
-."PBGTXWNOMUEBENXMARIGPKDETSZNTRODQZYNJJDMYSUBOLPWOEWEVESPLXIKLELG"
-."DCIPTCCKJNNDBRCNVNHVZWPKWPUWLSOORQHNXRBZHHIYPJNBIRCZCIGGEMYKNWXV"
-."TLCLXTIYRVUXONAJUCNMWHNMUSHRWHOEQTTGYJRJEZKNHLVUXUKQQYREZXWRNQKO"
-."BDZTUGIKACSXLRJLESYYPLRFCFVSWJSZYPJBLBTPSEGUZOEXDIXEVWZJEOMOJOIB"
-."QNXNFUXBRJYXMDXQOLVWVLZZMTEMTYRZBWUEEFIBOWXAPKEIQIZZCLMWAOBZVFTP"
-."QQPBYCCLEYRLXVBPMUUMUDPECMDFSVJNKKAEMBYJJXMZGWYTAHECIXAFGWAOGIWV"
-."GAOHCMVHJZVWZCHJWGJJDBZNDXPXOYTDVZEDPWZIIMQVCQPLQIEOSRPVVICTZKGX"
-."JXSFDFUHKKOTXTEGLDSCAODMCVGSSEYANCXJDATMRJRIDLLIJHINSOXJQDEABCVU"
-."WFXWKXJQEREZDLOVUQHYBESHNJWTESPNDVIKYLCTNQEVVUXAWFNQEYIVZXNMJEPL"
-."MFMTOKXXFQYYVBHAXYQVUBALQLSNJSVOTZDDTOZMUEVZJATXQNQVSFXWTGACHUDD"
-."QXCPCRLSREKXHKJNUYUJGIGCNWXUSXOGGYPQWFZDJCKKZONXJUSJKBYIPJSMPVIN"
-."UFBIFNROMBTKQPBIZYJWLPQIJLNTLHTUEWFINOQQDAHCXXKVADTEDBANOPIJBXXC"
-."NAEZOVJAISUQBCBNOYIJBXMRPYPKXBFKFVGQLOEFPOCTZHJXKGUPZQPZOZWXXSSH"
-."SLBGVGVPRAFJCVRKWLSWLMHBMYOKVJDCZSQBLTGSOJDJHOVIDEBKJZNAQYLFIEYS"
-."AYHOSGGDDJAAVTMBYFREMEPLWZXYZUYYRQWKQBLKAPDXMMHCBWSARJCHPGZFCVJG"
-."OXXKCMWTVMKHUUSUMQOGNIHKIIAXNOAHPRIWHDOBJTRKSZAKOMHWTPQQXGZBOPIP"
-."FQEVUBULHGESOARVICLMSUSHHTVYLFMLHFGKJNPYIYEMLBAZMLIDDSWRCVFOUSGC"
-."TUQHWTUHRJUZHYQOKTWTLRVOSWRPSYBOBSZHZLRZEIZKKCMLNYICCUTIXNXETTKL"
-."PYIFTUDCMWRQBZDROXTTVTAOOIQHIWOZESRHKPNGNCSHNAVEWUSGOTZCRNFSIXGF"
-."QJUMUFPEZBFPOVGZZDCGDKEODSWAPNDNHVJUQDYLCXWNXSCDFFFPBTDOIZIZLBBP"
-."ZXZYWTTPEUUCKXGBTXAJBAXYLMUVWWGWZYTXTKYVRXSOXOBHERLZJPRDXIQZRQLU"
-."TXCLIJNKIRWMVQEJTLHZIDTNGBOYSULGWUTSYTKGNMGZFWKXCCZXGOQGZNQFZJUK"
-."JMBQPQPZOPYTQMPEFTZUDLIIBZAZSZAPNILMIKMPKXJIRHRQMFSTJKAPIIQWOFYQ"
-."HGANJGJSUGDIENDVEQFEMUJBGMZBPHLOARCVGMUUCHLCDDNKSJSCKYSALUAGUZFN"
-."YVURVLREBESGXPANIDKGLPJZGXLKFKTPEQBQEINOYYZTBMPFBLBKIKVPAPFDKKRZ"
-."YMVUBYCYTRXCIICUPTXKGQOIJSVSWPYVALIROWGVXDXGNSRVZOLEJHNRSUKHNTRJ"
-."LQZQKBEFXYKIPXJRZMQMJKUGCNUKBZBWABPLHMAJJZVBCWOQYCLSGDUKJSTHTVXV"
-."OUGJVADGJWGVNBNXYRZDSNLOZDIQRKOQAKJJDKXRMMTXRVTLOMTETNROPDYNXAGR";
-?><html>
+    log_load("index_rd_ifra_init.php");
+
+    if (($from  = gpcs_var('from', $get, $post, $cookie)) === FALSE)
+        $from = "";
+    if (($stat  = gpcs_var('stat', $get, $post, $cookie)) === FALSE) 
+        $stat = "";
+    if (($subst = gpcs_var('subst', $get, $post, $cookie)) === FALSE) 
+        $subst = "";
+    if (($step  = gpcs_var('step', $get, $post, $cookie)) === FALSE) 
+        unset($step);
+    
+    $user->rd_data_set(time() + STREAM_TIMEOUT, $stat, $subst, $step, $from);
+
+    $body .= sprintf("<html>
 <head>
-<script type="text/javascript" src="commons.js"></script>
-<script type="text/javascript" src="xynt-http-streaming-ifra.js"></script>
-<script type="text/javascript">
-var http_streaming = "ready";
-<?php
-if (isset($st)) {
-        printf("last_clean = %d;\n", $st);
+<script type=\"text/javascript\" src=\"commons.js\"></script>
+<script type=\"text/javascript\" src=\"xynt-http-streaming-ifra.js\"></script>
+<script type=\"text/javascript\">
+var http_streaming = \"ready\";");
+    if (isset($st)) {
+        $body .= sprintf("last_clean = %d;\n", $st);
     }
-?>
-window.onload = function () { if (http_streaming != "ready") { http_streaming.reload(); } };
+    $body .= sprintf("
+window.onload = function () { if (http_streaming != \"ready\") { http_streaming.reload(); } };
 </script> 
 </head>
-<body>
-<?php
+<body>");
+    $body .= sprintf("<!-- \n%s -->\n", $G_four_rnd_string);
 
-echo("<!-- ");
-echo($four_rnd_string);
-echo(" -->\n");
-mop_flush();
-
-if (!isset($from))
-     $from = "";
-if (!isset($subst))
-     $subst = "";
-log_rd2("FROM OUTSIDE - STAT: ".$stat." SUBST: ".$subst." STEP: ".$step." FROM: ".$from. "IS_PAGE:" . $is_page_streaming);
-
-
-$endtime = time() + STREAM_TIMEOUT;
-$old_stat =  $stat;
-$old_subst = $subst;
-$old_step =  $ext_step = $step;
-
-$no_data = TRUE;
-for ($i = 0, $script_step = 0 ; time() < $endtime ; $i++) {
-  // log_rd("PRE MAIN ".$step);;
-  $pre_main = gettimeofday(TRUE);
-  if (($ret = maincheck($sess, $old_stat, $old_subst, $old_step, &$stat, &$subst, &$step)) != FALSE) {
-      $no_data = FALSE;
-      if (0 == 1) {
-          echo '@BEGIN@';
-          // log_rd2(sprintf("\nSESS: [%s]\nOLD_STAT: [%s] OLD_SUBST: [%s] OLD_STEP: [%s] \nSTAT: [%s] SUBST: [%s] STEP: [%s] \nCOMM: [%s]\n", $sess, $old_stat, $old_subst, $old_step, $stat, $subst, $step, $ret));
-          echo "$ret";
-          echo ' @END@'; 
-      }
-      printf("<script id='hs%d' type='text/javascript'><!--
-push(\"%s\");
-// -->
-</script>", $script_step++, escpush($ret) );
-
-    log_send("IS_PAGE: ".($is_page_streaming == TRUE ? "TRUE" : "FALSE")." EXT_STEP: ".$ext_step." ENDTIME: [".$endtime."] ".$ret);
-    mop_flush();
-    log_rd2(0, 'index_rd.php: after mop_flush (begin: '.sprintf("%f", $pre_main).')');
-    if ($is_page_streaming) 
-        break;
-  }
-  $old_stat =  $stat;
-  $old_subst = $subst;
-  $old_step =  $step;
-  // log_rd("POST MAIN ".$step);;
-  usleep(400000);
-  if (($i % 10) == 0) {
-      if ($no_data == TRUE) {
-          // log_rd2("TIME: ".time());
-          printf("<script id='hs%d' type='text/javascript'><!--
-push(null);
-// -->
-</script>", $script_step++);
-          mop_flush();
-          log_crit("flush");
-      }
-      $no_data = TRUE;
-  }
+    return TRUE;
 }
 
-$s = ""; 
-$tr = 0;
-$tw = 0;
-foreach ($S_load_stat as $key => $value) {
-    $s .= sprintf("%s: %d - ", $key, $value);
-    if (substr($key, 0, 1) == "w")
-        $tw += $value;
-    else if (substr($key, 0, 1) == "r")
-        $tr += $value;
+function index_rd_ifra_main(&$room, &$user, &$body)
+{
+    GLOBAL $is_page_streaming;
+
+    $is_page_streaming = FALSE;
+    log_rd2("FROM OUTSIDE - STAT: ".$user->rd_stat." SUBST: ".$user->rd_subst." STEP: ".$user->rd_step." FROM: ".$user->rd_from. "IS_PAGE:" . $is_page_streaming);
+    
+    
+    // $no_data = TRUE;
+    // for ($i = 0, $script_step = 0 ; time() < $endtime ; $i++) {
+        // log_rd("PRE MAIN ".$step);;
+
+        $pre_main = gettimeofday(TRUE);
+
+        $old_stat  = $user->rd_stat;
+        $old_subst = $user->rd_subst;
+        $old_step  = $user->rd_step;
+        if (($ret = maincheck($room, $user, $old_stat, $old_subst, $old_step, $user->rd_stat, $user->rd_subst, $user->rd_step)) != FALSE) {
+            // $no_data = FALSE;
+            if (0 == 1) {
+                echo '@BEGIN@';
+                // log_rd2(sprintf("\nSESS: [%s]\nOLD_STAT: [%s] OLD_SUBST: [%s] OLD_STEP: [%s] \nSTAT: [%s] SUBST: [%s] STEP: [%s] \nCOMM: [%s]\n", $sess, $old_stat, $old_subst, $old_step, $stat, $subst, $step, $ret));
+                echo "$ret";
+                echo ' @END@'; 
+            }
+            $body .= sprintf("<script id='hs%d' type='text/javascript'><!--
+push(\"%s\");
+// -->
+</script>", $user->rd_scristp++, escpush($ret) );
+            
+            // log_send("IS_PAGE: ".($is_page_streaming == TRUE ? "TRUE" : "FALSE")." ENDTIME: [".$endtime."] ".$ret);
+            // mop_flush();
+            log_rd2(0, 'index_rd.php: after mop_flush (begin: '.sprintf("%f", $pre_main).')');
+            if ($is_page_streaming) 
+                return TRUE;
+        }
+        /* $old_stat =  $stat; */
+        /* $old_subst = $subst; */
+        /* $old_step =  $step; */
+        // log_rd("POST MAIN ".$step);;
+        // usleep(400000);
+/*         if (($i % 10) == 0 && 1 == 0) { // TODO: reenable push(null); */
+/*             if ($no_data == TRUE) { */
+/*                 // log_rd2("TIME: ".time()); */
+/*                 printf("<script id='hs%d' type='text/javascript'><!-- */
+/* push(null); */
+/* // --> */
+/* alert(\"de che\"); */
+/* </script>", $script_step++); */
+/*                 // mop_flush(); */
+/*                 log_crit("flush"); */
+/*             } */
+/*             $no_data = TRUE; */
+/*         } */
+        // }
+    
+    /* $s = "";  */
+    /* $tr = 0; */
+    /* $tw = 0; */
+    /* foreach ($S_load_stat as $key => $value) { */
+    /*     $s .= sprintf("%s: %d - ", $key, $value); */
+    /*     if (substr($key, 0, 1) == "w") */
+    /*         $tw += $value; */
+    /*     else if (substr($key, 0, 1) == "r") */
+    /*         $tr += $value; */
+    /* } */
+    /* $s = sprintf("index_rd.php stats:  R: %d W: %d - %s", $tr, $tw, $s); */
+    /* log_crit($s); */
+
+    return TRUE;
 }
-$s = sprintf("index_rd.php stats:  R: %d W: %d - %s", $tr, $tw, $s);
-log_crit($s);
 ?>
index 6dfeea6..22f2587 100644 (file)
@@ -22,8 +22,6 @@
  *
  */
 
-$G_base = "";
-
 require_once("Obj/brisk.phh");
 require_once("Obj/auth.phh");
 // require_once("Obj/proxyscan.phh");
@@ -81,597 +79,609 @@ $mlang_indwr = array( 'btn_backtotab' => array( 'it' => 'Torna ai tavoli.',
 
                       );
 
-log_load("index_wr.php");
-
-if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
-  echo "Debugging time!";
-  exit;
-}
-
-/*
- *  MAIN
- */
-
-/* if the IP is banned, exit without do nothing */
-if (array_search($_SERVER['REMOTE_ADDR'], $G_black_list) !== FALSE) {
-  sleep(5);
-  exit;
-}
-
-$is_spawn = FALSE;
-
-log_wr(0, 'index_wr.php: COMM: '.xcapemesg($mesg));
-log_wr('COMM: '.xcapemesg($mesg));
-
-$curtime = time();
-$dt = date("H:i ", $curtime);
-
-$sem = Room::lock_data(TRUE);
-if (($room = &Room::load_data()) == FALSE) {
-  echo "Load data error";
-  log_wr("Load data error");
-  Room::unlock_data($sem);
-  exit;
-}
-if (($user = $room->get_user($sess, &$idx)) == FALSE) {
-  Room::unlock_data($sem);
-  $argz = explode('|', xcapemesg($mesg));
-
-  if ($argz[0] == 'getchallenge') {
-      GLOBAL $cli_name;
-      if (($a_sem = Challenges::lock_data(TRUE)) != FALSE) { 
-          log_main("chal lock data success");
-          
-          if (($chals = &Challenges::load_data()) != FALSE) {
-              
-              $token =  uniqid("");
-              // echo '2|'.$argz[1].'|'.$token.'|'.$_SERVER['REMOTE_ADDR'].'|'.$curtime.'|';
-              // exit;
-              
-              if (($login_new = validate_name(urldecode($cli_name))) != FALSE) {
-                  if ($chals->add($login_new, $token, $_SERVER['REMOTE_ADDR'], $curtime) != FALSE) {
-                      log_send("SUCCESS: token:".$token);
-                      echo '0|'.$token;
-                  }
-                  else {
-                      log_send("getchallenge FAILED");
-                      echo '1|';
-                  }
-              }
-              else {
-                  log_send("getchallenge FAILED");
-                  echo '1|';
-              }
-              if ($chals->ismod()) {
-                  Challenges::save_data(&$chals);
-              }
-          }
-          
-          
-          Challenges::unlock_data($a_sem);
-      }
-  }
-  else if ($argz[0] == 'auth') {
-    printf("challenge|ok");
-  }
-  else if ($argz[0] == 'help') {
-    /* MLANG: "torna ai tavoli" */ 
-    echo show_notify(str_replace("\n", " ", $G_room_help[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 600, 500);
-  }
-  else if ($argz[0] == 'about') {
-    echo show_notify(str_replace("\n", " ", $G_room_about[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 220);
-  }
-  else if ($argz[0] == 'passwdhowto') {
-    echo show_notify(str_replace("\n", " ", $G_room_passwdhowto[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 200);
-  }
-  else if ($argz[0] == 'roadmap') {
-    echo show_notify(str_replace("\n", " ", $G_room_roadmap[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 200);
-  }
-  else if ($argz[0] == 'placing') {
-    require_once("briskin5/Obj/briskin5.phh");
-    require_once("briskin5/Obj/placing.phh");
-
-    echo show_notify(str_replace("\n", " ", placings_show(FALSE)), 0, $mlang_indwr['btn_close'][$G_lang], 800, 600);
-  }
-  else if ($argz[0] == 'whysupport') {
-    echo show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lng], 400, 200);
-  }
-  else { 
-    log_wr("Get User Error");
-    echo "Get User Error:" + $argz[0];
-  }
-  exit;
-}
-$argz = explode('|', xcapemesg($mesg));
-
-log_wr('POSTSPLIT: '.$argz[0]);
+function index_wr_main(&$room, $remote_addr, $get, $post, $cookie)
+{
+    GLOBAL $G_black_list;
 
-log_wr($user->step, 'index_wr.php: after get_user()');
+    log_load("index_wr.php");
 
-if ($argz[0] == 'shutdown') {
-  log_auth($user->sess, "Shutdown session.");
+    if (($mesg = gpcs_var('mesg', $get, $post, $cookie)) === FALSE) 
+        unset($mesg);
 
-  $user->reset();
-
-  log_rd2("AUTO LOGOUT.");
-  if ($user->subst == 'sitdown' || $user->stat == 'table')
-    $room->room_wakeup($user);
-  else if ($user->subst == 'standup')
-    $room->room_outstandup(&$user);
-  else {
-    log_rd2("SHUTDOWN FROM WHAT ???");
-  }
-}
-else if ($argz[0] == 'warranty') {
-  GLOBAL $cli_name, $cli_email;
-
-  $mesg_to_user = "";
-
-  log_wr("INFO:SKIP:argz == warranty name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH));
-  if ($user->flags & USER_FLAG_AUTH) {
-    if (($wa_lock = Warrant::lock_data(TRUE)) != FALSE) {
-      if (($fp = @fopen(LEGAL_PATH."/warrant.txt", 'a')) != FALSE) {
-        /* Unix time | session | nickname | IP | where was | mesg */
-          fwrite($fp, sprintf("%ld|%s|%s|%s|\n", $curtime, xcapelt($user->name), xcapelt(urldecode($cli_name)), xcapelt(urldecode($cli_email))));
-        fclose($fp);
-      }
-      Warrant::unlock_data($wa_lock);
-      $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-      /* MLANG: "<br>Il nominativo &egrave; stato inoltrato all\'amministratore.<br><br>Nell\'arco di pochi giorni vi verr&agrave;<br><br>notificata l\'avvenuta registrazione." */
-      $user->comm[$user->step % COMM_N] .=  show_notify($mlang_indwr['warrrepl'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 150);
-      $user->step_inc();
-      echo "1";
-    }
-    else {
-      /* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" */
-      $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]);
+    
+    if (DEBUGGING == "local" && $remote_addr != '127.0.0.1') {
+        echo "Debugging time!";
+        return (FALSE);
     }
     
-  }
-  else {
-    /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
-    $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['warrmust'][$G_lang]);
-  }
-
-  if ($mesg_to_user != "") {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+    /*
+     *  MAIN
+     */
     
-    $user->comm[$user->step % COMM_N] .= $mesg_to_user;
-    $user->step_inc();
-  }
-}
-else if ($argz[0] == 'mesgtoadm') {
-    GLOBAL $cli_subj, $cli_mesg;
+    /* if the IP is banned, exit without do nothing */
+    if (array_search($remote_addr, $G_black_list) !== FALSE) {
+        sleep(5);
+        return (FALSE);
+    }
+
+    $is_spawn = FALSE;
     
-    $mesg_to_user = "";
+    log_wr(0, 'index_wr.php: COMM: '.xcapemesg($mesg));
+    log_wr('COMM: '.xcapemesg($mesg));
     
-    log_wr("INFO:SKIP:argz == mesgtoadm name: [".$user->name."] AUTH: ".($user->flags & USER_FLAG_AUTH));
-    if ($user->flags & USER_FLAG_AUTH) {
-        if (($wa_lock = Warrant::lock_data(TRUE)) != FALSE) {
-            if (($bdb = BriskDB::create()) != FALSE) {
-                $bdb->users_load();
+    $curtime = time();
+    $dt = date("H:i ", $curtime);
+    
+    if (($user = $room->get_user($sess, &$idx)) == FALSE) {
+        $argz = explode('|', xcapemesg($mesg));
+        
+        if ($argz[0] == 'getchallenge') {
+            if (isset($get['cli_name']))
+                $cli_name = $get['cli_name'];
+            if (($a_sem = Challenges::lock_data(TRUE)) != FALSE) { 
+                log_main("chal lock data success");
                 
-                if (($ema = $bdb->getmail($user->name)) != FALSE) {
-                    //  mail("nastasi", 
-                    mail("brisk@alternativeoutput.it", urldecode($cli_subj), urldecode($cli_mesg), sprintf("From: %s <%s>", $user->name, $ema));
+                if (($chals = &Challenges::load_data()) != FALSE) {
+                    
+                    $token =  uniqid("");
+                    // echo '2|'.$argz[1].'|'.$token.'|'.$remote_addr.'|'.$curtime.'|';
+                    // exit;
+                    
+                    if (($login_new = validate_name(urldecode($cli_name))) != FALSE) {
+                        if ($chals->add($login_new, $token, $remote_addr, $curtime) != FALSE) {
+                            log_send("SUCCESS: token:".$token);
+                            echo '0|'.$token;
+                        }
+                        else {
+                            log_send("getchallenge FAILED");
+                            echo '1|';
+                        }
+                    }
+                    else {
+                        log_send("getchallenge FAILED");
+                        echo '1|';
+                    }
+                    if ($chals->ismod()) {
+                        Challenges::save_data(&$chals);
+                    }
                 }
                 
-                if (($fp = @fopen(LEGAL_PATH."/messages.txt", 'a')) != FALSE) {
-                    /* Unix time | session | nickname | IP | where was | mesg */
-                    fwrite($fp, sprintf("%ld|%s|%s|%s\n", $curtime, $user->name, 
-                                        xcapelt(urldecode($cli_subj)), xcapelt(urldecode($cli_mesg))));
-                    fclose($fp);
-                }
-                Warrant::unlock_data($wa_lock);
-                $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-            /* MLANG: "" */
-                $user->comm[$user->step % COMM_N] .=  show_notify($mlang_indwr['mesgrepl'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
-                $user->step_inc();
-                echo "1";
+                
+                Challenges::unlock_data($a_sem);
             }
             else {
-                /* MLANG: "<b>Il database è temporaneamente irraggiungibile, riprova più tardi o contatta l\'amministratore.</b>" */
-                $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['coerrdb'][$G_lang]);
-                $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+                echo "CHALLENGE LOCK FAILED\n";
+                return FALSE;
             }
         }
-        else {
-            /* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" */
-            $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]);
-        }
+  /* else if ($argz[0] == 'auth') { */
+  /*   printf("challenge|ok"); */
+  /* } */
+  /* else if ($argz[0] == 'help') { */
+  /*   /\* MLANG: "torna ai tavoli" *\/  */
+  /*   echo show_notify(str_replace("\n", " ", $G_room_help[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 600, 500); */
+  /* } */
+  /* else if ($argz[0] == 'about') { */
+  /*   echo show_notify(str_replace("\n", " ", $G_room_about[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 220); */
+  /* } */
+  /* else if ($argz[0] == 'passwdhowto') { */
+  /*   echo show_notify(str_replace("\n", " ", $G_room_passwdhowto[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 200); */
+  /* } */
+  /* else if ($argz[0] == 'roadmap') { */
+  /*   echo show_notify(str_replace("\n", " ", $G_room_roadmap[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lang], 400, 200); */
+  /* } */
+  /* else if ($argz[0] == 'placing') { */
+  /*   require_once("briskin5/Obj/briskin5.phh"); */
+  /*   require_once("briskin5/Obj/placing.phh"); */
+
+  /*   echo show_notify(str_replace("\n", " ", placings_show(FALSE)), 0, $mlang_indwr['btn_close'][$G_lang], 800, 600); */
+  /* } */
+  /* else if ($argz[0] == 'whysupport') { */
+  /*   echo show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_close'][$G_lng], 400, 200); */
+  /* } */
         
+        else { 
+            log_wr("Get User Error");
+            echo "Get User Error:" + $argz[0];
+            return FALSE;
+        }
+        return TRUE;
     }
-    else {
-        /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
-        $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['mesgmust'][$G_lang]);
-    }
+
+
+
+/* $argz = explode('|', xcapemesg($mesg)); */
+
+/* log_wr('POSTSPLIT: '.$argz[0]); */
+
+/* log_wr($user->step, 'index_wr.php: after get_user()'); */
+
+/* if ($argz[0] == 'shutdown') { */
+/*   log_auth($user->sess, "Shutdown session."); */
+
+/*   $user->reset(); */
+
+/*   log_rd2("AUTO LOGOUT."); */
+/*   if ($user->subst == 'sitdown' || $user->stat == 'table') */
+/*     $room->room_wakeup($user); */
+/*   else if ($user->subst == 'standup') */
+/*     $room->room_outstandup(&$user); */
+/*   else { */
+/*     log_rd2("SHUTDOWN FROM WHAT ???"); */
+/*   } */
+/* } */
+/* else if ($argz[0] == 'warranty') { */
+/*   GLOBAL $cli_name, $cli_email; */
+
+/*   $mesg_to_user = ""; */
+
+/*   log_wr("INFO:SKIP:argz == warranty name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH)); */
+/*   if ($user->flags & USER_FLAG_AUTH) { */
+/*     if (($wa_lock = Warrant::lock_data(TRUE)) != FALSE) { */
+/*       if (($fp = @fopen(LEGAL_PATH."/warrant.txt", 'a')) != FALSE) { */
+/*         /\* Unix time | session | nickname | IP | where was | mesg *\/ */
+/*           fwrite($fp, sprintf("%ld|%s|%s|%s|\n", $curtime, xcapelt($user->name), xcapelt(urldecode($cli_name)), xcapelt(urldecode($cli_email)))); */
+/*         fclose($fp); */
+/*       } */
+/*       Warrant::unlock_data($wa_lock); */
+/*       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*       /\* MLANG: "<br>Il nominativo &egrave; stato inoltrato all\'amministratore.<br><br>Nell\'arco di pochi giorni vi verr&agrave;<br><br>notificata l\'avvenuta registrazione." *\/ */
+/*       $user->comm[$user->step % COMM_N] .=  show_notify($mlang_indwr['warrrepl'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 150); */
+/*       $user->step_inc(); */
+/*       echo "1"; */
+/*     } */
+/*     else { */
+/*       /\* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" *\/ */
+/*       $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]); */
+/*     } */
+    
+/*   } */
+/*   else { */
+/*     /\* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" *\/ */
+/*     $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['warrmust'][$G_lang]); */
+/*   } */
+
+/*   if ($mesg_to_user != "") { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
     
-    if ($mesg_to_user != "") {
-        $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+/*     $user->comm[$user->step % COMM_N] .= $mesg_to_user; */
+/*     $user->step_inc(); */
+/*   } */
+/* } */
+/* else if ($argz[0] == 'mesgtoadm') { */
+/*     GLOBAL $cli_subj, $cli_mesg; */
+    
+/*     $mesg_to_user = ""; */
+    
+/*     log_wr("INFO:SKIP:argz == mesgtoadm name: [".$user->name."] AUTH: ".($user->flags & USER_FLAG_AUTH)); */
+/*     if ($user->flags & USER_FLAG_AUTH) { */
+/*         if (($wa_lock = Warrant::lock_data(TRUE)) != FALSE) { */
+/*             if (($bdb = BriskDB::create()) != FALSE) { */
+/*                 $bdb->users_load(); */
+                
+/*                 if (($ema = $bdb->getmail($user->name)) != FALSE) { */
+/*                     //  mail("nastasi",  */
+/*                     mail("brisk@alternativeoutput.it", urldecode($cli_subj), urldecode($cli_mesg), sprintf("From: %s <%s>", $user->name, $ema)); */
+/*                 } */
+                
+/*                 if (($fp = @fopen(LEGAL_PATH."/messages.txt", 'a')) != FALSE) { */
+/*                     /\* Unix time | session | nickname | IP | where was | mesg *\/ */
+/*                     fwrite($fp, sprintf("%ld|%s|%s|%s\n", $curtime, $user->name,  */
+/*                                         xcapelt(urldecode($cli_subj)), xcapelt(urldecode($cli_mesg)))); */
+/*                     fclose($fp); */
+/*                 } */
+/*                 Warrant::unlock_data($wa_lock); */
+/*                 $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*             /\* MLANG: "" *\/ */
+/*                 $user->comm[$user->step % COMM_N] .=  show_notify($mlang_indwr['mesgrepl'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110); */
+/*                 $user->step_inc(); */
+/*                 echo "1"; */
+/*             } */
+/*             else { */
+/*                 /\* MLANG: "<b>Il database è temporaneamente irraggiungibile, riprova più tardi o contatta l\'amministratore.</b>" *\/ */
+/*                 $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['coerrdb'][$G_lang]); */
+/*                 $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*             } */
+/*         } */
+/*         else { */
+/*             /\* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" *\/ */
+/*             $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]); */
+/*         } */
         
-        $user->comm[$user->step % COMM_N] .= $mesg_to_user;
-        $user->step_inc();
-    }
-}
+/*     } */
+/*     else { */
+/*         /\* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" *\/ */
+/*         $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['mesgmust'][$G_lang]); */
+/*     } */
+    
+/*     if ($mesg_to_user != "") { */
+/*         $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+        
+/*         $user->comm[$user->step % COMM_N] .= $mesg_to_user; */
+/*         $user->step_inc(); */
+/*     } */
+/* } */
 
 
 
-else if ($argz[0] == 'poll') {
-  GLOBAL $G_with_poll, $G_poll_name, $cli_choose, $cli_poll_name;
+/* else if ($argz[0] == 'poll') { */
+/*   GLOBAL $G_with_poll, $G_poll_name, $cli_choose, $cli_poll_name; */
 
-  $poll_lock = FALSE;
-  $mesg_to_user = "";
+/*   $poll_lock = FALSE; */
+/*   $mesg_to_user = ""; */
   
-  $fp = FALSE;
-  $echont = "0";
-
-  /*
-          DONE - autorizzato ?
-          DONE - ci sono poll attivi ?
-          - verifica che il poll_name del client sia uguale a quello sul server
-          DONE - lock
-          DONE - apro file r+ con fallback in w+
-          DONE - vedo se ha già votato
-          DONE - se si: messaggio di voto già dato
-          se no: accetto il voto e lo segno; messaggio
-          chiudo file
-  */
-
-  $dobreak = FALSE;
-  do {
-    log_wr("INFO:SKIP:argz == poll name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH));
-    if (($user->flags & USER_FLAG_AUTH) != USER_FLAG_AUTH) {
-      // MLANG: <b>Per partecipare al sondaggio devi essere autenticato.</b>
-      $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['pollmust'][$G_lang]);
-      log_wr("break1");
-      break;
-    }
-
-    if ($G_with_poll == FALSE && $G_poll_name != FALSE && $G_poll_name != "") {
-      $mesg_to_user = show_notify($mlang_indwr['pollnone'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
-      log_wr("break2");
-      break;
-    }
+/*   $fp = FALSE; */
+/*   $echont = "0"; */
+
+/*   /\* */
+/*           DONE - autorizzato ? */
+/*           DONE - ci sono poll attivi ? */
+/*           - verifica che il poll_name del client sia uguale a quello sul server */
+/*           DONE - lock */
+/*           DONE - apro file r+ con fallback in w+ */
+/*           DONE - vedo se ha già votato */
+/*           DONE - se si: messaggio di voto già dato */
+/*           se no: accetto il voto e lo segno; messaggio */
+/*           chiudo file */
+/*   *\/ */
+
+/*   $dobreak = FALSE; */
+/*   do { */
+/*     log_wr("INFO:SKIP:argz == poll name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH)); */
+/*     if (($user->flags & USER_FLAG_AUTH) != USER_FLAG_AUTH) { */
+/*       // MLANG: <b>Per partecipare al sondaggio devi essere autenticato.</b> */
+/*       $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['pollmust'][$G_lang]); */
+/*       log_wr("break1"); */
+/*       break; */
+/*     } */
+
+/*     if ($G_with_poll == FALSE && $G_poll_name != FALSE && $G_poll_name != "") { */
+/*       $mesg_to_user = show_notify($mlang_indwr['pollnone'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110); */
+/*       log_wr("break2"); */
+/*       break; */
+/*     } */
     
-    if ($cli_choose == "" || !isset($cli_choose)) {
-      $mesg_to_user = show_notify($mlang_indwr['pollchoo'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
-      log_wr("break2.5");
-      break;
-    }
+/*     if ($cli_choose == "" || !isset($cli_choose)) { */
+/*       $mesg_to_user = show_notify($mlang_indwr['pollchoo'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110); */
+/*       log_wr("break2.5"); */
+/*       break; */
+/*     } */
     
-    if (($poll_lock = Poll::lock_data(TRUE)) == FALSE) {
-      /* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" */
-      $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]);
-      log_wr("break3");
-      break;
-    }
+/*     if (($poll_lock = Poll::lock_data(TRUE)) == FALSE) { */
+/*       /\* MLANG: "<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>" *\/ */
+/*       $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]); */
+/*       log_wr("break3"); */
+/*       break; */
+/*     } */
     
-    if (($fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'r+')) == FALSE) 
-      $fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'w+');
+/*     if (($fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'r+')) == FALSE)  */
+/*       $fp = @fopen(LEGAL_PATH."/".$G_poll_name.".txt", 'w+'); */
     
-    if ($fp == FALSE) {
-      $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]);
-      log_wr("break4");
-      break;
-    }
+/*     if ($fp == FALSE) { */
+/*       $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['commerr'][$G_lang]); */
+/*       log_wr("break4"); */
+/*       break; */
+/*     } */
     
-    log_wr("poll: cp");
-    fseek($fp, 0);
+/*     log_wr("poll: cp"); */
+/*     fseek($fp, 0); */
     
-    log_wr("poll: cp2");
-    while (!feof($fp)) {
-      log_wr("poll: cp3");
-      $bf = fgets($fp, 4096);
-      log_wr("poll: cp3.1");
-      $arli = csplitter($bf, '|');
-      if (count($arli) == 0)
-        break;
-    log_wr("poll: cp3.2");
-      if (strcasecmp($arli[1], $user->name) == 0) {
-        $mesg_to_user = show_notify($mlang_indwr['pollagai'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
-        $dobreak = TRUE;
-        break;
-      }
-    }
-    log_wr("poll: cp4");
-
-    if ($dobreak) {
-      log_wr("break5");
-      break;
-    }
+/*     log_wr("poll: cp2"); */
+/*     while (!feof($fp)) { */
+/*       log_wr("poll: cp3"); */
+/*       $bf = fgets($fp, 4096); */
+/*       log_wr("poll: cp3.1"); */
+/*       $arli = csplitter($bf, '|'); */
+/*       if (count($arli) == 0) */
+/*         break; */
+/*     log_wr("poll: cp3.2"); */
+/*       if (strcasecmp($arli[1], $user->name) == 0) { */
+/*         $mesg_to_user = show_notify($mlang_indwr['pollagai'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110); */
+/*         $dobreak = TRUE; */
+/*         break; */
+/*       } */
+/*     } */
+/*     log_wr("poll: cp4"); */
+
+/*     if ($dobreak) { */
+/*       log_wr("break5"); */
+/*       break; */
+/*     } */
       
-    /* Unix time | nickname | choose */
-    fwrite($fp, sprintf("%ld|%s|%s\n", $curtime, xcapelt($user->name), xcapelt(urldecode($cli_choose))));
-    fflush($fp);
-    $mesg_to_user =  show_notify($mlang_indwr['pollrec'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110);
-    $echont = "1";
-    log_wr("poll: cp5");
-  } while (0);
-
-  if ($fp != FALSE)
-    fclose($fp);
-
-  if ($poll_lock != FALSE)
-    Poll::unlock_data($poll_lock);
+/*     /\* Unix time | nickname | choose *\/ */
+/*     fwrite($fp, sprintf("%ld|%s|%s\n", $curtime, xcapelt($user->name), xcapelt(urldecode($cli_choose)))); */
+/*     fflush($fp); */
+/*     $mesg_to_user =  show_notify($mlang_indwr['pollrec'][$G_lang], 0, $mlang_indwr['btn_close'][$G_lang], 400, 110); */
+/*     $echont = "1"; */
+/*     log_wr("poll: cp5"); */
+/*   } while (0); */
+
+/*   if ($fp != FALSE) */
+/*     fclose($fp); */
+
+/*   if ($poll_lock != FALSE) */
+/*     Poll::unlock_data($poll_lock); */
   
-  if ($mesg_to_user != "") {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+/*   if ($mesg_to_user != "") { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
     
-    $user->comm[$user->step % COMM_N] .= $mesg_to_user;
-    $user->step_inc();
-  }
-
-  echo "$echont";
-}
-
-/******************
- *                *
- *   STAT: room   *
- *                *
- ******************/
-else if ($user->stat == 'room') {
-  $user->laccwr = time();
-
-  if ($argz[0] == 'help') {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_help[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 600, 500);
-
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     $user->comm[$user->step % COMM_N] .= $mesg_to_user; */
+/*     $user->step_inc(); */
+/*   } */
+
+/*   echo "$echont"; */
+/* } */
+
+/* /\****************** */
+/*  *                * */
+/*  *   STAT: room   * */
+/*  *                * */
+/*  ******************\/ */
+/* else if ($user->stat == 'room') { */
+/*   $user->laccwr = time(); */
+
+/*   if ($argz[0] == 'help') { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_help[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 600, 500); */
+
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
     
-  }
-  else if ($argz[0] == 'passwdhowto') {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_passwdhowto[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 600, 500);
+/*   } */
+/*   else if ($argz[0] == 'passwdhowto') { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_passwdhowto[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 600, 500); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
     
-  }
-  else if ($argz[0] == 'splash') {
-    GLOBAL $G_with_splash, $G_splash_content, $G_splash_interval, $G_splash_idx;
-    GLOBAL $G_splash_w, $G_splash_h, $G_splash_timeout;
-    $CO_splashdate = "CO_splashdate".$G_splash_idx;
-    GLOBAL $$CO_splashdate;
+/*   } */
+/*   else if ($argz[0] == 'splash') { */
+/*     GLOBAL $G_with_splash, $G_splash_content, $G_splash_interval, $G_splash_idx; */
+/*     GLOBAL $G_splash_w, $G_splash_h, $G_splash_timeout; */
+/*     $CO_splashdate = "CO_splashdate".$G_splash_idx; */
+/*     GLOBAL $$CO_splashdate; */
 
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
 
 
-    $user->comm[$user->step % COMM_N] .=  show_notify_ex(str_replace("\n", " ", $G_splash_content[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], $G_splash_w, $G_splash_h, true, 0);
+/*     $user->comm[$user->step % COMM_N] .=  show_notify_ex(str_replace("\n", " ", $G_splash_content[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], $G_splash_w, $G_splash_h, true, 0); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
-  }
-  else if ($argz[0] == 'about') {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_about[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
+/*   } */
+/*   else if ($argz[0] == 'about') { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_about[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
     
-  }
+/*   } */
 
 
-  else if ($argz[0] == 'placing') {
+/*   else if ($argz[0] == 'placing') { */
 
-    require_once("briskin5/Obj/briskin5.phh");
-    require_once("briskin5/Obj/placing.phh");
+/*     require_once("briskin5/Obj/briskin5.phh"); */
+/*     require_once("briskin5/Obj/placing.phh"); */
 
-    $user->comm[$user->step % COMM_N] =  "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .= show_notify_ex(str_replace("\n", " ", placings_show($user)), 0, $mlang_indwr['btn_backtotab'][$G_lang], 800, 600, TRUE, 0);
+/*     $user->comm[$user->step % COMM_N] =  "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .= show_notify_ex(str_replace("\n", " ", placings_show($user)), 0, $mlang_indwr['btn_backtotab'][$G_lang], 800, 600, TRUE, 0); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
 
 
-  }
+/*   } */
 
 
-  else if ($argz[0] == 'roadmap') {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_roadmap[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
+/*   else if ($argz[0] == 'roadmap') { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_roadmap[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
     
-  }
-  else if ($argz[0] == 'whysupport') {
-    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-    $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200);
+/*   } */
+/*   else if ($argz[0] == 'whysupport') { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*     $user->comm[$user->step % COMM_N] .=  show_notify(str_replace("\n", " ", $G_room_whysupport[$G_lang]), 0, $mlang_indwr['btn_backtotab'][$G_lang], 400, 200); */
 
-    log_wr($user->comm[$user->step % COMM_N]);
-    $user->step_inc();
+/*     log_wr($user->comm[$user->step % COMM_N]); */
+/*     $user->step_inc(); */
     
-  }
-  else if ($argz[0] == 'chatt') {
-    $room->chatt_send(&$user, xcapemesg($mesg));
-  }
-  /**********************
-   *                    *
-   *   SUBST: standup   *
-   *                    *
-   **********************/
-  else if ($user->subst == 'standup') {
+/*   } */
+/*   else if ($argz[0] == 'chatt') { */
+/*     $room->chatt_send(&$user, xcapemesg($mesg)); */
+/*   } */
+/*   /\********************** */
+/*    *                    * */
+/*    *   SUBST: standup   * */
+/*    *                    * */
+/*    **********************\/ */
+/*   else if ($user->subst == 'standup') { */
    
-    if ($argz[0] == 'sitdown') {
-        log_wr("SITDOWN command");
-
-      if ($user->the_end == TRUE) {
-       log_wr("INFO:SKIP:argz == sitdown && ->the_end == TRUE => ignore request.");
-       Room::unlock_data($sem);
-       exit;
-      }
-
-      // Take parameters
-      $table_idx = (int)$argz[1];
-      $table = &$room->table[$table_idx];
+/*     if ($argz[0] == 'sitdown') { */
+/*         log_wr("SITDOWN command"); */
+
+/*       if ($user->the_end == TRUE) { */
+/*     log_wr("INFO:SKIP:argz == sitdown && ->the_end == TRUE => ignore request."); */
+/*     Room::unlock_data($sem); */
+/*     exit; */
+/*       } */
+
+/*       // Take parameters */
+/*       $table_idx = (int)$argz[1]; */
+/*       $table = &$room->table[$table_idx]; */
     
-      if ($G_shutdown || $table->wakeup_time > $curtime || 
-          ($table->auth_only && (($user->flags & USER_FLAG_AUTH) == 0)) ) {
-       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-
-        /* MLANG: "<b>Il server sta per essere riavviato, non possono avere inizio nuove partite.</b>", "<b>Il tavolo a cui volevi sederti richiede autentifica.</b>", "<b>Il tavolo si &egrave; appena liberato, ci si potr&agrave; sedere tra %d secondi.</b>" */
-        if ($G_shutdown) {
-          $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['shutmsg'][$G_lang]);
-        }
-        else if ($table->auth_only && (($user->flags & USER_FLAG_AUTH) == 0)) {
-          $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['mustauth'][$G_lang]);
-        }
-        else {
-          $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s%d%s");', $dt, NICKSERV, $mlang_indwr['tabwait_a'][$G_lang], $table->wakeup_time - $curtime, $mlang_indwr['tabwait_b'][$G_lang]);
-        }
-       $user->step_inc();
-       Room::save_data($room);
-       Room::unlock_data($sem);
-       exit;
-      }
-
-      /* TODO: refact to a function */
-      // if ($user->bantime > $user->laccwr) {
-      require_once("Obj/hardban.phh");
-
-      if (($bantime = Hardbans::check(($user->flags & USER_FLAG_AUTH ? $user->name : FALSE),
-                          $user->ip, $user->sess)) != -1) {
-       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-        /* MLANG: "<br>Ti sei alzato da un tavolo senza il consenso degli altri giocatori. <br><br>Dovrai aspettare ancora ".secstoword($user->bantime - $user->laccwr)." prima di poterti sedere nuovamente.", "resta in piedi.", "<br>Tu o qualcuno col tuo stesso indirizzo IP si è alzato da un tavolo senza il consenso degli altri giocatori.<br><br>Dovrai aspettare ancora ".secstoword($bantime - $user->laccwr)." prima di poterti sedere nuovamente.<br><br>Se non sei stato tu ad alzarti e possiedi un login con password, autenticandoti con quello, potrai accedere." */
-        if ($user->flags & USER_FLAG_AUTH) {
-          $user->comm[$user->step % COMM_N] .= show_notify($mlang_indwr['badwake_a'][$G_lang].secstoword($user->bantime - $user->laccwr).$mlang_indwr['badwake_b'][$G_lang], 2000, $mlang_indwr['btn_stays'][$G_lang], 400, 100);
-        }
-        else {
-          $user->comm[$user->step % COMM_N] .= show_notify($mlang_indwr['badsit_a'][$G_lang].secstoword($bantime - $user->laccwr).$mlang_indwr['badsit_a'][$G_lang], 2000, $mlang_indwr['btn_stays'][$G_lang], 400, 180);
-       }
-       $user->step_inc();
-       Room::save_data($room);
-       Room::unlock_data($sem);
-       exit;
-      }
+/*       if ($G_shutdown || $table->wakeup_time > $curtime ||  */
+/*           ($table->auth_only && (($user->flags & USER_FLAG_AUTH) == 0)) ) { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+
+/*         /\* MLANG: "<b>Il server sta per essere riavviato, non possono avere inizio nuove partite.</b>", "<b>Il tavolo a cui volevi sederti richiede autentifica.</b>", "<b>Il tavolo si &egrave; appena liberato, ci si potr&agrave; sedere tra %d secondi.</b>" *\/ */
+/*         if ($G_shutdown) { */
+/*           $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['shutmsg'][$G_lang]); */
+/*         } */
+/*         else if ($table->auth_only && (($user->flags & USER_FLAG_AUTH) == 0)) { */
+/*           $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s");', $dt, NICKSERV, $mlang_indwr['mustauth'][$G_lang]); */
+/*         } */
+/*         else { */
+/*           $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s", [2, "%s"],"%s%d%s");', $dt, NICKSERV, $mlang_indwr['tabwait_a'][$G_lang], $table->wakeup_time - $curtime, $mlang_indwr['tabwait_b'][$G_lang]); */
+/*         } */
+/*     $user->step_inc(); */
+/*     Room::save_data($room); */
+/*     Room::unlock_data($sem); */
+/*     exit; */
+/*       } */
+
+/*       /\* TODO: refact to a function *\/ */
+/*       // if ($user->bantime > $user->laccwr) { */
+/*       require_once("Obj/hardban.phh"); */
+
+/*       if (($bantime = Hardbans::check(($user->flags & USER_FLAG_AUTH ? $user->name : FALSE), */
+/*                           $user->ip, $user->sess)) != -1) { */
+/*     $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*         /\* MLANG: "<br>Ti sei alzato da un tavolo senza il consenso degli altri giocatori. <br><br>Dovrai aspettare ancora ".secstoword($user->bantime - $user->laccwr)." prima di poterti sedere nuovamente.", "resta in piedi.", "<br>Tu o qualcuno col tuo stesso indirizzo IP si è alzato da un tavolo senza il consenso degli altri giocatori.<br><br>Dovrai aspettare ancora ".secstoword($bantime - $user->laccwr)." prima di poterti sedere nuovamente.<br><br>Se non sei stato tu ad alzarti e possiedi un login con password, autenticandoti con quello, potrai accedere." *\/ */
+/*         if ($user->flags & USER_FLAG_AUTH) { */
+/*           $user->comm[$user->step % COMM_N] .= show_notify($mlang_indwr['badwake_a'][$G_lang].secstoword($user->bantime - $user->laccwr).$mlang_indwr['badwake_b'][$G_lang], 2000, $mlang_indwr['btn_stays'][$G_lang], 400, 100); */
+/*         } */
+/*         else { */
+/*           $user->comm[$user->step % COMM_N] .= show_notify($mlang_indwr['badsit_a'][$G_lang].secstoword($bantime - $user->laccwr).$mlang_indwr['badsit_a'][$G_lang], 2000, $mlang_indwr['btn_stays'][$G_lang], 400, 180); */
+/*     } */
+/*     $user->step_inc(); */
+/*     Room::save_data($room); */
+/*     Room::unlock_data($sem); */
+/*     exit; */
+/*       } */
     
-      if ($table->player_n == PLAYERS_N) {
-       log_wr("WARN:FSM: Sitdown unreachable, table full.");
-       Room::unlock_data($sem);
-       exit;
-      } 
+/*       if ($table->player_n == PLAYERS_N) { */
+/*     log_wr("WARN:FSM: Sitdown unreachable, table full."); */
+/*     Room::unlock_data($sem); */
+/*     exit; */
+/*       }  */
       
-      // set new status
-      $user->subst = "sitdown";
-      $user->table = $table_idx;
-      $user->table_pos = $table->user_add($idx);
+/*       // set new status */
+/*       $user->subst = "sitdown"; */
+/*       $user->table = $table_idx; */
+/*       $user->table_pos = $table->user_add($idx); */
       
-      log_wr("MOP before");
+/*       log_wr("MOP before"); */
 
-      if ($table->player_n == PLAYERS_N) {
-        require_once("briskin5/Obj/briskin5.phh");
-       log_wr("MOP inall");
+/*       if ($table->player_n == PLAYERS_N) { */
+/*         require_once("briskin5/Obj/briskin5.phh"); */
+/*     log_wr("MOP inall"); */
 
-       // Start game for this table.
-       log_wr("Start game!");
+/*     // Start game for this table. */
+/*     log_wr("Start game!"); */
        
-       //
-       //  START THE SPAWN HERE!!!!
-       //
-
-        // Create new spawned table
-        $bri_sem = Bin5::lock_data(TRUE, $table_idx);
-        $table_token = uniqid("");
-        $room->table[$table_idx]->table_token = $table_token;
-        $room->table[$table_idx]->table_start = $curtime;
+/*     // */
+/*     //  START THE SPAWN HERE!!!! */
+/*     // */
+
+/*         // Create new spawned table */
+/*         $bri_sem = Bin5::lock_data(TRUE, $table_idx); */
+/*         $table_token = uniqid(""); */
+/*         $room->table[$table_idx]->table_token = $table_token; */
+/*         $room->table[$table_idx]->table_start = $curtime; */
         
-        $plist = "$table_token|$user->table|$table->player_n";
-        for ($i = 0 ; $i < $table->player_n ; $i++) {
-          $plist .= '|'.$room->user[$table->player[$i]]->sess;
-        }
-        log_legal($curtime, $user, "STAT:CREATE_GAME", $plist);
-
-        log_wr("pre new Bin5");
-        if (($bri = new Bin5($room, $table_idx, $table_token)) == FALSE)
-          log_wr("bri create: FALSE");
-        else
-          log_wr("bri create: ".serialize($bri));
+/*         $plist = "$table_token|$user->table|$table->player_n"; */
+/*         for ($i = 0 ; $i < $table->player_n ; $i++) { */
+/*           $plist .= '|'.$room->user[$table->player[$i]]->sess; */
+/*         } */
+/*         log_legal($curtime, $user, "STAT:CREATE_GAME", $plist); */
+
+/*         log_wr("pre new Bin5"); */
+/*         if (($bri = new Bin5($room, $table_idx, $table_token)) == FALSE) */
+/*           log_wr("bri create: FALSE"); */
+/*         else */
+/*           log_wr("bri create: ".serialize($bri)); */
        
-        log_wr("pre init table");
-        // init table
-        $bri_table = $bri->table[0];
-        $bri_table->init($bri->user);
-        $bri_table->game_init($bri->user);
-        //
-        // Init spawned users.
-        //
-        //  MULTIGAME: here init of selected game instead of hardcabled briskin5 init (look subst status)
-        // 
-        log_wr("game_init after");
-        for ($i = 0 ; $i < $table->player_n ; $i++) {
-          $bri_user_cur = $bri->user[$i];
-          $user_cur = $room->user[$table->player[$i]];
+/*         log_wr("pre init table"); */
+/*         // init table */
+/*         $bri_table = $bri->table[0]; */
+/*         $bri_table->init($bri->user); */
+/*         $bri_table->game_init($bri->user); */
+/*         // */
+/*         // Init spawned users. */
+/*         // */
+/*         //  MULTIGAME: here init of selected game instead of hardcabled briskin5 init (look subst status) */
+/*         //  */
+/*         log_wr("game_init after"); */
+/*         for ($i = 0 ; $i < $table->player_n ; $i++) { */
+/*           $bri_user_cur = $bri->user[$i]; */
+/*           $user_cur = $room->user[$table->player[$i]]; */
           
-          $bri_user_cur->stat_set('table');
-          $bri_user_cur->subst = 'asta';
-          $bri_user_cur->laccwr = $curtime;
+/*           $bri_user_cur->stat_set('table'); */
+/*           $bri_user_cur->subst = 'asta'; */
+/*           $bri_user_cur->laccwr = $curtime; */
           
-          $bri_user_cur->trans_step = $user_cur->step + 1;
-          $bri_user_cur->comm[$bri_user_cur->step % COMM_N] = "";
-          $bri_user_cur->step_inc();
-          $bri_user_cur->comm[$bri_user_cur->step % COMM_N] = show_table(&$bri,&$bri_user_cur,$bri_user_cur->step+1,TRUE, FALSE);
-          $bri_user_cur->step_inc();
+/*           $bri_user_cur->trans_step = $user_cur->step + 1; */
+/*           $bri_user_cur->comm[$bri_user_cur->step % COMM_N] = ""; */
+/*           $bri_user_cur->step_inc(); */
+/*           $bri_user_cur->comm[$bri_user_cur->step % COMM_N] = show_table(&$bri,&$bri_user_cur,$bri_user_cur->step+1,TRUE, FALSE); */
+/*           $bri_user_cur->step_inc(); */
           
-          log_wr("TRY PRESAVE: ".$bri_user_cur->step." TRANS STEP: ".$bri_user_cur->trans_step);
+/*           log_wr("TRY PRESAVE: ".$bri_user_cur->step." TRANS STEP: ".$bri_user_cur->trans_step); */
           
-          log_wr("Pre if!");
+/*           log_wr("Pre if!"); */
           
-          //          ARRAY_POP DISABLED
-          //       // CHECK
-          while (array_pop($user_cur->comm) != NULL);
+/*           //          ARRAY_POP DISABLED */
+/*           //            // CHECK */
+/*           while (array_pop($user_cur->comm) != NULL); */
           
-          $ret = "";
-          $ret .= sprintf('gst.st_loc++; gst.st=%d; createCookie("table_idx", %d, 24*365, cookiepath); createCookie("table_token", "%s", 24*365, cookiepath); createCookie("lang", "%s", 24*365, cookiepath); hstm.stop(); window.onunload = null ; window.onbeforeunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token, $G_lang);
+/*           $ret = ""; */
+/*           $ret .= sprintf('gst.st_loc++; gst.st=%d; createCookie("table_idx", %d, 24*365, cookiepath); createCookie("table_token", "%s", 24*365, cookiepath); createCookie("lang", "%s", 24*365, cookiepath); hstm.stop(); window.onunload = null ; window.onbeforeunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token, $G_lang); */
           
-          $user_cur->comm[$user_cur->step % COMM_N] = $ret;
-          $user_cur->trans_step = $user_cur->step + 1;
-          log_wr("TRANS ATTIVATO");
+/*           $user_cur->comm[$user_cur->step % COMM_N] = $ret; */
+/*           $user_cur->trans_step = $user_cur->step + 1; */
+/*           log_wr("TRANS ATTIVATO"); */
           
-          $user_cur->stat_set('table');
-          $user_cur->subst = 'asta';
-          $user_cur->laccwr = $curtime;
-          $user_cur->step_inc();
-        }
-        log_wr("presave bri");
-        Bin5::save_data($bri);
-        Bin5::unlock_data($bri_sem);
-        log_wr("postsave bri");
-      }
-      // change room
-      $room->room_sitdown($user, $table_idx);
+/*           $user_cur->stat_set('table'); */
+/*           $user_cur->subst = 'asta'; */
+/*           $user_cur->laccwr = $curtime; */
+/*           $user_cur->step_inc(); */
+/*         } */
+/*         log_wr("presave bri"); */
+/*         Bin5::save_data($bri); */
+/*         Bin5::unlock_data($bri_sem); */
+/*         log_wr("postsave bri"); */
+/*       } */
+/*       // change room */
+/*       $room->room_sitdown($user, $table_idx); */
       
-      log_wr("MOP finish");
-    }
-    else if ($argz[0] == 'logout') {
-      $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-      $user->comm[$user->step % COMM_N] .= 'postact_logout();';
-      $user->the_end = TRUE;
-      $user->step_inc();
-    }
-  }
-  /**********************
-   *                    *
-   *   SUBST: sitdown   *
-   *                    *
-   **********************/
-  else if ($user->subst == 'sitdown') {
-    if ($argz[0] == 'wakeup') {
-      $room->room_wakeup($user);      
-    }
-    else if ($argz[0] == 'logout') {
-      $room->room_wakeup($user);      
-      $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-      $user->comm[$user->step % COMM_N] .= 'postact_logout();';
-      $user->the_end = TRUE;
-      $user->step_inc();
-    }
-  }
+/*       log_wr("MOP finish"); */
+/*     } */
+/*     else if ($argz[0] == 'logout') { */
+/*       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*       $user->comm[$user->step % COMM_N] .= 'postact_logout();'; */
+/*       $user->the_end = TRUE; */
+/*       $user->step_inc(); */
+/*     } */
+/*   } */
+/*   /\********************** */
+/*    *                    * */
+/*    *   SUBST: sitdown   * */
+/*    *                    * */
+/*    **********************\/ */
+/*   else if ($user->subst == 'sitdown') { */
+/*     if ($argz[0] == 'wakeup') { */
+/*       $room->room_wakeup($user);       */
+/*     } */
+/*     else if ($argz[0] == 'logout') { */
+/*       $room->room_wakeup($user);       */
+/*       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; */
+/*       $user->comm[$user->step % COMM_N] .= 'postact_logout();'; */
+/*       $user->the_end = TRUE; */
+/*       $user->step_inc(); */
+/*     } */
+/*   } */
+/* } */
+/* log_wr("before save data"); */
+/* Room::save_data($room); */
+/* log_wr($user->step, 'index_wr.php: after save_data()'); */
+
+/* Room::unlock_data($sem); */
+/* exit; */
+    return (FALSE);
 }
-log_wr("before save data");
-Room::save_data($room);
-log_wr($user->step, 'index_wr.php: after save_data()');
-
-Room::unlock_data($sem);
-exit;
 ?>
index 1a4dd28..f5c944e 100755 (executable)
  * not, write to the Free Software Foundation, Inc, 59 Temple Place -
  * Suite 330, Boston, MA 02111-1307, USA.
  *
+ * TODO
+ *   setcookie (for tables only)
+ *   keepalive
+ *   chunked 
+ *   index_rd.php porting
+ *   index.php auth part
+ *   generic var management from internet
  */
 
 $G_base = "../";
 
+require_once("./sac-a-push.phh");
 require_once("./brisk-spush.phh");
-require_once("../Obj/brisk.phh");
-require_once("../Obj/auth.phh");
+require_once($G_base."Obj/brisk.phh");
+require_once($G_base."Obj/auth.phh");
 // require_once("../Obj/proxyscan.phh");
-require_once("./sac-a-push.phh");
-require_once("../index.php");
+require_once($G_base."index.php");
+require_once($G_base."index_wr.php");
+require_once($G_base."index_rd_ifra.php");
+require_once($G_base."briskin5/Obj/briskin5.phh");
 
 define('SITE_PREFIX', '/brisk/');
 
@@ -119,13 +129,20 @@ function user_get_sess($user_arr, $sess)
     return FALSE;
 }
 
-function headers_get()
+function headers_render($header)
 {
+    
     $s = "";
     $s .= "HTTP/1.1 200 OK\r\n";
-    $s .= sprintf("Date: %s\r\n", date(DATE_RFC822));
-    $s .= "Connection: close\r\n";
-    $s .= "Content-Type: text/html\r\n";
+    if (!isset($header['Date']))
+        $s .= sprintf("Date: %s\r\n", date(DATE_RFC822));
+    if (!isset($header['Connection']))
+        $s .= "Connection: close\r\n";
+    if (!isset($header['Content-Type']))
+        $s .= "Content-Type: text/html\r\n";
+    foreach($header as $key => $value) {
+        $s .= sprintf("%s: %s\r\n", $key, $value);
+    }
     $s .= "Mop: was/here\r\n";
     $s .= "\r\n";
 
@@ -138,16 +155,7 @@ function headers_get()
  *  to a var and than send it with more calm
  */
 $G_headers = "";
-$G_content = "";
-
-function spu_store($s)
-{
-    GLOBAL $G_content;
 
-    $G_content .= $s;
-
-    return '';
-}
 function shutta()
 {
   log_rd2("SHUTTA [".connection_status()."] !");
@@ -162,7 +170,7 @@ $shutdown = FALSE;
 
 function main()
 {
-    GLOBAL $G_headers, $G_content;
+    GLOBAL $G_headers;
     GLOBAL $shutdown;
     $main_loop = TRUE;
 
@@ -237,8 +245,9 @@ function main()
                     $new_unix = stream_socket_accept($list);
                     $stream_info = "";
                     $method      = "";
-                    $get         = "";
-                    $post        = "";
+                    $get         = array();
+                    $post        = array();
+                    $cookie      = array();
                     if (($new_socket = ancillary_getstream($new_unix, $stream_info)) !== FALSE) {
                         printf("RECEIVED HEADER:\n%s", $stream_info);
                         $path = spu_process_info($stream_info, $method, $header, $get, $post, $cookie);
@@ -255,14 +264,54 @@ function main()
                         switch ($path) {
                         case SITE_PREFIX:
                         case SITE_PREFIX."index.php":
-                            $G_headers = "";
+                            $header_out = array();
                             ob_start();
-                            index_main($room);
+                            index_main($room, $header_out, $get, $post, $cookie);
                             $content = ob_get_flush();
 
-                            printf("OUT: [%s]\n", $G_content);
-                            fwrite($new_socket, headers_get().$content);
+                            // printf("OUT: [%s]\n", $G_content);
+                            fwrite($new_socket, headers_render($header_out).$content);
+                            fclose($new_socket);
+                            break;
+                        case SITE_PREFIX."index_wr.php":
+                            $G_headers = "";
+                            ob_start();
+                            index_wr_main($room, socket_getpeername($$new_socket), $get, $post, $cookie);
+                            $content = ob_get_flush();
+                            
+                            // printf("OUT: [%s]\n", $G_content);
+                            fwrite($new_socket, headers_render($header_out).$content);
                             fclose($new_socket);
+                            break;
+                        case SITE_PREFIX."index_rd_ifra.php":
+                            do {
+                                if (!isset($cookie['sess'])) {
+                                    fclose($new_socket);
+                                    break;
+                                }
+                                if (($user = $room->get_user($cookie['sess'], $idx)) == FALSE) {
+                                    fclose($new_socket);
+                                    break;
+                                }
+                                if (($prev = $user->rd_socket_get()) != NULL) {
+                                    unset($s2u[intval($user->rd_socket_get())]);
+                                    unset($socks[intval($user->rd_socket_get())]);
+                                    fclose($user->rd_socket_get());
+                                    $user->rd_socket_set(NULL);
+                                }
+
+                                $header_out = array();
+                                $body = "";
+                                index_rd_ifra_init($room, $user, $header_out, $body, $get, $post, $cookie);
+                                stream_set_blocking($new_socket, $blocking_mode); // Set the stream to non-blocking
+                                fwrite($new_socket, headers_render($header_out).$body);
+                                fflush($new_socket);
+
+                                $s2u[intval($new_socket)] = $idx;
+                                $socks[intval($new_socket)] = $new_socket;                                
+                                $user->rd_socket_set($new_socket);
+                            } while (FALSE);
+
                             break;
                         }
                             
@@ -319,8 +368,11 @@ function main()
                             printf("Arrivati %d bytes da stdin\n", strlen($buf));
                         }
                         else {
+                            // $user_a[$s2u[intval($sock)]]->disable();
+                            if ($room->user[$s2u[intval($sock)]]->rd_socket_get() != NULL) {
+                                $room->user[$s2u[intval($sock)]]->rd_socket_set(NULL);
+                            }
                             unset($socks[intval($sock)]);
-                            $user_a[$s2u[intval($sock)]]->disable();
                             unset($s2u[intval($sock)]);
                             fclose($sock);
                         }
@@ -353,10 +405,16 @@ function main()
 
 
 
-        if (0 == 1) { // WRITE PART EXAMPLE 
-            // sleep(3);
-            foreach ($socks as $k => $sock) {
-                fwrite($sock, sprintf("DI QUI CI PASSO [%d]\n", $user_a[$s2u[intval($sock)]]->cnt_inc()));
+        foreach ($socks as $k => $sock) {
+            if (isset($s2u[intval($sock)])) {
+                $body = "";
+                
+
+                $header_out = array();
+                $body = "";
+                index_rd_ifra_main($room, $room->user[$s2u[intval($sock)]], $body);
+                echo "SPIA: [$body]\n";
+                fwrite($sock, headers_render($header_out).$body);
                 fflush($sock);
             }
         }
index 1e9abb6..fef79ac 100644 (file)
@@ -14,7 +14,6 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook
             }
             $req = explode(" ", $header['The-Request']);
             $method = $req[0];
-            $path =   $req[1];
 
             if (isset($header['Cookie'])) {
                 $cookies = explode(";", $header['Cookie']);
@@ -29,6 +28,7 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook
             }
             // GET params management
             $get_vars = explode('?', $req[1], 2);
+            $path =   $get_vars[0];
             if (count($get_vars) > 1) {
                 $a = explode('&', $get_vars[1]);
                 printf("A COUNT: [%s] %d\n", $a[0], count($a));
@@ -63,4 +63,17 @@ function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cook
     return $path;
 }
 
+function gpcs_var($name, $get, $post, $cookie)
+{
+    if (isset($GLOBALS[$name])) 
+        return FALSE;
+    else if (isset($cookie[$name])) 
+        return ($cookie[$name]);
+    else if (isset($post[$name])) 
+        return ($post[$name]);
+    else if (isset($get[$name])) 
+        return ($get[$name]);
+
+    return FALSE;
+}
 ?>