anonymize ban reason added
[brisk.git] / web / index.php
index c11a22d..647b1bb 100644 (file)
@@ -22,6 +22,7 @@
  *
  */
 
+require_once("Obj/user.phh");
 require_once("Obj/brisk.phh");
 require_once("Obj/auth.phh");
 require_once("Obj/proxyscan.phh");
@@ -38,8 +39,20 @@ $mlang_room = array( 'userpasserr'  => array('it' => 'Utente e/o password errati
                                              'en' => 'Standing players'),
                      'headline'     => array('it' => 'briscola chiamata in salsa ajax',
                                              'en' => 'declaration briscola in ajax sauce <b>(Beta)</b>'),
-                     'welcome'      => array('it' => 'Digita il tuo nickname per accedere ai tavoli della briscola',
-                                             'en' => 'Enter your nickname to access to the tables of briscola'),
+                     'welcome'      => array('it' => 'Digita il tuo nickname per accedere ai tavoli della briscola.',
+                                             'en' => 'Enter your nickname to access to the tables of briscola.'),
+                     'reas_unkn'    => array('it' => 'Logout per motivi sconosciuti.',
+                                             'en' => 'Logout with unknown reason.'),
+                     'reas_lout'    => array('it' => 'Orevoire.',
+                                             'en' => 'EN Orevoire.'),
+                     'reas_tout'    => array('it' => 'Abbiamo perso le tue tracce, quindi ti abbiamo disconnesso.',
+                                             'en' => 'EN Abbiamo perso le tue tracce, quindi ti abbiamo disconnesso.'),
+                     'reas_ttot'    => array('it' => 'Abbiamo perso le tue tracce mentre stavi giocando, quindi ti abbiamo disconnesso.',
+                                             'en' => 'EN Abbiamo perso le tue tracce mentre stavi giocando, quindi ti abbiamo disconnesso.'),
+                     'reas_anon'    => array('it' => 'L\' accesso attraverso sistemi di anonimizzazione non è consentito.',
+                                             'en' => 'EN L\' accesso attraverso sistemi di anonimizzazione non è consentito.'),
+                     'reas_anot'    => array('it' => 'La tua sessione è stata assegnata ad un altro browser.',
+                                             'en' => 'EN La tua sessione è stata assegnata ad un altro browser.'),
                      'btn_enter'    => array('it' => 'entra',
                                              'en' => 'enter'),
                      'passwarn'     => array('it' => 'Se non hai ancora una password, lascia il campo in bianco ed entra.',
@@ -237,24 +250,71 @@ function poll_dom() {
     return '';
 }
 
-function carousel_top()
+function sidebanners_init($sidebanner_idx)
 {
-    $what = rand(1,2);
-    if ($what == 1) {
-        $rn = rand(1, 3);
-        return (sprintf('<a target="_blank" href="http://shop.alternativeoutput.it"><img class="nobo" style="display: inline; border: 1px solid #808080;" alt="il negozio virtuale di Brisk" title="il negozio virtuale di Brisk" src="img/briskshop%d.gif"></a>', $rn));
+    for ($i = 0 ; $i < count($sidebanner_idx) ; $i++) {
+        printf("     sidebanner_init(%d);\n", $i);
+    }
+}
+
+function sidebanners_render($sidebanner, $sidebanner_idx)
+{
+    $sb_n = count($sidebanner_idx);
+    if ($sb_n == 0) {
+        return;
+    }
+
+    if ($sb_n == 1) {
+        printf("<br><br>");
+    }
+
+    for ($i = 0 ; $i < $sb_n ; $i++) {
+        $idx = $sidebanner_idx[$i];
+        $sb  = $sidebanner[$idx];
+        if (!array_key_exists('link', $sb)
+            || !array_key_exists('title', $sb)
+            || !array_key_exists('icon_big', $sb)) {
+            continue;
         }
-    else {
-        return (sprintf('<a target="_blank" href="http://www.alternativeoutput.it/briskblog"><img class="nobo" alt="il nuovo blog di Brisk" title="il nuovo blog di Brisk" style="display: inline; border: 1px solid #808080;" src="img/briskblog_bannersmall.png"></a>'));
+        $sb_type = (array_key_exists('type', $sb) ? $sb['type'] : 'meeting');
+        if (array_key_exists('icon', $sb)) {
+            $sb_icon = $sb['icon'];
+        }
+        else {
+            if ($sb_type == 'meeting') {
+                if ($sb_n < 3) {
+                    $sb_icon = 'img/brisk_meeting60.gif';
+                }
+                else {
+                    $sb_icon = 'img/brisk_meeting35.gif';
+                }
+            }
+            else {
+                // no standard icon for other type of events please add them
+                continue;
+            }
+        }
+        $sb_dx =  (array_key_exists('dx', $sb) ? $sb['dx'] : 100);
+        $sb_dy =  (array_key_exists('dy', $sb) ? $sb['dy'] : -230);
+
+        printf('<div class="sidebanner" style="background: #ffd780; border: solid 1px #ffae00; width: 60px;" id="sidebanner%d">', $i);
+        printf('<a target="_blank" href="%s">', $sb['link']);
+        printf('<img style="position: static; border: solid 0px black;" src="%s"', $sb_icon);
+        printf('  onMouseOver="show_bigpict($(\'sidebanner%d\'), \'over\', %d, %d, \'\');"', $i, $sb_dx, $sb_dy);
+        printf('  onMouseOut="show_bigpict($(\'sidebanner%d\'), \'out\', 0, 0, \'\');"', $i);
+        $tit = eschtml($sb['title']);
+        printf('  alt="%s" title="%s"></a></div>', $tit, $tit);
+        printf("\n");
+        printf('<img class="nobohide" style="z-index: 255; border: 1px solid gray;" id="sidebanner%d_big" src="%s">', $i, $sb['icon_big']);
+        printf("\n");
     }
 }
 
-function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $cookie)
+function index_main(&$brisk, $transp_type, $header, &$header_out, $remote_addr_full, $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_sidebanner, $G_sidebanner_idx;
     GLOBAL $G_with_poll;
     GLOBAL $G_lang, $G_lng, $mlang_room;
     GLOBAL $BRISK_SHOWHTML, $BRISK_DEBUG, $_SERVER;
@@ -270,8 +330,10 @@ function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $coo
     if (($table_token = gpcs_var('table_idx', $get, $post, $cookie)) === FALSE)
         unset ($table_token);
 
+    $remote_addr = addrtoipv4($remote_addr_full);
+
     // Use of proxies isn't allowed.
-    if (!$G_is_local && is_proxy($addr)) {
+    if (!$G_is_local && is_proxy($remote_addr)) {
         return FALSE;
     }
 
@@ -280,51 +342,84 @@ function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $coo
   $tables = "";
   $standup = "";
   $ACTION = "login";
+  $last_msg = "";
 
   if (isset($BRISK_SHOWHTML) == FALSE) {
       $is_table = FALSE;
-      log_main("lock Room");
+      log_main("lock Brisk");
       $curtime = time();
 
       /* Actions */
-
+      if (($ghost_sess = $brisk->ghost_sess->pop($sess)) != FALSE) {
+          switch ($ghost_sess->reas) {
+          case GHOST_SESS_REAS_LOUT:
+              $last_msg = $mlang_room['reas_lout'][$G_lang];
+              break;
+          case GHOST_SESS_REAS_ANOT:
+              $last_msg = $mlang_room['reas_anot'][$G_lang];
+              break;
+          case GHOST_SESS_REAS_TOUT:
+              $last_msg = $mlang_room['reas_tout'][$G_lang];
+              break;
+          case GHOST_SESS_REAS_TTOT:
+              $last_msg = $mlang_room['reas_ttot'][$G_lang];
+              break;
+          case GHOST_SESS_REAS_ANON:
+              $last_msg = $mlang_room['reas_anon'][$G_lang];
+              break;
+          default:
+              $last_msg = $mlang_room['reas_unkn'][$G_lang];
+              break;
+          }
+      }
       if (validate_sess($sess)) {
           log_main("pre garbage_manager UNO");
-          $room->garbage_manager(TRUE);
+          $brisk->garbage_manager(TRUE);
           log_main("post garbage_manager");
-          if (($user = &$room->get_user($sess, &$idx)) != FALSE) {
-              log_main("user stat: ".$user->stat);
-              if ($user->stat == "table") {
-                  $cookies = new Cookies();
-                  $cookies->add("table_token", $user->table_token, $curtime + 31536000);
-                  $cookies->add("table_idx", $user->table, $curtime + 31536000);
-                  $header_out['cookies'] = $cookies;
-                  $header_out['Location'] = "briskin5/index.php";
-                  return TRUE;
+          if (($user = &$brisk->get_user($sess, &$idx)) != FALSE) {
+              if ($user->the_end == FALSE) {
+                  $brisk->sess_cur_set($user->sess);
+                  log_main("user stat: ".$user->stat);
+                  if ($user->stat == "table") {
+                      $cookies = new Cookies();
+                      $cookies->add("table_token", $user->table_token, $curtime + 31536000);
+                      $cookies->add("table_idx", $user->table, $curtime + 31536000);
+                      $header_out['cookies'] = $cookies;
+                      $header_out['Location'] = "briskin5/index.php";
+                      return TRUE;
+                  }
+                  $ACTION = "room";
               }
-              $ACTION = "room";
           }
       }
 
+      $banned = FALSE;
       if ($ACTION == "login" && isset($name)) {
           log_main("pre garbage_manager DUE");
 
-          if (isset($pass_private) == FALSE) {
+          if (isset($pass_private) == FALSE || $pass_private == "") {
               $pass_private = FALSE;
+
+              if ($brisk->ban_check($remote_addr)) {
+                  // TODO: find a way to add a nonblocking sleep(5) here
+                  $banned = TRUE;
+                  $idx = -1;
+              }
           }
 
-          $room->garbage_manager(TRUE);
+          $brisk->garbage_manager(TRUE);
           /* try login */
 
-          $ipv4addr = addrtoipv4($addr);
-          if (($user = $room->add_user(&$sess, &$idx, $name, $pass_private, $ipv4addr, $cookie)) != FALSE) {
+          if ($banned == FALSE &&
+              ($user = $brisk->add_user(&$sess, &$idx, $name, $pass_private, $remote_addr, $header, $cookie)) != FALSE) {
+              $brisk->sess_cur_set($user->sess);
               $ACTION = "room";
               if ($idx < 0) {
                   $idx = -$idx - 1;
                   $is_login = TRUE;
               }
 
-              log_legal($curtime, $ipv4addr, $user, "STAT:LOGIN", '');
+              log_legal($curtime, $remote_addr, $user, "STAT:LOGIN", '');
 
               // recovery lost game
               if ($user->stat == "table") {
@@ -337,7 +432,7 @@ function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $coo
               }
 
               // setcookie ("sess", "", time() + 180);      
-              $room->standup_update(&$user);
+              $brisk->standup_update(&$user);
           }
           else {
               /* Login Rendering */
@@ -382,8 +477,8 @@ function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $coo
       $tables .= '<div class="room_tab">';
       $tables .= '<table class="room_tab">';
       for ($ii = 0 ; $ii < TABLES_N ; $ii++) {
-          if ($user->flags & USER_FLAG_AUTH)
-        $i = $ii;
+          if ($user->is_auth())
+              $i = $ii;
           else
               $i = TABLES_N - $ii - 1;
 
@@ -478,9 +573,12 @@ function index_main(&$room, $transp_type, &$header_out, $addr, $get, $post, $coo
   
   
   
-  
-  
-  $brisk_donate = file_get_contents(FTOK_PATH."/brisk_donate.txt");
+  /* NOTE: Brisk donate or donate fake if local */
+  if (!$G_is_local)
+      $brisk_donate = file_get_contents(FTOK_PATH."/brisk_donate.txt");
+  else
+      $brisk_donate = '<div style="background-color: #ff0; height: 27px; margin-top: 4px;">BRISK_DONATE</div>';
+
   if ($brisk_donate == FALSE)
       $brisk_donate = "";
   
@@ -814,7 +912,7 @@ google_color_url = "000000";
           // MLANG garantisci
           .$mlang_room['tit_splash'][$G_lang].
           '</a><br>
-'.($user->flags & USER_FLAG_AUTH ? '
+'.($user->is_auth() ? '
 <a href="#" title="'
           // MLANG garantisci per un tuo conoscente
           .$mlang_room['prefs_desc'][$G_lang].'"
@@ -855,13 +953,15 @@ supported by:<br>
 '.$altout_support_big.'
 </div>
 <a style="/* position: absolute; top: 40px; left: 6px;" */ target="_blank" href="http://it-it.facebook.com/group.php?gid=59742820791"><img class="nobo" id="btn_facebook" src="img/facebook_btn.png" title="unisciti al gruppo \'quelli della brisk\'"></a>
-<br>
-<div id="proflashext" class="proflashext"><div id="proflash" class="proflash">
-</div><br><br></div>
+' . ( /* NOTE: here facebook or fake facebook */
+! $G_is_local ?
+'<div class="fb-like" style="margin-top: 4px;" data-href="https://www.facebook.com/pages/Brisk-briscola-chiamata-in-salsa-ajax/716026558416911" data-share="false" data-send="true" data-width="70" data-show-faces="false" data-colorscheme="dark" layout="button_count"></div>
+' : '<div style="margin-top: 4px; height: 20px; background-color: #00f;">FACEBOOK HERE</div>
+' ) . '<div id="proflashext" class="proflashext"><div id="proflash" class="proflash"></div></div>
+<img id="stm_stat" class="nobo" style="margin-top: 4px;" src="img/line-status_b.png">
 %s
 %s
-<br>
-<img id="stm_stat" class="nobo" src="img/line-status_b.png"></div>';
+</div>';
     
   /* Templates. */
   if ($ACTION == 'login') {
@@ -893,13 +993,15 @@ supported by:<br>
    var g_lng = "<? echo $G_lng; ?>";
    var g_tables_n = <? echo TABLES_N; ?>;
    var g_tables_auth_n = <? echo TABLES_AUTH_N; ?>;
+   var g_tables_cert_n = <? echo TABLES_CERT_N; ?>;
    var g_prefs, g_prefs_new = null;
    var g_listen;
    var g_withflash = false;
    var g_is_spawn = 0;
+   var g_nd = null;
+   var g_brow = null;
    var gst  = new globst();
    var topbanner_sfx, topbanner_dx;
-   var g_brow = null;
    var xstm = null;
    var sess = "not_connected";
    var spo_slide, sup_slide;
@@ -917,13 +1019,8 @@ supported by:<br>
 <?php
      if ($G_with_topbanner) {
        printf("     topbanner_init();\n");
-    }
-     if ($G_with_sidebanner) {
-       printf("     sidebanner_init();\n");
-    }
-     if ($G_with_sidebanner2) {
-       printf("     sidebanner2_init();\n");
-    }
+     }
+     sidebanners_init($G_sidebanner_idx);
 ?>
 
      g_withflash = DetectFlashVer(6,0,0);
@@ -937,39 +1034,46 @@ supported by:<br>
    //-->
 </SCRIPT>
 </head>
+<?php
+    if (!$G_is_local) {
+?>
 <!-- if myconsole <body onunload="deconsole();"> -->
+<body xmlns:fb="http://ogp.me/ns/fb#">
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+<?php
+    }
+    else {
+?>
 <body>
+<?php
+  }
+?>
 <?php
     printf($brisk_header_form);
     printf("<table class=\"floaty\"><tr><td class=\"floatyleft\">\n");
     printf($brisk_vertical_menu, '', '');
 
-   if ($G_with_sidebanner xor $G_with_sidebanner2) {
-     printf("<br><br>");
-   }
-
-   if ($G_with_sidebanner) {
-     printf("%s", $G_sidebanner);
-     if ($G_with_sidebanner2) {
-       printf("<br>");
-     }
-   }
-
-
-   if ($G_with_sidebanner2) {
-     printf("%s", $G_sidebanner2);
-   }
+    sidebanners_render($G_sidebanner, $G_sidebanner_idx);
    printf("</td><td>");
 ?> 
 
 <!--  =========== tables ===========  -->
-<?php 
+<?php
 
 /* MLANG: "Digita il tuo nickname per accedere ai tavoli della briscola.", "entra", "Se non hai ancora una password, lascia il campo in bianco ed entra." ,"(se usi firefox e qualcosa non funziona prova a ricaricare la pagina con Ctrl + F5)" */
 echo "$body"; ?>
 <br>
 <div style="text-align: center;">
-   <br><br><br>
+   <br>
+     <div class="bye_msg" id="bye_msg"><?php echo "$last_msg"; ?></div>
+<br>
 <?php echo $mlang_room['welcome'][$G_lang];?>
 <br><br>
 <form accept-charset="utf-8" method="post" action="" onsubmit="return j_login_manager(this);">
@@ -1034,19 +1138,21 @@ echo "$body"; ?>
    var g_lng = "<? echo $G_lng; ?>";
    var g_tables_n = <? echo TABLES_N; ?>;
    var g_tables_auth_n = <? echo TABLES_AUTH_N; ?>;
+   var g_tables_cert_n = <? echo TABLES_CERT_N; ?>;
    var g_prefs, g_prefs_new = null;
    var g_listen;
+   var g_is_spawn = 0;
+   var g_withflash = false;
+   var g_imgct = 0;
+   var g_imgtot = g_preload_img_arr.length;
+   var g_brow = null;
+   var g_nd = null;
    var tra = null;
    var stat = "";
    var subst = "";
    var gst  = new globst();
-   var g_is_spawn = 0; 
    var topbanner_sfx, topbanner_dx;
    // var nonunload = false;
-   var g_withflash = false;
-   var g_imgct = 0;
-   var g_imgtot = g_preload_img_arr.length;
-   var g_brow = null;
    var spo_slide, sup_slide;
 
    window.onload = function() {
@@ -1071,16 +1177,10 @@ else {
      if ($G_with_topbanner) {
        printf("     topbanner_init();\n");
      }
-     if ($G_with_sidebanner) {
-       printf("     sidebanner_init();\n");
-    }
-     if ($G_with_sidebanner2) {
-       printf("     sidebanner2_init();\n");
-    }
-
+     sidebanners_init($G_sidebanner_idx);
 ?>
      sess = "<?php echo "$sess"; ?>";
-xstm = new xynt_streaming(window, "<?php echo "$transp_type"; ?>", 80, 2, null /* console */, gst, 'index_php', 'sess', sess, $('sandbox'), 'index_rd_ifra.php', function(com){eval(com);});
+xstm = new xynt_streaming(window, "<?php echo "$transp_type"; ?>", 80, 2, null /* console */, gst, 'index_php', 'sess', sess, $('sandbox'), 'index_rd.php', function(com){eval(com);});
      xstm.hbit_set(heartbit);
      tra = new train($('room_tit'));
      window.onunload = onunload_cb;
@@ -1111,34 +1211,33 @@ if ($is_login) {
    //-->
 </SCRIPT>
 </head>
+<?php
+    if (!$G_is_local) {
+?>
 <!-- if myconsole <body onunload="deconsole();"> -->
+<body xmlns:fb="http://ogp.me/ns/fb#">
+<div id="fb-root"></div>
+<script>(function(d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s); js.id = id;
+  js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+<?php
+    }
+    else {
+?>
 <body>
+<?php
+  }
+?>
 <?php
    printf($brisk_header_form);
    printf("<table class=\"floaty\"><tr><td class=\"floatyleft\">\n");
-   /*   printf($brisk_vertical_menu, '<input type="button" class="button" name="xhelp"  value="Help." onclick="act_help();"><br><!-- <br><input type="button" class="button" name="xabout"  value="About." onclick="act_about();">--><br><br><br>',
-          $brisk_donate);
-   printf($brisk_vertical_menu, '<input type="button" class="button" name="xhelp"  value="Help." onclick="act_help();"><br><!-- <br><input type="button" class="button" name="xabout"  value="About." onclick="act_about();">--><br>',
-          $brisk_donate);*/
-   printf($brisk_vertical_menu, '<!-- <br><input type="button" class="button" name="xabout"  value="About." onclick="act_about();">--><br>',
-          $brisk_donate);
-
-
-   if ($G_with_sidebanner xor $G_with_sidebanner2) {
-     printf("<br><br>");
-   }
+   printf($brisk_vertical_menu, '', $brisk_donate);
 
-   if ($G_with_sidebanner) {
-     printf("%s", $G_sidebanner);
-     if ($G_with_sidebanner2) {
-       printf("<br>");
-     }
-   }
-
-
-   if ($G_with_sidebanner2) {
-     printf("%s", $G_sidebanner2);
-   }
+   sidebanners_render($G_sidebanner, $G_sidebanner_idx);
 
    printf("</td><td>");
 ?>