[Libreoffice-commits] online.git: 3 commits - test/integration-http-server.cpp wsd/LOOLWSD.cpp wsd/Storage.cpp wsd/Storage.hpp
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sun Oct 21 12:52:49 UTC 2018
test/integration-http-server.cpp | 9 ++-------
wsd/LOOLWSD.cpp | 8 ++++----
wsd/Storage.cpp | 5 +++++
wsd/Storage.hpp | 2 ++
4 files changed, 13 insertions(+), 11 deletions(-)
New commits:
commit 4ff506425faaddca85113177881630072e22cd65
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sat Oct 20 13:41:43 2018 +0200
Commit: Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Sat Oct 20 13:41:43 2018 +0200
Enable convert-to test
Change-Id: I7c2bf333bb4bcb803cd926bfb1d669f89d100615
diff --git a/test/integration-http-server.cpp b/test/integration-http-server.cpp
index ef8476c9e..f9d100e2f 100644
--- a/test/integration-http-server.cpp
+++ b/test/integration-http-server.cpp
@@ -50,7 +50,7 @@ class HTTPServerTest : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testLoleafletPost);
CPPUNIT_TEST(testScriptsAndLinksGet);
CPPUNIT_TEST(testScriptsAndLinksPost);
- // FIXME CPPUNIT_TEST(testConvertTo);
+ CPPUNIT_TEST(testConvertTo);
CPPUNIT_TEST_SUITE_END();
@@ -317,16 +317,10 @@ void HTTPServerTest::testConvertTo()
form.set("format", "txt");
form.addPart("data", new Poco::Net::FilePartSource(srcPath));
form.prepareSubmit(request);
-
- // FIXME From some reason we are getting Poco::Net::ConnectionRefusedException
- // What happens is that the file is just partially transferred -
- // ConvertToPartHandler::handlePart() gets just some 3.6k bytes; no idea
- // why yet
form.write(session->sendRequest(request));
Poco::Net::HTTPResponse response;
std::stringstream actualStream;
- // receiveResponse() resulted in a Poco::Net::NoMessageException.
std::istream& responseStream = session->receiveResponse(response);
Poco::StreamCopier::copyStream(responseStream, actualStream);
commit bb50c9e0cdcf68b010c9d312593b6dfcd4a9c93a
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sat Oct 20 13:26:38 2018 +0200
Commit: Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Sat Oct 20 13:26:38 2018 +0200
Enable convert-to features for wopi hosts
Change-Id: I994be7087247215b09d117df18b661906d941266
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 4e87c6125..c2d47ebb1 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2170,7 +2170,7 @@ private:
{
LOG_DBG("Wopi capabilities request: " << request.getURI());
- std::string capabilities = getCapabilitiesJson();
+ std::string capabilities = getCapabilitiesJson(request.getHost());
std::ostringstream oss;
oss << "HTTP/1.1 200 OK\r\n"
@@ -2256,7 +2256,7 @@ private:
std::string format = (form.has("format") ? form.get("format") : "");
- if (!allowPostFrom(socket->clientAddress()) || StorageBase::alowedWopiHost(socket->clientAddress()) )
+ if (!allowPostFrom(socket->clientAddress()) && !StorageBase::allowedWopiHost(request.getHost()) )
{
LOG_ERR("client address DENY: " << socket->clientAddress());
@@ -2693,7 +2693,7 @@ private:
}
/// Process the capabilities.json file and return as string.
- std::string getCapabilitiesJson()
+ std::string getCapabilitiesJson(const std::string& host)
{
std::shared_ptr<StreamSocket> socket = _socket.lock();
@@ -2717,7 +2717,7 @@ private:
Poco::JSON::Object::Ptr features = jsonFile.extract<Poco::JSON::Object::Ptr>();
Poco::JSON::Object::Ptr convert_to = features->get("convert-to").extract<Poco::JSON::Object::Ptr>();
- Poco::Dynamic::Var available = allowPostFrom(socket->clientAddress()) || StorageBase::alowedWopiHost(socket->clientAddress());
+ Poco::Dynamic::Var available = allowPostFrom(socket->clientAddress()) || StorageBase::allowedWopiHost(host);
convert_to->set("available", available);
std::ostringstream ostrJSON;
diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp
index 722893abd..c589e988e 100644
--- a/wsd/Storage.cpp
+++ b/wsd/Storage.cpp
@@ -141,9 +141,9 @@ void StorageBase::initialize()
#endif
}
-bool StorageBase::alowedWopiHost(const std::string& uri)
+bool StorageBase::allowedWopiHost(const std::string& host)
{
- return WopiEnabled && WopiHosts.match(Poco::URI(uri).getHost());
+ return WopiEnabled && WopiHosts.match(host);
}
#ifndef MOBILEAPP
diff --git a/wsd/Storage.hpp b/wsd/Storage.hpp
index a2025a4fd..0fb906c77 100644
--- a/wsd/Storage.hpp
+++ b/wsd/Storage.hpp
@@ -175,7 +175,7 @@ public:
const std::string& jailRoot,
const std::string& jailPath);
- static bool alowedWopiHost(const std::string& uri);
+ static bool allowedWopiHost(const std::string& host);
protected:
/// Returns the root path of the jail directory of docs.
commit ec65ecd0f1155fcca9806e654bb760fd5b94abb1
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sat Oct 20 12:57:53 2018 +0200
Commit: Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Sat Oct 20 12:57:53 2018 +0200
Revert "Revert "Enable convert-to features for wopi hosts""
This reverts commit 343ba48d27d6cc3bacf6d7927d9b615cd2cf98ce.
diff --git a/test/integration-http-server.cpp b/test/integration-http-server.cpp
index e8eb1197e..ef8476c9e 100644
--- a/test/integration-http-server.cpp
+++ b/test/integration-http-server.cpp
@@ -173,6 +173,7 @@ void HTTPServerTest::testCapabilities()
Poco::JSON::Object::Ptr convert_to = features->get("convert-to").extract<Poco::JSON::Object::Ptr>();
CPPUNIT_ASSERT(convert_to->has("available"));
+ CPPUNIT_ASSERT(convert_to->get("available"));
}
}
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 90c3e31ba..4e87c6125 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2256,7 +2256,7 @@ private:
std::string format = (form.has("format") ? form.get("format") : "");
- if (!allowPostFrom(socket->clientAddress()))
+ if (!allowPostFrom(socket->clientAddress()) || StorageBase::alowedWopiHost(socket->clientAddress()) )
{
LOG_ERR("client address DENY: " << socket->clientAddress());
@@ -2717,7 +2717,7 @@ private:
Poco::JSON::Object::Ptr features = jsonFile.extract<Poco::JSON::Object::Ptr>();
Poco::JSON::Object::Ptr convert_to = features->get("convert-to").extract<Poco::JSON::Object::Ptr>();
- Poco::Dynamic::Var available = allowPostFrom(socket->clientAddress());
+ Poco::Dynamic::Var available = allowPostFrom(socket->clientAddress()) || StorageBase::alowedWopiHost(socket->clientAddress());
convert_to->set("available", available);
std::ostringstream ostrJSON;
diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp
index 3ceaf673e..722893abd 100644
--- a/wsd/Storage.cpp
+++ b/wsd/Storage.cpp
@@ -141,6 +141,11 @@ void StorageBase::initialize()
#endif
}
+bool StorageBase::alowedWopiHost(const std::string& uri)
+{
+ return WopiEnabled && WopiHosts.match(Poco::URI(uri).getHost());
+}
+
#ifndef MOBILEAPP
bool isLocalhost(const std::string& targetHost)
diff --git a/wsd/Storage.hpp b/wsd/Storage.hpp
index 1e9544c2e..a2025a4fd 100644
--- a/wsd/Storage.hpp
+++ b/wsd/Storage.hpp
@@ -174,6 +174,8 @@ public:
static std::unique_ptr<StorageBase> create(const Poco::URI& uri,
const std::string& jailRoot,
const std::string& jailPath);
+
+ static bool alowedWopiHost(const std::string& uri);
protected:
/// Returns the root path of the jail directory of docs.
More information about the Libreoffice-commits
mailing list