first page from index.php with sac-a-push technology (no authentication part)
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.com>
Thu, 12 Jul 2012 07:35:42 +0000 (09:35 +0200)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.com>
Thu, 12 Jul 2012 07:35:42 +0000 (09:35 +0200)
web/index.php
web/spush/brisk-spush.phh
web/spush/brisk-spush.php
web/spush/sac-a-push.phh

index 43def6d..45b5b57 100644 (file)
  * not, write to the Free Software Foundation, Inc, 59 Temple Place -
  * Suite 330, Boston, MA 02111-1307, USA.
  *
- */
 
-$G_base = "";
+
+TODO:
+  - header
+  - setcookie
+  - gestire per intero la var globale di output
+*/
 
 require_once("Obj/brisk.phh");
 require_once("Obj/auth.phh");
@@ -175,9 +179,7 @@ $mlang_room = array( 'userpasserr'  => array('it' => 'Utente e/o password errati
                                              'en' => 'Close.')
                      );
 
-// Use of proxies isn't allowed.
-if (!$G_is_local && is_proxy()) 
-   exit;
+
 
 require_once("briskin5/Obj/briskin5.phh");
 if (DEBUGGING == "local" && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
@@ -218,7 +220,7 @@ 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 main()
+function index_main(&$room)
 {
   GLOBAL $G_with_donors, $G_donors_cur, $G_donors_all;
   GLOBAL $G_with_topbanner, $G_topbanner, $G_is_local;
@@ -227,6 +229,12 @@ function main()
   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;
+  }
+
   $is_login = FALSE;
   $body = "";
   $tables = "";
@@ -235,12 +243,7 @@ function main()
   
   if (isset($BRISK_SHOWHTML) == FALSE) {
       $is_table = FALSE;
-      $sem = Room::lock_data(TRUE);
       log_main("lock Room");
-      if (($room = Room::load_data()) == FALSE) {
-          log_crit("load_data failed");
-          exit();
-      }
       $curtime = time();
       
       /* Actions */
@@ -252,24 +255,14 @@ function main()
           if (($user = &$room->get_user($sess, &$idx)) != FALSE) {
               log_main("user stat: ".$user->stat);
               if ($user->stat == "table") {
-                  if (Room::save_data(&$room) == FALSE) {
-                      echo "ERRORE SALVATAGGIO\n";
-                      exit;
-                  }
-                  log_main("unlock Room");
-                  Room::unlock_data($sem);
                   setcookie("table_token", $user->table_token, $curtime + 31536000);
                   setcookie("table_idx", $user->table, $curtime + 31536000);
                   header ("Location: briskin5/index.php");
-                  exit;
+                  return TRUE;
               }
               $ACTION = "room";
           }
           
-          if (Room::save_data(&$room) == FALSE) {
-              echo "ERRORE SALVATAGGIO\n";
-              exit;
-          }
       }
       
       if ($ACTION == "login" && isset($name)) {
@@ -293,26 +286,16 @@ function main()
               
               // recovery lost game
               if ($user->stat == "table") {
-                  if (Room::save_data(&$room) == FALSE) {
-                      echo "ERRORE SALVATAGGIO\n";
-                      exit;
-                  }
-                  log_main("unlock Room");
-                  Room::unlock_data($sem);
                   setcookie("table_token", $user->table_token, $curtime + 31536000);
                   setcookie("table_idx", $user->table, $curtime + 31536000);
                   header ("Location: briskin5/index.php");
-                  exit;
+                  return TRUE;
               }
               
               
               // setcookie ("sess", "", time() + 180);      
               $room->standup_update(&$user);
               
-              if (Room::save_data($room) == FALSE) {
-                  echo "ERRORE SALVATAGGIO\n";
-                  exit;
-              }
           }
           else {
               /* Login Rendering */
@@ -343,7 +326,6 @@ function main()
               $body .= '<div class="urgmsg"><b>'.$mlang_room['userpass'.$sfx][$G_lang].'</b></div>';
           }
       }
-      Room::unlock_data($sem);
   }
   /* Rendering. */
 
@@ -353,7 +335,7 @@ function main()
   else if ($BRISK_SHOWHTML == "debuglogin") {
       $ACTION = "login";
   }
-  
+
   if ($ACTION == "room") {
       $tables .= '<div class="room_tab">';
       $tables .= '<table class="room_tab">';
@@ -1213,6 +1195,4 @@ type="submit" class="button" onclick="this.form.elements['realsub'].value = 'chi
    }
 }
 
