From 5eeadcbd74dbf5a562a0e9cfa624455395cf345f Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Thu, 12 Jul 2012 09:35:42 +0200 Subject: [PATCH] first page from index.php with sac-a-push technology (no authentication part) --- web/index.php | 54 ++++--------- web/spush/brisk-spush.phh | 2 +- web/spush/brisk-spush.php | 159 +++++++++++++++++++++++++------------- web/spush/sac-a-push.phh | 19 ++++- 4 files changed, 138 insertions(+), 96 deletions(-) diff --git a/web/index.php b/web/index.php index 43def6d..45b5b57 100644 --- a/web/index.php +++ b/web/index.php @@ -20,9 +20,13 @@ * 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('', $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 .= '
'.$mlang_room['userpass'.$sfx][$G_lang].'
'; } } - Room::unlock_data($sem); } /* Rendering. */ @@ -353,7 +335,7 @@ function main() else if ($BRISK_SHOWHTML == "debuglogin") { $ACTION = "login"; } - + if ($ACTION == "room") { $tables .= '
'; $tables .= ''; @@ -1213,6 +1195,4 @@ type="submit" class="button" onclick="this.form.elements['realsub'].value = 'chi } } -main(); - ?> diff --git a/web/spush/brisk-spush.phh b/web/spush/brisk-spush.phh index 0038038..bc11cca 100644 --- a/web/spush/brisk-spush.phh +++ b/web/spush/brisk-spush.phh @@ -24,4 +24,4 @@ $DOCUMENT_ROOT=""; $HTTP_HOST="dodo.birds.lan"; -?> \ No newline at end of file +?> diff --git a/web/spush/brisk-spush.php b/web/spush/brisk-spush.php index ca8de1f..1a4dd28 100755 --- a/web/spush/brisk-spush.php +++ b/web/spush/brisk-spush.php @@ -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 +?> diff --git a/web/spush/sac-a-push.phh b/web/spush/sac-a-push.phh index 8dfea84..1e9abb6 100644 --- a/web/spush/sac-a-push.phh +++ b/web/spush/sac-a-push.phh @@ -1,6 +1,6 @@ 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 +?> -- 2.17.1