wr on ws working properly on room (WIP for target detection, table _wr, return value...
authorMatteo Nastasi <nastasi@alternativeoutput.it>
Sun, 29 Mar 2020 13:53:00 +0000 (15:53 +0200)
committerMatteo Nastasi <nastasi@alternativeoutput.it>
Sun, 29 Mar 2020 13:53:00 +0000 (15:53 +0200)
web/Obj/brisk.phh
web/Obj/sac-a-push.phh
web/Obj/transports.phh
web/briskin5/Obj/briskin5.phh
web/commons.js

index 68e0418..96bc7f9 100644 (file)
@@ -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 {
index 6efc241..10f4f70 100644 (file)
@@ -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 (<script bla bla>)
@@ -993,7 +1030,7 @@ class Sac_a_push {
                             $response = $user->chunked_content($content);
                         }
                     }
-                    
+
                     if ($response != "") {
                         // echo "SPIA: [".substr($response, 0, 60)."...]\n";
                         // echo "SPIA: [".$response."]\n";
@@ -1012,7 +1049,7 @@ class Sac_a_push {
                         }
                         $user->rd_kalive_reset($this->curtime);
                     }
-                    
+
                     // close socket after a while to prevent client memory consumption
                     if ($user->rd_endtime_is_expired($this->curtime)) {
                         if ($this->s2u[$id]->rd_socket_get() != NULL) {
index 3422c23..fcc5c6d 100644 (file)
@@ -94,15 +94,19 @@ class Transport_websocket {
     protected $magicGUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
 
     function Transport_websocket($secure = FALSE) {
+        $this->type = ($secure == FALSE ? "websocket" : "websocketsec");
         $this->headerOriginRequired                 = false;
         $this->headerSecWebSocketProtocolRequired   = false;
         $this->headerSecWebSocketExtensionsRequired = false;
 
+        $this->handlingPartialPacket = false;
+
         $this->sendingContinuous = false;
-       $this->sendingContinuous = false;
-       $this->partialMessage = "";
 
-       $this->hasSentClose = false;
+        $this->handlingPartialPacket = false;
+        $this->partialMessage = "";
+
+        $this->hasSentClose = false;
     }
 
     protected function extractHeaders($message) {
@@ -201,6 +205,12 @@ class Transport_websocket {
         return $strout . "\n";
     }
 
+    function unchunk($cont)
+    {
+        // fprintf(STDERR, "CHUNK: [%s]\n", $cont);
+        return $this->deframe($cont);
+    }
+
     function chunk($step, $cont)
     {
         // fprintf(STDERR, "CHUNK: [%s]\n", $cont);
@@ -483,6 +493,7 @@ class Transport_websocket {
 class Transport_xhr {
 
     function Transport_xhr() {
+        $this->type = 'xhr';
     }
 
     function init($enc, $header, &$header_out, $init_string, $base, $step)
@@ -523,6 +534,7 @@ class Transport_xhr {
 class Transport_iframe {
 
     function Transport_iframe() {
+        $this->type = 'iframe';
     }
 
     function init($enc, $header, &$header_out, $init_string, $base, $step)
@@ -600,6 +612,9 @@ push(\"%s\");\n// -->\n</script>", $step, escpush($cont) );
 }
 
 class Transport_htmlfile extends Transport_iframe {
+    function Transport_htmlfile() {
+        $this->type = 'htmlfile';
+    }
 }
 
 class Transport {
index 9382782..dd8e5c8 100644 (file)
@@ -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 = "<select id='select_rules'>\n";
     foreach (rules_keys() as $key) {
         $value = rules_id2descr($key, $G_lang);
-        $ret .= sprintf("<option value='%d'>%s</option>\n", $key, $value);
+        $ret .= sprintf("<option value='%d'%s>%s</option>\n", $key, ($key == BIN5_TOURNAMENT_CURRENT ? " selected='selected'" : ""), $value);
     }
     $ret .= "</select>\n";
 
index d3bfce6..c65dd51 100644 (file)
@@ -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 "<i>"+ga[1]+"</i>";
     else
         return ga[1];
@@ -1155,12 +1162,12 @@ function onunload_cb () {
 function room_checkspace(emme,tables,inpe)
 {
     nome = "<b>";
-    for (i = 0 ; i < emme ; i++) 
+    for (i = 0 ; i < emme ; i++)
        nome += "m";
     nome += "</b>";
 
     alta = "";
-    for (i = 0 ; i < 5 ; i++) 
+    for (i = 0 ; i < 5 ; i++)
        alta += nome+"<br>";
 
     for (i = 0 ; i < tables ; i++) {