-main();
-
 ?>
index 0038038..bc11cca 100644 (file)
@@ -24,4 +24,4 @@
 
 $DOCUMENT_ROOT="";
 $HTTP_HOST="dodo.birds.lan";
-?>
\ No newline at end of file
+?>
index ca8de1f..1a4dd28 100755 (executable)
@@ -27,8 +27,10 @@ $G_base = "../";
 
 require_once("./brisk-spush.phh");
 require_once("../Obj/brisk.phh");
+require_once("../Obj/auth.phh");
 // require_once("../Obj/proxyscan.phh");
 require_once("./sac-a-push.phh");
+require_once("../index.php");
 
 define('SITE_PREFIX', '/brisk/');
 
@@ -117,13 +119,41 @@ function user_get_sess($user_arr, $sess)
     return FALSE;
 }
 
+function headers_get()
+{
+    $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";
+    $s .= "Mop: was/here\r\n";
+    $s .= "\r\n";
+
+    return ($s);
+}
+
+
+/*
+ *  Caching system using ob php system to cache old style pages
+ *  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()."] !");
 }
 
-register_shutdown_function(shutta);
+register_shutdown_function('shutta');
 
 /*
  *  MAIN
@@ -132,38 +162,34 @@ $shutdown = FALSE;
 
 function main()
 {
-    GLOBAL $G_lang, $mlang_indrd, $is_page_streaming;
-    // GLOBAL $first_loop;
-    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;
-    
-    GLOBAL $S_load_stat;
+    GLOBAL $G_headers, $G_content;
+    GLOBAL $shutdown;
+    $main_loop = TRUE;
 
+    /*
+     *  INIT
+     */
 
+    $FILE_SOCKET = "/tmp/brisk.sock";
+    $UNIX_SOCKET = "unix://$FILE_SOCKET";
+    $debug = 0;
+    $fixed_fd = 2;
+    $socks = array();
 
-    GLOBAL $shutdown;
-    $main_loop = TRUE;
+    $blocking_mode = 0; // 0 for non-blocking
 
-    $user_a = array();
-    $s2u  = array();
-    for ($i = 0 ; $i < 10 ; $i++) {
-        $user_a[$i] = new SPUser($i, 0, NULL);
+    if (($room = Room::create()) == FALSE) {
+        log_crit("load_data failed");
+        return FALSE;
     }
 
+    $s2u  = array();
+
     $rndstr = "";
     for ($i = 0 ; $i < 4096 ; $i++) {
         $rndstr .= chr(mt_rand(65, 90));
     }
 
-    $FILE_SOCKET = "/tmp/test001.sock";
-    $UNIX_SOCKET = "unix://$FILE_SOCKET";
-    $debug = 0;
-    $fixed_fd = 2;
-
-    $blocking_mode = 0; // 0 for non-blocking
-
     if (file_exists($FILE_SOCKET)) {
         unlink($FILE_SOCKET);
     }
@@ -174,8 +200,6 @@ function main()
     }
     umask($old_umask);
 
-    $socks = array();
-
     if (($in = fopen("php://stdin", "r")) === FALSE) {
         exit(11);
     }
@@ -212,45 +236,70 @@ function main()
                     printf("NUOVA CONNEX\n");
                     $new_unix = stream_socket_accept($list);
                     $stream_info = "";
