[Libreoffice-commits] online.git: common/Util.cpp common/Util.hpp loleaflet/html loleaflet/src wsd/ClientSession.cpp wsd/ClientSession.hpp wsd/FileServer.cpp wsd/LOOLWSD.cpp wsd/LOOLWSD.hpp wsd/protocol.txt

gokaysatir (via logerrit) logerrit at kemper.freedesktop.org
Sat Apr 11 11:43:49 UTC 2020


 common/Util.cpp                  |   19 +++++++++++++++++++
 common/Util.hpp                  |    7 ++++++-
 loleaflet/html/loleaflet.html.m4 |    2 +-
 loleaflet/src/core/Socket.js     |    4 ++++
 wsd/ClientSession.cpp            |    6 ++++++
 wsd/ClientSession.hpp            |    1 +
 wsd/FileServer.cpp               |    1 -
 wsd/LOOLWSD.cpp                  |   22 ----------------------
 wsd/LOOLWSD.hpp                  |    4 ----
 wsd/protocol.txt                 |    4 ++++
 10 files changed, 41 insertions(+), 29 deletions(-)

New commits:
commit 9e0594ee2db2eff0afe7b4bc15e474c1e84f15bf
Author:     gokaysatir <gokaysatir at gmail.com>
AuthorDate: Fri Apr 10 20:02:39 2020 +0300
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Sat Apr 11 13:43:31 2020 +0200

    add pretty name - Android patch
    
    Change-Id: If0de49884954cde26bfbe8ba1dce8844af5b30bf
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91831
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/common/Util.cpp b/common/Util.cpp
index 2abbd4d11..703bfdd4b 100644
--- a/common/Util.cpp
+++ b/common/Util.cpp
@@ -953,6 +953,25 @@ namespace Util
 
         return result;
     }
+
+    #if !MOBILEAPP
+        // If OS is not mobile, it must be Linux.
+        std::string getLinuxVersion(){
+            // Read operating system info. We can read "os-release" file, located in /etc.
+            std::ifstream ifs("/etc/os-release");
+            std::string str(std::istreambuf_iterator<char>{ifs}, {});
+            std::vector<std::string> infoList = Util::splitStringToVector(str, '\n');
+            std::map<std::string, std::string> releaseInfo = Util::stringVectorToMap(infoList, '=');
+
+            if (releaseInfo.find("PRETTY_NAME") != releaseInfo.end()) {
+                return releaseInfo["PRETTY_NAME"];
+            }
+            else{
+                return "unknown";
+            }
+        }
+    #endif
+
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/common/Util.hpp b/common/Util.hpp
index fd1589cfe..b4a6c8d7d 100644
--- a/common/Util.hpp
+++ b/common/Util.hpp
@@ -994,10 +994,15 @@ int main(int argc, char**argv)
 
     /**
      * Converts vector of strings to map. Strings should have formed like this: key + delimiter + value.
-     * In case of a misformed string or zero length vector, returns an empty map.
+     * In case of a misformed string or zero length vector, passes that item and warns the developer.
      */
     std::map<std::string, std::string> stringVectorToMap(std::vector<std::string> sVector, const char delimiter);
 
+    #if !MOBILEAPP
+        // If OS is not mobile, it must be Linux.
+        std::string getLinuxVersion();
+    #endif
+
 } // end namespace Util
 
 #endif
