return bug fixed, sidebanner, bg updated
[brisk.git] / web / index_wr.php
index 1bcd462..80c7edd 100644 (file)
@@ -2,7 +2,7 @@
 /*
  *  brisk - index_wr.php
  *
- *  Copyright (C) 2006-2008 Matteo Nastasi
+ *  Copyright (C) 2006-2009 Matteo Nastasi
  *                          mailto: nastasi@alternativeoutput.it 
  *                                  matteo.nastasi@milug.org
  *                          web: http://www.alternativeoutput.it
@@ -27,7 +27,6 @@
 require_once("Obj/brisk.phh");
 require_once("Obj/auth.phh");
 // require_once("Obj/proxyscan.phh");
-require_once("briskin5/Obj/briskin5.phh");
 
 // Use of proxies isn't allowed.
 // if (is_proxy()) {
@@ -53,7 +52,7 @@ if (array_search($_SERVER['REMOTE_ADDR'], $G_black_list) !== FALSE) {
 
 $is_spawn = FALSE;
 
-log_wr('COMM: '.$mesg);
+log_wr('COMM: '.xcapemesg($mesg));
 
 $sem = Room::lock_data();
 if (($room = &Room::load_data()) == FALSE) {
@@ -64,9 +63,10 @@ if (($room = &Room::load_data()) == FALSE) {
 }
 if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
   Room::unlock_data($sem);
-  $argz = explode('|', $mesg);
+  $argz = explode('|', xcapemesg($mesg));
 
   if ($argz[0] == 'getchallenge') {
+    GLOBAL $cli_name;
     if (($a_sem = Challenges::lock_data()) != FALSE) { 
       log_main("chal lock data success");
       
@@ -77,7 +77,7 @@ if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
         // echo '2|'.$argz[1].'|'.$token.'|'.$_SERVER['REMOTE_ADDR'].'|'.$curtime.'|';
         // exit;
 
-        if (($login_new = validate_name($argz[1])) != FALSE) {
+        if (($login_new = validate_name(urldecode($cli_name))) != FALSE) {
           if ($chals->add($login_new, $token, $_SERVER['REMOTE_ADDR'], $curtime) != FALSE) {
             echo '0|'.$token;
           }
@@ -101,6 +101,7 @@ if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
     printf("challenge|ok");
   }
   else if ($argz[0] == 'help') {
+    /* MLANG: "torna ai tavoli" */ 
     echo show_notify(str_replace("\n", " ", $G_room_help), 0, "torna ai tavoli", 600, 500);
   }
   else if ($argz[0] == 'about') {
@@ -118,7 +119,7 @@ if (($user = &$room->get_user($sess, &$idx)) == FALSE) {
   }
   exit;
 }
-$argz = explode('|', $mesg);
+$argz = explode('|', xcapemesg($mesg));
 
 log_wr('POSTSPLIT: '.$argz[0]);
 