+                    $method      = "";
+                    $get         = "";
+                    $post        = "";
                     if (($new_socket = ancillary_getstream($new_unix, $stream_info)) !== FALSE) {
                         printf("RECEIVED HEADER:\n%s", $stream_info);
-                        $m = spu_process_info($stream_info, $header, $get, $post);
-                        printf("M: %s\nHEADER:\n", $m);
+                        $path = spu_process_info($stream_info, $method, $header, $get, $post, $cookie);
+                        printf("PATH: [%s]\n", $path);
+                        printf("M: %s\nHEADER:\n", $method);
                         print_r($header);
                         printf("GET:\n");
                         print_r($get);
                         printf("POST:\n");
                         print_r($post);
-
-                        /* TODO: here stuff to decide if it is old or new user */
-                        if (($user_cur = user_get_sess($user_a, $get['sess'])) != FALSE) {
-                            /* close the previous socket */
-                            unset($s2u[intval($user_cur->sock_get())]);
-                            unset($socks[intval($user_cur->sock_get())]);
-                            fclose($user_cur->sock_get());
-                            /* assign the new socket */
-                            $user_cur->sock_set($new_socket);
-                            $id = $user_cur->id_get();
-                            $s2u[intval($new_socket)] = $id;
-                            $socks[intval($new_socket)] = $new_socket;
-                            fwrite($new_socket, $rndstr);
-                            fflush($new_socket);
+                        printf("COOKIE:\n");
+                        print_r($cookie);
+
+                        switch ($path) {
+                        case SITE_PREFIX:
+                        case SITE_PREFIX."index.php":
+                            $G_headers = "";
+                            ob_start();
+                            index_main($room);
+                            $content = ob_get_flush();
+
+                            printf("OUT: [%s]\n", $G_content);
+                            fwrite($new_socket, headers_get().$content);
+                            fclose($new_socket);
+                            break;
                         }
-                        else if (($user_cur = user_get_free($user_a)) != FALSE) {
-                            stream_set_blocking($new_socket, $blocking_mode); // Set the stream to non-blocking
-                            $socks[intval($new_socket)] = $new_socket;
                             
-                            $id = $user_cur->id_get();
-                            $user_a[$id]->enable($new_socket, $get['sess']);
-                            printf("s2u: ci passo %d\n", intval($new_socket));
-                            $s2u[intval($new_socket)] = $id;
-                            
-                            fwrite($new_socket, $rndstr);
-                            fflush($new_socket);
-                        }
-                        else {
-                            printf("Too many opened users\n");
-                            fclose($new_socket);
+
+
+
+                        if (0 == 1) {
+                            /* TODO: here stuff to decide if it is old or new user */
+                            if (($user_cur = user_get_sess($user_a, $get['sess'])) != FALSE) {
+                                /* close the previous socket */
+                                unset($s2u[intval($user_cur->sock_get())]);
+                                unset($socks[intval($user_cur->sock_get())]);
+                                fclose($user_cur->sock_get());
+                                /* assign the new socket */
+                                $user_cur->sock_set($new_socket);
+                                $id = $user_cur->id_get();
+                                $s2u[intval($new_socket)] = $id;
+                                $socks[intval($new_socket)] = $new_socket;
+                                fwrite($new_socket, $rndstr);
+                                fflush($new_socket);
+                            }
+                            else if (($user_cur = user_get_free($user_a)) != FALSE) {
+                                stream_set_blocking($new_socket, $blocking_mode); // Set the stream to non-blocking
+                                $socks[intval($new_socket)] = $new_socket;
+
+                                $id = $user_cur->id_get();
+                                $user_a[$id]->enable($new_socket, $get['sess']);
+                                printf("s2u: ci passo %d\n", intval($new_socket));
+                                $s2u[intval($new_socket)] = $id;
+
+                                fwrite($new_socket, $rndstr);
+                                fflush($new_socket);
+                            }
+                            else {
+                                printf("Too many opened users\n");
+                                fclose($new_socket);
+                            }
                         }
                     }
                     else {
@@ -317,4 +366,4 @@ function main()
 }
 
 main();
-?>
\ No newline at end of file
+?>
index 8dfea84..1e9abb6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-function spu_process_info($stream_info, &$header, &$get, &$post)
+function spu_process_info($stream_info, $method, &$header, &$get, &$post, &$cookie)
 {
     $check_post = FALSE;
     $header = array();
@@ -14,6 +14,19 @@ function spu_process_info($stream_info, &$header, &$get, &$post)
             }
             $req = explode(" ", $header['The-Request']);
             $method = $req[0];
+            $path =   $req[1];
+
+            if (isset($header['Cookie'])) {
+                $cookies = explode(";", $header['Cookie']);
+                for ($i = 0 ; $i < count($cookies) ; $i++) {
+                    $nameval = explode("=", trim($cookies[$i]));
+                    if (count($nameval) != 2) {
+                        printf("WARNING: malformat cookie element [%s]\n", $cookies[$i]);
+                        continue;
+                    }
+                    $cookie[$nameval[0]] = urldecode($nameval[1]);
+                }
+            }
             // GET params management
             $get_vars = explode('?', $req[1], 2);
             if (count($get_vars) > 1) {
@@ -47,7 +60,7 @@ function spu_process_info($stream_info, &$header, &$get, &$post)
         $split = explode(":", $line, 2);
         $header[$split[0]] = $split[1];        
     }
-    return $method;
+    return $path;
 }
 
-?>
\ No newline at end of file
+?>