diff --git a/loleaflet/html/loleaflet.html.m4 b/loleaflet/html/loleaflet.html.m4
index 12407c34b..dca62ada1 100644
--- a/loleaflet/html/loleaflet.html.m4
+++ b/loleaflet/html/loleaflet.html.m4
@@ -222,7 +222,7 @@ m4_ifelse(MOBILEAPP,[true],
       <div id="loolwsd-id"></div>
       <h3>LOKit</h3>
       <div id="lokit-version"></div>
-      m4_ifelse(MOBILEAPP,[],[<div id="os-name" style="text-align:center"><label>%OS_INFO%</label></div>])
+      m4_ifelse(MOBILEAPP,[],[<div id="os-info" style="text-align:center"></div>])
       <p>Copyright © _YEAR_, VENDOR.</p>
     </div>
 
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index d4e76d4e4..a4aa948c5 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -303,6 +303,10 @@ L.Socket = L.Class.extend({
 			                         lokitVersionObj.ProductVersion + lokitVersionObj.ProductExtension.replace('.10.','-') +
 			                         ' (git hash: ' + h + ')');
 		}
+		else if (textMsg.startsWith('osinfo ')) {
+			var osInfo = textMsg.replace('osinfo ', '');
+			document.getElementById('os-info').innerText = osInfo;
+		}
 		else if (textMsg.startsWith('clipboardkey: ')) {
 			var key = textMsg.substring('clipboardkey: '.length);
 			if (this._map._clip)
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index ddb7f605b..c9dc7827a 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -360,6 +360,12 @@ bool ClientSession::_handleInput(const char *buffer, int length)
         sendTextFrame("loolserver " + LOOLWSD::getVersionJSON());
         // Send LOKit version information
         sendTextFrame("lokitversion " + LOOLWSD::LOKitVersion);
+
+        #if !MOBILEAPP
+            // If it is not mobile, it must be Linux (for now).
+            sendTextFrame(std::string("osinfo ") + Util::getLinuxVersion());
+        #endif
+
         // Send clipboard key
         rotateClipboardKey(true);
 
diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp
index b47285dd0..e11ac721c 100644
--- a/wsd/ClientSession.hpp
+++ b/wsd/ClientSession.hpp
@@ -21,6 +21,7 @@
 #include <map>
 #include <list>
 #include <utility>
+#include "Util.hpp"
 
 class DocumentBroker;
 
diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp
index 9d833c510..ce9e12756 100644
--- a/wsd/FileServer.cpp
+++ b/wsd/FileServer.cpp
@@ -649,7 +649,6 @@ void FileServerRequestHandler::preprocessFile(const HTTPRequest& request, Poco::
     Poco::replaceInPlace(preprocess, std::string("%HOST%"), host);
     Poco::replaceInPlace(preprocess, std::string("%VERSION%"), std::string(LOOLWSD_VERSION_HASH));
     Poco::replaceInPlace(preprocess, std::string("%SERVICE_ROOT%"), LOOLWSD::ServiceRoot);
-    Poco::replaceInPlace(preprocess, std::string("%OS_INFO%"), LOOLWSD::OSInfo);
 
     std::string protocolDebug = "false";
     if (config.getBool("logging.protocol"))
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 2c7ac0c11..dd1be52ba 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -719,7 +719,6 @@ std::string LOOLWSD::ServerName;
 std::string LOOLWSD::FileServerRoot;
 std::string LOOLWSD::ServiceRoot;
 std::string LOOLWSD::LOKitVersion;
-std::string LOOLWSD::OSInfo;
 std::string LOOLWSD::HostIdentifier;
 std::string LOOLWSD::ConfigFile = LOOLWSD_CONFIGDIR "/loolwsd.xml";
 std::string LOOLWSD::ConfigDir = LOOLWSD_CONFIGDIR "/conf.d";
@@ -743,25 +742,6 @@ std::unique_ptr<TraceFileWriter> LOOLWSD::TraceDumper;
 std::unique_ptr<ClipboardCache> LOOLWSD::SavedClipboards;
 #endif
 
-void LOOLWSD::getOSInfo(){
-    #if !MOBILEAPP
-        // It might be neither mobile nor linux (in the future). That is not handled. If it is not mobile, it is Linux.
-
-        // Read operating system info. We can read "os-release" file, located in /etc.
-        std::ifstream ifs("/etc/os-release");
-        std::string str(std::istreambuf_iterator<char>{ifs}, {});
-        std::vector<std::string> infoList = Util::splitStringToVector(str, '\n');
-        std::map<std::string, std::string> releaseInfo = Util::stringVectorToMap(infoList, '=');
-        LOOLWSD::OSInfo = "unknown";
-
-        if (releaseInfo.find("PRETTY_NAME") != releaseInfo.end()) {
-            LOOLWSD::OSInfo = releaseInfo["PRETTY_NAME"];
-        }
-    #else
-        // Some more cases might be added in the future.
-    #endif
-}
-
 /// This thread polls basic web serving, and handling of
 /// websockets before upgrade: when upgraded they go to the
 /// relevant DocumentBroker poll instead.
@@ -962,8 +942,6 @@ void LOOLWSD::initialize(Application& self)
     AutoPtr<AppConfigMap> defConfig(new AppConfigMap(DefAppConfig));
     conf.addWriteable(defConfig, PRIO_SYSTEM); // Lowest priority
 
-    LOOLWSD::getOSInfo();
-
 #if !MOBILEAPP
 
     // Load default configuration files, if present.
diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp
index 034dbfbe0..ec36fe26f 100644
--- a/wsd/LOOLWSD.hpp
+++ b/wsd/LOOLWSD.hpp
@@ -237,7 +237,6 @@ public:
     static std::string FileServerRoot;
     static std::string ServiceRoot; ///< There are installations that need prefixing every page with some path.
     static std::string LOKitVersion;
-    static std::string OSInfo;
     static std::string HostIdentifier; ///< A unique random hash that identifies this server
     static std::string LogLevel;
     static bool AnonymizeUserData;
@@ -390,9 +389,6 @@ public:
 
     static std::string getVersionJSON();
 
-    /// Reads OS information, puts them into LOOLWSD::OSInfo variable
-    static void getOSInfo();
-
     int innerMain();
 
 protected:
diff --git a/wsd/protocol.txt b/wsd/protocol.txt
index 40ceb0de1..649352454 100644
--- a/wsd/protocol.txt
+++ b/wsd/protocol.txt
@@ -292,6 +292,10 @@ lokitversion <JSON string>
          "ProductExtension": ".0.0.alpha0",
          "BuildId": "<full 40 char git hash>"}
 
+osinfo: <string>
+
+    string that contains OS name and version.
+
 clipboardkey: <token>
 
     Send access token for web clipboard use, may arrive periodically


More information about the Libreoffice-commits mailing list