From 8b0992347fdfdb40715268bb07481d35fc5191fb Mon Sep 17 00:00:00 2001 From: Matteo Nastasi Date: Sun, 29 Mar 2020 15:53:00 +0200 Subject: [PATCH] wr on ws working properly on room (WIP for target detection, table _wr, return value to be sent) --- web/Obj/brisk.phh | 8 ++++ web/Obj/sac-a-push.phh | 79 +++++++++++++++++++++++++---------- web/Obj/transports.phh | 21 ++++++++-- web/briskin5/Obj/briskin5.phh | 3 +- web/commons.js | 67 ++++++++++++++++------------- 5 files changed, 123 insertions(+), 55 deletions(-) diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 68e0418..96bc7f9 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -2451,6 +2451,14 @@ class Brisk } else { $login_exists = $bdb->login_exists(strtolower($name_new)); +/* +TO ENABLE USER-LOGIN ONLY +- $login_exists = $bdb->login_exists(strtolower($name_new)); ++ // $login_exists = $bdb->login_exists(strtolower($name_new)); ++ // Force access with login and password ++ $idx = -3; ++ return (FALSE); +*/ } } else { diff --git a/web/Obj/sac-a-push.phh b/web/Obj/sac-a-push.phh index 6efc241..10f4f70 100644 --- a/web/Obj/sac-a-push.phh +++ b/web/Obj/sac-a-push.phh @@ -3,7 +3,7 @@ * brisk - Obj/sac-a-push.phh * * Copyright (C) 2012-2014 Matteo Nastasi - * mailto: nastasi@alternativeoutput.it + * mailto: nastasi@alternativeoutput.it * matteo.nastasi@milug.org * web: http://www.alternativeoutput.it * @@ -190,7 +190,7 @@ function spu_process_info($stream_info, &$method, &$header, &$get, &$post, &$coo // if (content-type is wrong || content-length isn't set) // return false - if ($header['Content-Type'] != 'application/x-www-form-urlencoded' + if ($header['Content-Type'] != 'application/x-www-form-urlencoded' || !isset($header['Content-Length'])) { return FALSE; } @@ -220,13 +220,13 @@ function spu_process_info($stream_info, &$method, &$header, &$get, &$post, &$coo function gpcs_var($name, $get, $post, $cookie) { - if (isset($GLOBALS[$name])) + if (isset($GLOBALS[$name])) return FALSE; - else if (isset($cookie[$name])) + else if (isset($cookie[$name])) return ($cookie[$name]); - else if (isset($post[$name])) + else if (isset($post[$name])) return ($post[$name]); - else if (isset($get[$name])) + else if (isset($get[$name])) return ($get[$name]); return FALSE; @@ -423,7 +423,7 @@ class Sac_a_push { static $cnt_slave = NULL; var $provider_proxy; // list of provider/browser that offer proxy service - + var $file_socket; var $unix_socket; var $direct_socket; // socket where read direct commands @@ -466,7 +466,7 @@ class Sac_a_push { exit(1); } break; - case SIGHUP: + case SIGHUP: if (static::$cnt_master != NULL) { fwrite(static::$cnt_master, "\nreload\n"); fflush(static::$cnt_master); @@ -476,9 +476,9 @@ class Sac_a_push { } static function create(&$app, $sockname, $debug, $blocking_mode, $provider_proxy, $argv) - { + { $thiz = new Sac_a_push(); - + $thiz->app = $app; $thiz->provider_proxy = ProviderProxy::create(); @@ -518,14 +518,14 @@ class Sac_a_push { else $thiz->rndstr .= chr(mt_rand(65, 90)); } - + if (file_exists($thiz->file_socket)) { unlink($thiz->file_socket); } if (file_exists($thiz->file_socket."2")) { unlink($thiz->file_socket."2"); } - + $old_umask = umask(0); if (($thiz->list_web = stream_socket_server($thiz->unix_socket, $err, $errs)) === FALSE) { return (FALSE); @@ -685,9 +685,9 @@ class Sac_a_push { if ($this->main_loop) { return (FALSE); } - + $this->main_loop = TRUE; - + $lastime = 0; $dump_users = TRUE; while ($this->main_loop) { @@ -696,7 +696,7 @@ class Sac_a_push { if ($lastime != ($this->curtime >> 2)) { fprintf(STDERR, "\nIN LOOP: Current opened: %d pending_pages: %d\n", count($this->socks), count($this->pending_pages)); } - + /* Prepare the read array */ /* // when we manage it ... */ /* if ($shutdown) */ @@ -712,7 +712,7 @@ class Sac_a_push { else { $read = $pre_read; } - + if ($this->debug > 1) { printf("PRE_SELECT\n"); print_r($read); @@ -720,11 +720,11 @@ class Sac_a_push { $write = NULL; $except = NULL; $num_changed_sockets = @stream_select($read, $write, $except, 0, 500000); - + if ($num_changed_sockets == 0) { // printf(" no data in 5 secs, splash [%d]\n", $G_with_splash); ; - } + } else if ($num_changed_sockets > 0) { if ($lastime != ($this->curtime >> 2)) { printf("num sock %d num_of_socket: %d\n", $num_changed_sockets, count($read)); @@ -894,6 +894,43 @@ class Sac_a_push { else { // data arrived from not special socket $key = array_search("$sock", $this->socks); // fprintf(STDERR, "Arrivati %d bytes dalla socket n. %d\n", mb_strlen($buf, "ASCII"), $key); + + if (isset($this->s2u[$id])) { + $user = $this->s2u[$id]; + + // fprintf(STDERR, 'POST USER'); + if ($user && $user->rd_transp && strpos($user->rd_transp->type, "websocket") !== FALSE) { + $clie_cmd = $user->rd_transp->unchunk($buf); + $clie_cmd = json_decode($clie_cmd, TRUE); + // fprintf(STDERR, "HERE WE ARE INCOMING DATA [%s]\n", print_r($clie_cmd, TRUE)); + + ob_start(); + // complete: index_wr_main($this->app, $addr, $get, $post, $cookie); + index_wr_main($this->app, $addr, $clie_cmd, NULL, NULL); + $content = ob_get_contents(); + ob_end_clean(); + + // $this->pendpage_try_addflush($new_socket, 20, $enc, $header_out, $content); + // FIXME ^ + // fprintf(STDERR, "RETURNED CONTENT [%s]\n", $content); + } + } + else { + fprintf(STDERR, "User associated with ID: %s not found\n", $id); + } + + if (isset($this->s2u[$id])) { + $user = $this->s2u[$id]; + + fprintf(STDERR, 'POST USER'); + if ($user && $user->rd_transp && strpos($user->rd_transp->type, "websocket") !== FALSE) { + fprintf(STDERR, "HERE WE ARE INCOMING DATA [%s]\n", $user->rd_transp->deframe($buf)); + + } + } + else { + fprintf(STDERR, "REC ID: %s\n", $id); + } if (isset($this->s2p[$id])) { $this->s2p[$id]->rest -= mb_strlen($buf, "ASCII"); $this->s2p[$id]->cont .= $buf; @@ -948,7 +985,7 @@ class Sac_a_push { unset($this->pending_pages[$k]); } } - + /* $response: raw stream data not sent $content: html consistent data (", $step, escpush($cont) ); } class Transport_htmlfile extends Transport_iframe { + function Transport_htmlfile() { + $this->type = 'htmlfile'; + } } class Transport { diff --git a/web/briskin5/Obj/briskin5.phh b/web/briskin5/Obj/briskin5.phh index 9382782..dd8e5c8 100644 --- a/web/briskin5/Obj/briskin5.phh +++ b/web/briskin5/Obj/briskin5.phh @@ -32,6 +32,7 @@ define('BIN5_PROXY_PATH', PROXY_PATH."/bin5"); require_once('rules.phh'); +// FOR TORNEO TURN IT TO BIN5_TOURNAMENT_TOGETHER17 define('BIN5_TOURNAMENT_CURRENT', BIN5_TOURNAMENT_NO_DRAW); $mlang_bin5_bin5 = array( @@ -88,7 +89,7 @@ function dom_select_rules() $ret = "\n"; diff --git a/web/commons.js b/web/commons.js index d3bfce6..c65dd51 100644 --- a/web/commons.js +++ b/web/commons.js @@ -130,7 +130,7 @@ function getStyle(x,IEstyleProp, MozStyleProp) var fo = function () { fn.apply(window,param); }; - return nativeSetTimeout(fo,ms); + return nativeSetTimeout(fo,ms); })(fn,ms,param); } else if(typeof(fn)=='string') @@ -264,36 +264,43 @@ function createXMLHttpRequest() { return null; } -function send_mesg(mesg) +function send_mesg(mesg, content) { var is_conn = (sess == "not_connected" ? false : true); if (is_conn && xstm && xstm.transp_type.startsWith('websocket')) { - var target = window.location.href.substring( - 0, window.location.href.lastIndexOf('/') + 1) + 'index_wr.php'; - var ws_msg = {target: target, mesg: mesg, stp:gst.st, sess:sess}; + if (typeof(content) != 'undefined') { + mesg = mesg + content; + } + var target = window.location.href.substring(0, + window.location.href.lastIndexOf('/') + 1) + 'index_wr.php'; + var ws_msg = JSON.stringify({target: target, mesg: mesg, stp:gst.st, sess:sess}); + console.log(ws_msg); xstm.transp.ws.send(ws_msg); } else { - var xhr_wr = createXMLHttpRequest(); - - // alert("xhr_wr: "+xhr_wr+" is_conn: "+is_conn); - xhr_wr.open('GET', 'index_wr.php?&'+(is_conn ? 'sess='+sess : '')+'&stp='+gst.st+'&mesg='+mesg, (is_conn ? true : false)); - xhr_wr.setRequestHeader("If-Modified-Since", new Date().toUTCString()); - xhr_wr.onreadystatechange = function() { return; }; - if (typeof(g_debug) == 'number' && g_debug > 0 - && typeof(console) == 'object' && typeof(console.log) == 'function') { + var xhr_wr = createXMLHttpRequest(); + + if (typeof(content) != 'undefined') { + mesg = mesg + encodeURIComponent(content); + } + // alert("xhr_wr: "+xhr_wr+" is_conn: "+is_conn); + xhr_wr.open('GET', 'index_wr.php?&'+(is_conn ? 'sess='+sess : '')+'&stp='+gst.st+'&mesg='+mesg, (is_conn ? true : false)); + xhr_wr.setRequestHeader("If-Modified-Since", new Date().toUTCString()); + xhr_wr.onreadystatechange = function() { return; }; + if (typeof(g_debug) == 'number' && g_debug > 0 + && typeof(console) == 'object' && typeof(console.log) == 'function') { var ldate = new Date(); console.log(ldate.getTime()+':MESG:'+mesg); - } - xhr_wr.send(null); - - if (!is_conn) { - if (xhr_wr.responseText != null) { - eval(xhr_wr.responseText); - } + } + xhr_wr.send(null); + + if (!is_conn) { + if (xhr_wr.responseText != null) { + eval(xhr_wr.responseText); } } + } } /* @@ -340,7 +347,7 @@ function server_request() if (xhr_wr.responseText != null) { // console.log("server_request:resp: "+xhr_wr.responseText); return (xhr_wr.responseText); - } + } else return (null); } @@ -371,7 +378,7 @@ function act_chatt(value) info_show(value.substring(6)); } else { - send_mesg("chatt|"+encodeURIComponent(value)); + send_mesg("chatt|", value); } /* obj.disabled = true; @@ -420,7 +427,7 @@ function act_mesgtoadm() function act_tav() { - act_chatt('/tav '+$('txt_in').value); + act_chatt('/tav '+$('txt_in').value); $('txt_in').value = ''; } @@ -477,7 +484,7 @@ function act_shutdown() function postact_logout() { // alert("postact_logout"); - try { + try { xstm.abort(); } catch (e) {} @@ -564,7 +571,7 @@ function slowimg(img,x1,y1,deltat,free,action,srcend) { } slowimg.prototype = { - img: null, + img: null, st: null, x0: 0, y0: 0, @@ -594,7 +601,7 @@ slowimg.prototype = { }, - settime: function(time) + settime: function(time) { this.time = (time < this.deltat ? this.deltat : time); this.step_n = parseInt(this.time / this.deltat); @@ -909,7 +916,7 @@ notify_ex.prototype = { notitag: null, toutid: null, clo: null, - clodiv: null, + clodiv: null, butt: null, tblkid: null, @@ -1006,7 +1013,7 @@ function remark_off() function italizer(ga) { var pre, pos; - if (ga[0] & 2) + if (ga[0] & 2) return ""+ga[1]+""; else return ga[1]; @@ -1155,12 +1162,12 @@ function onunload_cb () { function room_checkspace(emme,tables,inpe) { nome = ""; - for (i = 0 ; i < emme ; i++) + for (i = 0 ; i < emme ; i++) nome += "m"; nome += ""; alta = ""; - for (i = 0 ; i < 5 ; i++) + for (i = 0 ; i < 5 ; i++) alta += nome+"
"; for (i = 0 ; i < tables ; i++) { -- 2.17.1