webstart_hilite added, var for multiple topbanner big banner added
[brisk.git] / web / index_wr.php
index ea364cd..56fd416 100644 (file)
@@ -2,7 +2,10 @@
 /*
  *  brisk - index_wr.php
  *
- *  Copyright (C) 2006 matteo.nastasi@milug.org
+ *  Copyright (C) 2006-2008 Matteo Nastasi
+ *                          mailto: nastasi@alternativeoutput.it 
+ *                                  matteo.nastasi@milug.org
+ *                          web: http://www.alternativeoutput.it
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  */
 
 require_once("Obj/brisk.phh");
+// require_once("Obj/proxyscan.phh");
 require_once("briskin5/Obj/briskin5.phh");
 
+// Use of proxies isn't allowed.
+// if (is_proxy()) {
+//   sleep(5);
+//   exit;
+// }
+log_load("index_wr.php");
+
 if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
   echo "Debugging time!";
   exit;
 }
 
-log_load("index_wr.php");
-
 /*
  *  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('COMM: '.$mesg);
@@ -46,9 +62,25 @@ if (($room = &Room::load_data()) == FALSE) {
   exit;
 }
 if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
-  echo "Get User Error";
-  log_wr("Get User Error");
   Room::unlock_data($sem);
+  $argz = explode('|', $mesg);
+
+  if ($argz[0] == 'help') {
+    echo show_notify(str_replace("\n", " ", $G_room_help), 0, "torna ai tavoli", 600, 500);
+  }
+  else if ($argz[0] == 'about') {
+    echo show_notify(str_replace("\n", " ", $G_room_about), 0, "torna ai tavoli", 400, 200);
+  }
+  else if ($argz[0] == 'roadmap') {
+    echo show_notify(str_replace("\n", " ", $G_room_roadmap), 0, "torna ai tavoli", 400, 200);
+  }
+  else if ($argz[0] == 'whysupport') {
+    echo show_notify(str_replace("\n", " ", $G_room_whysupport), 0, "torna ai tavoli", 400, 200);
+  }
+  else { 
+    log_wr("Get User Error");
+    echo "Get User Error";
+  }
   exit;
 }
 $argz = explode('|', $mesg);
@@ -57,12 +89,9 @@ log_wr('POSTSPLIT: '.$argz[0]);
 
 if ($argz[0] == 'shutdown') {
   log_auth($user->sess, "Shutdown session.");
-  $tmp_sess = $user->sess;
-  $user->sess = "";
-  step_unproxy($tmp_sess);
-  $user->name = "";
-  $user->the_end = FALSE;
-  
+
+  $user->reset();
+
   log_rd2("AUTO LOGOUT.");
   if ($user->subst == 'sitdown' || $user->stat == 'table')
     $room->room_wakeup(&$user);
@@ -94,6 +123,22 @@ else if ($user->stat == 'room') {
     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), 0, "torna ai tavoli", 400, 200);
+
+    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), 0, "torna ai tavoli", 400, 200);
+
+    log_wr($user->comm[$user->step % COMM_N]);
+    $user->step_inc();
+    
   }
   else if ($argz[0] == 'chatt') {
     $room->chatt_send(&$user,$mesg);
@@ -113,6 +158,28 @@ else if ($user->stat == 'room') {
        Room::unlock_data($sem);
        exit;
       }
+
+      // Take parameters
+      $table_idx = $argz[1];
+      $table = &$room->table[$table_idx];
+    
+      $curtime = time();
+
+      if ($G_shutdown || $table->wakeup_time > $curtime) {
+       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+
+       $dt = date("H:i ", $curtime);
+        if ($G_shutdown)
+          $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s","<b>Il server sta per essere riavviato, non possono avere inizio nuove partite.</b>");', $dt.NICKSERV);
+        else
+          $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s","<b>Il tavolo si &egrave; appena liberato, ci si potr&agrave; sedere tra %d secondi.</b>");', $dt.NICKSERV, $table->wakeup_time - $curtime);
+
+       $user->step_inc();
+       Room::save_data($room);
+       Room::unlock_data($sem);
+       exit;
+      }
+
       /* TODO: refact to a function */
       if ($user->bantime > $user->laccwr) {
        $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
@@ -124,10 +191,6 @@ else if ($user->stat == 'room') {
        exit;
       }
     
-      // Take parameters
-      $table_idx = $argz[1];
-      $table = &$room->table[$table_idx];
-    
       if ($table->player_n == PLAYERS_N) {
        log_wr("WARN:FSM: Sitdown unreachable, table full.");
        Room::unlock_data($sem);
@@ -151,98 +214,72 @@ else if ($user->stat == 'room') {
        //  START THE SPAWN HERE!!!!
        //
 
-       if (TRUE) { // WITH SPAWN
-         $curtime = time();
-         // Create new spawned table
-         $bri_sem = Briskin5::lock_data($table_idx);
-         $table_token = uniqid("");
-         $room->table[$table_idx]->table_token = $table_token;
-         $room->table[$table_idx]->table_start = $curtime;
-         
-         if (($bri =& new Briskin5(&$room, $table_idx, $table_token)) == FALSE)
-           log_wr("bri create: FALSE");
-         else
-           log_wr("bri create: ".serialize($bri));
-       
-         // init table
-         $bri_table =& $bri->table[0];
-         $bri_table->init(&$bri->user);
-         $bri_table->game_init(&$bri->user);
-         //
-         // Init spawned users.
-         //
-         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->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("Pre if!");
-           
-//          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); the_end=true; window.onunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token);
-           
-           $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");
-         Briskin5::save_data($bri);
-         Briskin5::unlock_data($bri_sem);
-         log_wr("postsave bri");
-       }
-       else { // BEFORE SPAWN
-         // init table
-         $table->init(&$room->user);
-         $table->game_init(&$room->user);
-         $curtime = time();
-         
-         // init users
-         for ($i = 0 ; $i < $table->player_n ; $i++) {
-           $user_cur = &$room->user[$table->player[$i]];
-           log_wr("Pre if!");
-           
-           $ret = "";
-           $ret .= sprintf('gst.st_loc++; gst.st=%d; the_end=true; window.onunload = null ; document.location.assign("table.php");|', $user_cur->step+1);
-           
-           $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();
-           
-           $user_cur->comm[$user_cur->step % COMM_N] = show_table(&$room,&$user_cur,$user_cur->step+1,TRUE, FALSE);
-           $user_cur->step_inc();
-         }
-       } // end else {  BEFORE SPAWN
-       
-       log_wr("MOP after");
+        $curtime = time();
+
+        // Create new spawned table
+        $bri_sem = Briskin5::lock_data($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->sess, $user->name, "STAT:CREATE_GAME", $plist);
 
+        if (($bri =& new Briskin5(&$room, $table_idx, $table_token)) == FALSE)
+          log_wr("bri create: FALSE");
+        else
+          log_wr("bri create: ".serialize($bri));
+       
+        // init table
+        $bri_table =& $bri->table[0];
+        $bri_table->init(&$bri->user);
+        $bri_table->game_init(&$bri->user);
+        //
+        // Init spawned users.
+        //
+        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->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("Pre if!");
+          
+          //          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); the_end=true; window.onunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token);
+          
+          $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");
+        Briskin5::save_data($bri);
+        Briskin5::unlock_data($bri_sem);
+        log_wr("postsave bri");
       }
       // change room
       $room->room_sitdown(&$user, $table_idx);
@@ -253,7 +290,7 @@ else if ($user->stat == 'room') {
     }
     else if ($argz[0] == 'logout') {
       $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
-      $user->comm[$user->step % COMM_N] .= sprintf('postact_logout();');
+      $user->comm[$user->step % COMM_N] .= 'postact_logout();';
       $user->the_end = TRUE;
       $user->step_inc();
     }
@@ -270,7 +307,7 @@ else if ($user->stat == 'room') {
     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] .= sprintf('postact_logout();');
+      $user->comm[$user->step % COMM_N] .= 'postact_logout();';
       $user->the_end = TRUE;
       $user->step_inc();
     }