[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-1-0' - 3 commits - loleaflet/debug loleaflet/dist loleaflet/Makefile loleaflet/src loolwsd/FileServer.hpp loolwsd/LOOLWSD.cpp loolwsd/test

Andras Timar andras.timar at collabora.com
Thu Jun 9 13:28:18 UTC 2016


 loleaflet/Makefile                            |    1 
 loleaflet/debug/document/admin.html           |    2 -
 loleaflet/debug/document/adminAnalytics.html  |    2 -
 loleaflet/debug/document/adminSettings.html   |    2 -
 loleaflet/dist/admin/admin.html               |    4 +--
 loleaflet/dist/admin/adminAnalytics.html      |    4 +--
 loleaflet/dist/admin/adminSettings.html       |    4 +--
 loleaflet/src/control/Toolbar.js              |    6 ++---
 loleaflet/src/core/Socket.js                  |    2 -
 loleaflet/src/layer/tile/TileLayer.js         |    2 -
 loleaflet/src/map/Map.js                      |    3 +-
 loleaflet/src/map/handler/Map.FileInserter.js |    2 -
 loolwsd/FileServer.hpp                        |    2 -
 loolwsd/LOOLWSD.cpp                           |   31 ++++++++++++++++----------
 loolwsd/test/UnitAdmin.cpp                    |    8 +++---
 loolwsd/test/helpers.hpp                      |    2 -
 loolwsd/test/httpwstest.cpp                   |    8 +++---
 17 files changed, 48 insertions(+), 37 deletions(-)

New commits:
commit 702cc0603f9e8a98553566fe173cdc75f87a8924
Author: Andras Timar <andras.timar at collabora.com>
Date:   Thu Jun 9 15:26:08 2016 +0200

    loleaflet: l10n of src/control/Toolbar.js
    
    (cherry picked from commit ec15d9e9fff3eb40e6841d3d5e659d7f3719e5ca)

diff --git a/loleaflet/Makefile b/loleaflet/Makefile
index 4cb0fd1..e826fa2 100644
--- a/loleaflet/Makefile
+++ b/loleaflet/Makefile
@@ -40,6 +40,7 @@ pot:
 		src/admin/Util.js \
 		src/control/Control.Menubar.js \
 		src/control/Control.Tabs.js \
+		src/control/Toolbar.js \
 		src/core/Socket.js \
 		src/map/Map.js
 
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index cee4561..5ec6050 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -40,7 +40,7 @@ L.Map.include({
 		}
 		id = id || -1; // not a special download
 
-		this.showBusy('Downloading...', false);
+		this.showBusy(_('Downloading...'), false);
 		this._socket.sendMessage('downloadas ' +
 			'name=' + name + ' ' +
 			'id=' + id + ' ' +
@@ -49,7 +49,7 @@ L.Map.include({
 	},
 
 	print: function () {
-		this.showBusy('Downloading...', false);
+		this.showBusy(_('Downloading...'), false);
 		this.downloadAs('print.pdf', 'pdf', null, 'print');
 	},
 
@@ -61,7 +61,7 @@ L.Map.include({
 			options = '';
 		}
 
-		this.showBusy('Saving...', false);
+		this.showBusy(_('Saving...'), false);
 		// TakeOwnership: we are performing a 'real' save-as, the document
 		// is just getting a new place, ie. it will get the
 		// '.uno:ModifiedStatus' upon completion.
commit 4cfde6c901391b083166e194ac6cd7862f59f7b0
Author: Pranav Kant <pranavk at collabora.com>
Date:   Thu Jun 9 14:06:45 2016 +0530

    bccu#1871: Add url prefix, lool, to post requests
    
    All post requests will now have to be prefixed with /lool/
    
    This is necessary to ease proxy url redirection setup.
    
    Change-Id: I04fbc211879722f6433cb9eb17786f394187a1b9
    Reviewed-on: https://gerrit.libreoffice.org/26091
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>
    (cherry picked from commit 257b95f01f0d21ed352e1d199137cc4a5ad9d8bb)

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index df233d6..81d5553 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -378,7 +378,7 @@ L.TileLayer = L.GridLayer.extend({
 		var command = this._map._socket.parseServerCmd(textMsg);
 		var parser = document.createElement('a');
 		parser.href = this._map.options.server;
-		var url = this._map.options.webserver + '/' +
+		var url = this._map.options.webserver + '/' + this._map.options.urlPrefix + '/' +
 			command.jail + '/' + command.dir + '/' + command.name;
 
 		this._map.hideBusy();
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 162c1c0..6deef34 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -16,7 +16,8 @@ L.Map = L.Evented.extend({
 		markerZoomAnimation: true,
 		defaultZoom: 10,
 		tileWidthTwips: 3840,
-		tileHeightTwips: 3840
+		tileHeightTwips: 3840,
+		urlPrefix: 'lool'
 	},
 
 	initialize: function (id, options) { // (HTMLElement or String, Object)
diff --git a/loleaflet/src/map/handler/Map.FileInserter.js b/loleaflet/src/map/handler/Map.FileInserter.js
index 3d76d78..7e90a2a 100644
--- a/loleaflet/src/map/handler/Map.FileInserter.js
+++ b/loleaflet/src/map/handler/Map.FileInserter.js
@@ -14,7 +14,7 @@ L.Map.FileInserter = L.Handler.extend({
 		this._toInsert = {};
 		var parser = document.createElement('a');
 		parser.href = map.options.server;
-		this._url = map.options.webserver + '/insertfile';
+		this._url = map.options.webserver + '/' + map.options.urlPrefix + '/insertfile';
 	},
 
 	addHooks: function () {
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index fe5dcc5..192c332 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -346,7 +346,7 @@ private:
     {
         Log::info("Post request: [" + request.getURI() + "]");
         StringTokenizer tokens(request.getURI(), "/?");
-        if (tokens.count() >= 2 && tokens[1] == "convert-to")
+        if (tokens.count() >= 3 && tokens[2] == "convert-to")
         {
             std::string fromPath;
             ConvertToPartHandler handler(fromPath);
@@ -443,7 +443,7 @@ private:
 
             return true;
         }
-        else if (tokens.count() >= 2 && tokens[1] == "insertfile")
+        else if (tokens.count() >= 3 && tokens[2] == "insertfile")
         {
             Log::info("Insert file request.");
             response.set("Access-Control-Allow-Origin", "*");
@@ -472,15 +472,15 @@ private:
                 }
             }
         }
-        else if (tokens.count() >= 4)
+        else if (tokens.count() >= 5)
         {
             Log::info("File download request.");
             // The user might request a file to download
             //TODO: Check that the user in question has access to this file!
-            const std::string dirPath = LOOLWSD::ChildRoot + tokens[1]
-                                      + JAILED_DOCUMENT_ROOT + tokens[2];
+            const std::string dirPath = LOOLWSD::ChildRoot + tokens[2]
+                                      + JAILED_DOCUMENT_ROOT + tokens[3];
             std::string fileName;
-            URI::decode(tokens[3], fileName);
+            URI::decode(tokens[4], fileName);
             const std::string filePath = dirPath + "/" + fileName;
             Log::info("HTTP request for: " + filePath);
             File file(filePath);
@@ -812,7 +812,9 @@ public:
                 // http://server/hosting/discovery
                 responded = handleGetWOPIDiscovery(request, response);
             }
-            else if (!(request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0))
+            // All post requests have url prefix, lool
+            else if (!(request.find("Upgrade") != request.end() && Poco::icompare(request["Upgrade"], "websocket") == 0) &&
+                     reqPathSegs[0] == "lool")
             {
                 responded = handlePostRequest(request, response, id);
             }
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index b334725..9b68d6c 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -1167,7 +1167,7 @@ void HTTPWSTest::testSlideShow()
             CPPUNIT_ASSERT_EQUAL(static_cast<int>(_uri.getPort()), port);
             CPPUNIT_ASSERT_EQUAL(std::string("slideshow"), id);
 
-            const std::string path = "/" + jail + "/" + dir + "/" + name + "?mime_type=image/svg%2Bxml";
+            const std::string path = "/lool/" + jail + "/" + dir + "/" + name + "?mime_type=image/svg%2Bxml";
             std::unique_ptr<Poco::Net::HTTPClientSession> session(helpers::createSession(_uri));
             Poco::Net::HTTPRequest requestSVG(Poco::Net::HTTPRequest::HTTP_GET, path);
             session->sendRequest(requestSVG);
commit 54ae631bd288063d53a69ee8e6f3d70db34d1d37
Author: Pranav Kant <pranavk at collabora.com>
Date:   Wed Jun 8 15:51:29 2016 +0530

    bccu#1871: Add url prefix to websocket urls
    
    Normal websocket connections are now :
    /lool/ws/filename
    
    Admin websocket is now :
    /lool/adminws/
    
    Change-Id: If39382cb852d89ed0394adbd7fe168fe4767a075
    Reviewed-on: https://gerrit.libreoffice.org/26029
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>
    (cherry picked from commit 8cc367638f7a0e5da56905510dda76075401cb4e)

diff --git a/loleaflet/debug/document/admin.html b/loleaflet/debug/document/admin.html
index 98bc593..891dab8 100644
--- a/loleaflet/debug/document/admin.html
+++ b/loleaflet/debug/document/admin.html
@@ -37,7 +37,7 @@
     <script>vex.defaultOptions.className = 'vex-theme-plain';</script>
     <script>
 
-	var host = 'wss://' + window.location.host + '/adminws/';
+	var host = 'wss://' + window.location.host + '/lool/adminws/';
 	new AdminSocketOverview(host);
 
     </script>
diff --git a/loleaflet/debug/document/adminAnalytics.html b/loleaflet/debug/document/adminAnalytics.html
index 13c124c..1841c56 100644
--- a/loleaflet/debug/document/adminAnalytics.html
+++ b/loleaflet/debug/document/adminAnalytics.html
@@ -38,7 +38,7 @@
     <script src="../../dist/admin/admin-src.js"></script>
     <script>
 
-	host = 'wss://' + window.location.host + '/adminws/';
+	host = 'wss://' + window.location.host + '/lool/adminws/';
 	new AdminSocketAnalytics(host);
 
     </script>
diff --git a/loleaflet/debug/document/adminSettings.html b/loleaflet/debug/document/adminSettings.html
index a86b137..5cd3bbc 100644
--- a/loleaflet/debug/document/adminSettings.html
+++ b/loleaflet/debug/document/adminSettings.html
@@ -37,7 +37,7 @@
     <script src="../../dist/admin/admin-src.js"></script>
     <script>
 
-	host = 'wss://' + window.location.host + '/adminws/';
+	host = 'wss://' + window.location.host + '/lool/adminws/';
 	new AdminSocketSettings(host);
 
     </script>
diff --git a/loleaflet/dist/admin/admin.html b/loleaflet/dist/admin/admin.html
index ef4a209..a3369fc 100644
--- a/loleaflet/dist/admin/admin.html
+++ b/loleaflet/dist/admin/admin.html
@@ -44,10 +44,10 @@
     <script>
 
         if (window.location.protocol == "https:") {
-	    host = 'wss://' + window.location.host + '/adminws/'
+	    host = 'wss://' + window.location.host + '/lool/adminws/'
         }
         else {
-	    host = 'ws://' + window.location.host + '/adminws/'
+	    host = 'ws://' + window.location.host + '/lool/adminws/'
         }
 	new AdminSocketOverview(host);
 
diff --git a/loleaflet/dist/admin/adminAnalytics.html b/loleaflet/dist/admin/adminAnalytics.html
index 23ad622..bef4e00 100644
--- a/loleaflet/dist/admin/adminAnalytics.html
+++ b/loleaflet/dist/admin/adminAnalytics.html
@@ -46,10 +46,10 @@
     <script>
 
         if (window.location.protocol == "https:") {
-           host = 'wss://' + window.location.host + '/adminws/'
+           host = 'wss://' + window.location.host + '/lool/adminws/'
         }
         else {
-           host = 'ws://' + window.location.host + '/adminws/'
+           host = 'ws://' + window.location.host + '/lool/adminws/'
         }
 	new AdminSocketAnalytics(host);
 
diff --git a/loleaflet/dist/admin/adminSettings.html b/loleaflet/dist/admin/adminSettings.html
index 351d4c0..54d5f31 100644
--- a/loleaflet/dist/admin/adminSettings.html
+++ b/loleaflet/dist/admin/adminSettings.html
@@ -45,10 +45,10 @@
     <script>
 
         if (window.location.protocol == "https:") {
-           host = 'wss://' + window.location.host + '/adminws/'
+           host = 'wss://' + window.location.host + '/lool/adminws/'
         }
         else {
-           host = 'ws://' + window.location.host + '/adminws/'
+           host = 'ws://' + window.location.host + '/lool/adminws/'
         }
 	new AdminSocketSettings(host);
 
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index bbd68e2..49092c8 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -9,7 +9,7 @@ L.Socket = L.Class.extend({
 	initialize: function (map) {
 		this._map = map;
 		try {
-			this.socket = new WebSocket(map.options.server + '/' + map.options.doc);
+			this.socket = new WebSocket(map.options.server + '/lool/ws/' + map.options.doc);
 		} catch (e) {
 			this.fire('error', {msg: _('Oops, there is a problem connecting to LibreOffice Online : ' + e), cmd: 'socket', kind: 'failed', id: 3});
 			return null;
diff --git a/loolwsd/FileServer.hpp b/loolwsd/FileServer.hpp
index da09978..a4ca0b8 100644
--- a/loolwsd/FileServer.hpp
+++ b/loolwsd/FileServer.hpp
@@ -99,7 +99,7 @@ public:
             JWTAuth authAgent(sslKeyPath, "admin", "admin", "admin");
             const std::string jwtToken = authAgent.getAccessToken();
             Poco::Net::HTTPCookie cookie("jwt", jwtToken);
-            cookie.setPath("/adminws/");
+            cookie.setPath("/lool/adminws/");
             cookie.setSecure(true);
             cookie.setHttpOnly(true);
             response.addCookie(cookie);
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 65d5c3d..fe5dcc5 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -518,9 +518,12 @@ private:
         // Remove the leading '/' in the GET URL.
         std::string uri = request.getURI();
         if (uri.size() > 0 && uri[0] == '/')
-        {
             uri.erase(0, 1);
-        }
+
+        // Remove leading 'lool/ws/' from GET URL
+        if (uri.size() > 0 && uri.compare(0, 8, "lool/ws/") == 0)
+            uri.erase(0, 8);
+
 
         const auto uriPublic = DocumentBroker::sanitizeURI(uri);
         const auto docKey = DocumentBroker::getDocKey(uriPublic);
@@ -793,6 +796,10 @@ public:
     {
         const auto id = LOOLWSD::GenSessionId();
 
+        Poco::URI requestUri(request.getURI());
+        std::vector<std::string> reqPathSegs;
+        requestUri.getPathSegments(reqPathSegs);
+
         Util::setThreadName("client_ws_" + id);
 
         Log::debug("Thread started.");
@@ -809,7 +816,7 @@ public:
             {
                 responded = handlePostRequest(request, response, id);
             }
-            else
+            else if (reqPathSegs.size() > 2 && reqPathSegs[0] == "lool" && reqPathSegs[1] == "ws")
             {
                 auto ws = std::make_shared<WebSocket>(request, response);
                 try
@@ -1097,7 +1104,7 @@ public:
             requestHandler = _fileServer.createRequestHandler();
         }
         // Admin WebSocket Connections
-        else if (reqPathSegs.size() >= 1 && reqPathSegs[0] == "adminws")
+        else if (reqPathSegs.size() >= 2 && reqPathSegs[0] == "lool" && reqPathSegs[1] == "adminws")
         {
             requestHandler = Admin::createRequestHandler();
         }
diff --git a/loolwsd/test/UnitAdmin.cpp b/loolwsd/test/UnitAdmin.cpp
index 2ecd27a..7ba4ffe 100644
--- a/loolwsd/test/UnitAdmin.cpp
+++ b/loolwsd/test/UnitAdmin.cpp
@@ -113,7 +113,7 @@ private:
         bool httpOnly = cookies[0].getHttpOnly();
         std::string value = cookies[0].getValue();
         TestResult res = TestResult::TEST_FAILED;
-        if (cookiePath.find_first_of("/adminws/") == 0 &&
+        if (cookiePath.find_first_of("/lool/adminws/") == 0 &&
             secure &&
             httpOnly &&
             value != "")
@@ -156,7 +156,7 @@ private:
     TestResult testWebSocketWithCookie()
     {
         HTTPResponse response;
-        HTTPRequest request(HTTPRequest::HTTP_GET, "/adminws/");
+        HTTPRequest request(HTTPRequest::HTTP_GET, "/lool/adminws/");
         std::unique_ptr<HTTPClientSession> session(helpers::createSession(_uri));
 
         // set cookie
@@ -192,7 +192,7 @@ private:
         _adminWs->sendFrame(subscribeMessage.data(), subscribeMessage.size());
 
         const std::string documentPath1 = Util::getTempFilePath(TDOC, "hello.odt");
-        const std::string documentURL1 = "file://" + Poco::Path(documentPath1).makeAbsolute().toString();
+        const std::string documentURL1 = std::string("lool/ws/") + "file://" + Poco::Path(documentPath1).makeAbsolute().toString();
         HTTPRequest request1(HTTPRequest::HTTP_GET, documentURL1);
         HTTPResponse response1;
         const Poco::URI docUri1(helpers::getTestServerURI());
@@ -262,7 +262,7 @@ private:
 
         // Open another document (different)
         const std::string documentPath2 = Util::getTempFilePath(TDOC, "insert-delete.odp");
-        const std::string documentURL2 = "file://" + Poco::Path(documentPath2).makeAbsolute().toString();
+        const std::string documentURL2 = std::string("lool/ws/") + "file://" + Poco::Path(documentPath2).makeAbsolute().toString();
         HTTPRequest request2(HTTPRequest::HTTP_GET, documentURL2);
         HTTPResponse response2;
         const Poco::URI docUri2(helpers::getTestServerURI());
diff --git a/loolwsd/test/helpers.hpp b/loolwsd/test/helpers.hpp
index 2483049..3214e58 100644
--- a/loolwsd/test/helpers.hpp
+++ b/loolwsd/test/helpers.hpp
@@ -52,7 +52,7 @@ inline
 void getDocumentPathAndURL(const char* document, std::string& documentPath, std::string& documentURL)
 {
     documentPath = Util::getTempFilePath(TDOC, document);
-    documentURL = "file://" + Poco::Path(documentPath).makeAbsolute().toString();
+    documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
 
     std::cerr << "Test file: " << documentPath << std::endl;
 }
diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index 7328115..b334725 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -181,7 +181,7 @@ void HTTPWSTest::testBadRequest()
     try
     {
         // Load a document and get its status.
-        const std::string documentURL = "file:///fake.doc";
+        const std::string documentURL = "lool/ws/file:///fake.doc";
 
         Poco::Net::HTTPResponse response;
         Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
@@ -894,7 +894,7 @@ void HTTPWSTest::testPasswordProtectedDocumentWithCorrectPassword()
     try
     {
         const std::string documentPath = Util::getTempFilePath(TDOC, "password-protected.ods");
-        const std::string documentURL = "file://" + Poco::Path(documentPath).makeAbsolute().toString();
+        const std::string documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
 
         Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
         Poco::Net::WebSocket socket = *connectLOKit(_uri, request, _response);
@@ -1019,7 +1019,7 @@ void HTTPWSTest::testInsertDelete()
 void HTTPWSTest::testEditLock()
 {
     const std::string documentPath = Util::getTempFilePath(TDOC, "hello.odt");
-    const std::string documentURL = "file://" + Poco::Path(documentPath).makeAbsolute().toString();
+    const std::string documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
 
     std::mutex mutex;
     std::condition_variable cv;


More information about the Libreoffice-commits mailing list