@@ -132,9 +133,93 @@ if ($argz[0] == 'shutdown') {
     $room->room_wakeup(&$user);
   else if ($user->subst == 'standup')
     $room->room_outstandup(&$user);
-  else
+  else {
     log_rd2("SHUTDOWN FROM WHAT ???");
+  }
+}
+else if ($argz[0] == 'warranty') {
+  GLOBAL $cli_name, $cli_email;
+
+  $curtime = time();
+  $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()) != 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, $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("<br>Il nominativo &egrave; stato inoltrato all\'amministratore.<br><br>Nell\'arco di pochi giorni vi verr&agrave;<br><br>notificata l\'avvenuta registrazione.", 0, "chiudi", 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"],"<b>E\' occorso un errore durante il salvataggio, riprova o contatta l\'amministratore.</b>");', $dt, NICKSERV);
+    }
+    
+  }
+  else {
+    /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
+    $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>");', $dt, NICKSERV);
+  }
+
+  if ($mesg_to_user != "") {
+    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+    
+    $dt = date("H:i ", $curtime);
+    $user->comm[$user->step % COMM_N] .= $mesg_to_user;
+    $user->step_inc();
+  }
+}
+else if ($argz[0] == 'mesgtoadm') {
+  GLOBAL $cli_subj, $cli_mesg;
+
+  $curtime = time();
+  $mesg_to_user = "";
+
+  log_wr("INFO:SKIP:argz == mesgtoadm name: [".$cli_name."] AUTH: ".($user->flags & USER_FLAG_AUTH));
+  if ($user->flags & USER_FLAG_AUTH) {
+    if (($wa_lock = Warrant::lock_data()) != FALSE) {
+      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("<br><br>Il messaggio &egrave; stato inoltrato all\'amministratore.", 0, "chiudi", 400, 110);
+      $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"],"<b>E\' occorso un errore durante il salvataggio, riprova o contatta per mail l\'amministratore.</b>");', $dt, NICKSERV);
+    }
+    
+  }
+  else {
+    /* MLANG: "<b>Per autenticare qualcuno devi a tua volta essere autenticato.</b>" */
+    $mesg_to_user = sprintf('chatt_sub("%s", [2, "%s"],"<b>Per mandare messaggi all\'amministratore devi essere autenticato.</b>");', $dt, NICKSERV);
+  }
+
+  if ($mesg_to_user != "") {
+    $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
+    
+    $dt = date("H:i ", $curtime);
+    $user->comm[$user->step % COMM_N] .= $mesg_to_user;
+    $user->step_inc();
+  }
 }
+
+
 /******************
  *                *
  *   STAT: room   *
@@ -176,7 +261,7 @@ else if ($user->stat == 'room') {
     
   }
   else if ($argz[0] == 'chatt') {
-    $room->chatt_send(&$user,$mesg);
+    $room->chatt_send(&$user, xcapemesg($mesg));
   }
   /**********************
    *                    *
@@ -205,6 +290,7 @@ else if ($user->stat == 'room') {
        $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; ";
 
        $dt = date("H:i ", $curtime);
+        /* 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"],"<b>Il server sta per essere riavviato, non possono avere inizio nuove partite.</b>");', $dt, NICKSERV);
         }
@@ -221,10 +307,19 @@ else if ($user->stat == 'room') {
       }
 
       /* TODO: refact to a function */
-      if ($user->bantime > $user->laccwr) {
+      // 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)."; ";
-       $user->comm[$user->step % COMM_N] .= show_notify("<br>Ti sei alzato da un tavolo senza il consenso degli altri giocatori. Dovrai aspettare ancora ".secstoword($user->bantime - $user->laccwr)." prima di poterti sedere nuovamente.", 2000, "resta in piedi.", 400, 100);
-       
+        /* 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("<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.", 2000, "resta in piedi.", 400, 100);
+        }
+        else {
+          $user->comm[$user->step % COMM_N] .= show_notify("<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.", 2000, "resta in piedi.", 400, 180);
+       }
        $user->step_inc();
        Room::save_data($room);
        Room::unlock_data($sem);
@@ -245,6 +340,7 @@ else if ($user->stat == 'room') {
       log_wr("MOP before");
 
       if ($table->player_n == PLAYERS_N) {
+        require_once("briskin5/Obj/briskin5.phh");
        log_wr("MOP inall");
 
        // Start game for this table.
@@ -266,7 +362,7 @@ else if ($user->stat == 'room') {
         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);
+        log_legal($curtime, $user, "STAT:CREATE_GAME", $plist);
 
         if (($bri =& new Briskin5(&$room, $table_idx, $table_token)) == FALSE)
           log_wr("bri create: FALSE");
@@ -280,6 +376,10 @@ else if ($user->stat == 'room') {
         //
         // Init spawned users.
         //
+        require_once('briskin5/Obj/briskin5.phh');
+        //
+        //  MULTIGAME: here init of selected game instead of hardcabled briskin5 init (look subst status)
+        // 
         for ($i = 0 ; $i < $table->player_n ; $i++) {
           $bri_user_cur = &$bri->user[$i];
           $user_cur = &$room->user[$table->player[$i]];
@@ -304,7 +404,7 @@ else if ($user->stat == 'room') {
           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 ; window.onbeforeunload = null ; document.location.assign("briskin5/index.php");|', $user_cur->step+1, $table_idx, $table_token);
+          $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); the_end=true; 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;