loleaflet/html/loleaflet.html.m4 |    2 ++
 loleaflet/src/core/Socket.js     |   26 +++++++++++++++++---------
 loolwsd.xml.in                   |    1 +
 wsd/FileServer.cpp               |    8 +++++++-
 wsd/LOOLWSD.cpp                  |    1 +
 5 files changed, 28 insertions(+), 10 deletions(-)

New commits:
commit 98617e40e2bc9ec5c0c1b5637099d74c5aab4515
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Fri Nov 15 18:01:02 2019 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 15 18:01:02 2019 +0000

    Enable protocol debugging by default in debug mode.
    
    Also add a config option for logging.protocol - to help catch early
    protocol issues during startup.
    
    Change-Id: I6f0cc6dcf14b2797bc6b2bd36c44750d74eb0608

diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 7af24cdf1..6fc5afbfa 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -224,6 +224,7 @@ ifelse(MOBILEAPP,[true],
       window.outOfFocusTimeoutSecs = 1000000;
       window.idleTimeoutSecs = 1000000;
       window.reuseCookies = '';
+      window.protocolDebug = false;
       window.tileSize = 256;],
      [window.host = '%HOST%';
       window.serviceRoot = '%SERVICE_ROOT%';
@@ -234,6 +235,7 @@ ifelse(MOBILEAPP,[true],
       window.outOfFocusTimeoutSecs = %OUT_OF_FOCUS_TIMEOUT_SECS%;
       window.idleTimeoutSecs = %IDLE_TIMEOUT_SECS%;
       window.reuseCookies = '%REUSE_COOKIES%';
+      window.protocolDebug = %PROTOCOL_DEBUG%;
       window.tileSize = 256;])
 syscmd([cat ]GLOBAL_JS)dnl
     </script>
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 6512dd92d..f391e4108 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -140,9 +140,7 @@ L.Socket = L.Class.extend({
                        // Only attempt to log text frames, not binary ones.
                        if (typeof msg === 'string') {
                                L.Log.log(msg, L.OUTGOING, coords);
-                               if (this._map._docLayer && 
this._map._docLayer._debug) {
-                                       console.log2(+new Date() + ' 
%cOUTGOING%c: ' + msg.concat(' ').replace(' ', '%c '), 
'background:#fbb;color:black', 'color:red', 'color:black');
-                               }
+                               this._logSocket('OUTGOING', msg);
                        }
                }
                else {
@@ -155,9 +153,7 @@ L.Socket = L.Class.extend({
                // Only attempt to log text frames, not binary ones.
                if (typeof msg === 'string') {
                        L.Log.log(msg, L.OUTGOING, coords);
-                       if (this._map._docLayer && this._map._docLayer._debug) {
-                               console.log2(+new Date() + ' %cOUTGOING%c: ' + 
msg.concat(' ').replace(' ', '%c '), 'background:#fbb;color:black', 
'color:red', 'color:black');
-                       }
+                       this._logSocket('OUTGOING', msg);
                }
 
                this.socket.send(msg);
@@ -237,6 +233,20 @@ L.Socket = L.Class.extend({
                return true;
        },
 
+       _logSocket: function(type, msg) {
+
+               var fullDebug = this._map._docLayer && 
this._map._docLayer._debug;
+               if (!window.protocolDebug && !fullDebug)
+                       return;
+
+               if (!fullDebug && msg.length > 256) // for reasonable 
performance.
+                       msg = msg.substring(0,256) + '<truncated ' + 
(msg.length - 256) + 'chars>';
+
+               var color = type === 'OUTGOING' ? 'color:red' : 'color:blue';
+               console.log2(+new Date() + ' %c' + type + '%c: ' + msg.concat(' 
').replace(' ', '%c '),
+                            'background:#ddf;color:black', color, 
'color:black');
+       },
+
        _onMessage: function (e) {
                var imgBytes, index, textMsg, img;
 
@@ -254,9 +264,7 @@ L.Socket = L.Class.extend({
                        textMsg = String.fromCharCode.apply(null, 
imgBytes.subarray(0, index));
                }
 
-               if (this._map._docLayer && this._map._docLayer._debug) {
-                       console.log2(+new Date() + ' %cINCOMING%c: ' + 
textMsg.concat(' ').replace(' ', '%c '), 'background:#ddf;color:black', 
'color:blue', 'color:black');
-               }
+               this._logSocket('INCOMING', textMsg);
 
                var command = this.parseServerCmd(textMsg);
                if (textMsg.startsWith('loolserver ')) {
diff --git a/loolwsd.xml.in b/loolwsd.xml.in
index 83c35b9ce..79a930d7f 100644
--- a/loolwsd.xml.in
+++ b/loolwsd.xml.in
@@ -41,6 +41,7 @@
     <logging>
         <color type="bool">true</color>
         <level type="string" desc="Can be 0-8, or none (turns off logging), 
fatal, critical, error, warning, notice, information, debug, trace" 
default="@LOOLWSD_LOGLEVEL@">@LOOLWSD_LOGLEVEL@</level>
+       <protocol type="bool" descr="Enable minimal client-site JS protocol 
logging from the start">@ENABLE_DEBUG@</protocol>
         <file enable="@LOOLWSD_LOG_TO_FILE@">
             <property name="path" desc="Log file 
path.">@LOOLWSD_LOGFILE@</property>
             <property name="rotation" desc="Log file rotation strategy. See 
Poco FileChannel.">never</property>
diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index 32373f3b0..5f49450c1 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -633,6 +633,8 @@ void FileServerRequestHandler::preprocessFile(const 
HTTPRequest& request, Poco::
         }
     }
 
+    const auto& config = Application::instance().config();
+
     Poco::replaceInPlace(preprocess, std::string("%ACCESS_TOKEN%"), 
escapedAccessToken);
     Poco::replaceInPlace(preprocess, std::string("%ACCESS_TOKEN_TTL%"), 
std::to_string(tokenTtl));
     Poco::replaceInPlace(preprocess, std::string("%ACCESS_HEADER%"), 
escapedAccessHeader);
@@ -640,13 +642,17 @@ void FileServerRequestHandler::preprocessFile(const 
HTTPRequest& request, Poco::
     Poco::replaceInPlace(preprocess, std::string("%VERSION%"), 
std::string(LOOLWSD_VERSION_HASH));
     Poco::replaceInPlace(preprocess, std::string("%SERVICE_ROOT%"), 
LOOLWSD::ServiceRoot);
 
+    std::string protocolDebug = "false";
+    if (config.getBool("logging.protocol"))
+        protocolDebug = "true";
+    Poco::replaceInPlace(preprocess, std::string("%PROTOCOL_DEBUG%"), 
protocolDebug);
+
     static const std::string linkCSS("<link rel=\"stylesheet\" 
href=\"%s/loleaflet/" LOOLWSD_VERSION_HASH "/%s.css\">");
     static const std::string scriptJS("<script src=\"%s/loleaflet/" 
LOOLWSD_VERSION_HASH "/%s.js\"></script>");
 
     std::string brandCSS(Poco::format(linkCSS, LOOLWSD::ServiceRoot, 
std::string(BRANDING)));
     std::string brandJS(Poco::format(scriptJS, LOOLWSD::ServiceRoot, 
std::string(BRANDING)));
 
-    const auto& config = Application::instance().config();
 #if ENABLE_SUPPORT_KEY
     const std::string keyString = config.getString("support_key", "");
     SupportKey key(keyString);
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 6672ec6d2..5a0bc7f60 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -797,6 +797,7 @@ void LOOLWSD::initialize(Application& self)
             { "child_root_path", "jails" },
             { "file_server_root_path", "loleaflet/.." },
             { "lo_jail_subpath", "lo" },
+            { "logging.protocol", "false" },
             { "logging.anonymize.filenames", "false" }, // Deprecated.
             { "logging.anonymize.usernames", "false" }, // Deprecated.
             // { "logging.anonymize.anonymize_user_data", "false" }, // Do not 
set to fallback on filename/username.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to