[Libreoffice-commits] online.git: 4 commits - loolwsd/Connect.cpp loolwsd/LOOLWSD.cpp loolwsd/LOOLWSD.hpp loolwsd/MasterProcessSession.hpp
Tor Lillqvist
tml at collabora.com
Tue Mar 22 18:07:57 UTC 2016
loolwsd/Connect.cpp | 45 ++++++++++++++++++++++++++-------------
loolwsd/LOOLWSD.cpp | 27 +++++++++++------------
loolwsd/LOOLWSD.hpp | 4 ---
loolwsd/MasterProcessSession.hpp | 4 +--
4 files changed, 46 insertions(+), 34 deletions(-)
New commits:
commit 418fc3f2032807a62903610a13a0033097fc9edb
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Mar 22 20:06:44 2016 +0200
Use SSL here, too
diff --git a/loolwsd/Connect.cpp b/loolwsd/Connect.cpp
index e0f82ea..d53ae43 100644
--- a/loolwsd/Connect.cpp
+++ b/loolwsd/Connect.cpp
@@ -12,25 +12,28 @@
#include <fstream>
#include <iostream>
-#include <Poco/Net/HTTPClientSession.h>
+#include <Poco/Net/AcceptCertificateHandler.h>
+#include <Poco/Net/Context.h>
+#include <Poco/Net/HTTPSClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>
+#include <Poco/Net/InvalidCertificateHandler.h>
#include <Poco/Net/NetException.h>
+#include <Poco/Net/PrivateKeyPassphraseHandler.h>
#include <Poco/Net/SocketStream.h>
+#include <Poco/Net/SSLManager.h>
#include <Poco/Net/StreamSocket.h>
#include <Poco/Net/TCPServer.h>
#include <Poco/Net/TCPServerConnection.h>
#include <Poco/Net/TCPServerConnectionFactory.h>
#include <Poco/Net/WebSocket.h>
#include <Poco/Process.h>
+#include <Poco/SharedPtr.h>
#include <Poco/StringTokenizer.h>
#include <Poco/TemporaryFile.h>
#include <Poco/Thread.h>
#include <Poco/URI.h>
#include <Poco/Util/Application.h>
-#include <Poco/Util/HelpFormatter.h>
-#include <Poco/Util/Option.h>
-#include <Poco/Util/OptionSet.h>
#include "Common.hpp"
#include "LOOLProtocol.hpp"
@@ -38,25 +41,26 @@
using namespace LOOLProtocol;
-using Poco::Net::HTTPClientSession;
+using Poco::Net::AcceptCertificateHandler;
+using Poco::Net::Context;
+using Poco::Net::HTTPSClientSession;
using Poco::Net::HTTPRequest;
using Poco::Net::HTTPResponse;
+using Poco::Net::InvalidCertificateHandler;
using Poco::Net::Socket;
-using Poco::Net::SocketOutputStream;
+using Poco::Net::SSLManager;
using Poco::Net::StreamSocket;
using Poco::Net::TCPServer;
using Poco::Net::TCPServerConnection;
using Poco::Net::WebSocket;
using Poco::Net::WebSocketException;
using Poco::Runnable;
+using Poco::SharedPtr;
using Poco::StringTokenizer;
using Poco::TemporaryFile;
using Poco::Thread;
using Poco::URI;
using Poco::Util::Application;
-using Poco::Util::HelpFormatter;
-using Poco::Util::Option;
-using Poco::Util::OptionSet;
class Output: public Runnable
{
@@ -113,7 +117,7 @@ class Connect: public Poco::Util::Application
{
public:
Connect() :
- _uri("http://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER) + "/ws")
+ _uri("https://127.0.0.1:" + std::to_string(DEFAULT_CLIENT_PORT_NUMBER) + "/ws")
{
}
@@ -124,11 +128,24 @@ public:
protected:
int main(const std::vector<std::string>& args) override
{
- if (args.size() > 0)
- _uri = URI(args[0]);
+ if (args.size() < 1)
+ {
+ Log::error("Usage: connect documentURI [serverURI]");
+ return Application::EXIT_USAGE;
+ }
+
+ if (args.size() > 1)
+ _uri = URI(args[1]);
+
+ Poco::Net::initializeSSL();
+
+ SharedPtr<InvalidCertificateHandler> invalidCertHandler = new AcceptCertificateHandler(false);
+ Context::Params sslParams;
+ Context::Ptr sslContext = new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, sslParams);
+ SSLManager::instance().initializeClient(0, invalidCertHandler, sslContext);
- HTTPClientSession cs(_uri.getHost(), _uri.getPort());
- HTTPRequest request(HTTPRequest::HTTP_GET, "/ws");
+ HTTPSClientSession cs(_uri.getHost(), _uri.getPort());
+ HTTPRequest request(HTTPRequest::HTTP_GET, args[0]);
HTTPResponse response;
WebSocket ws(cs, request, response);
commit 0677c4abc99023e3f0c6679d83823d5c293eedcb
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Mar 22 18:47:05 2016 +0200
No need for the DocumentBroker map to be in the LOOLWSD class
It can be a simple static variable in LOOLWSD.cpp. It is not used
anywhere else.
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index dfcad92..430f406 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -171,8 +171,8 @@ using Poco::XML::InputSource;
using Poco::XML::Node;
using Poco::XML::NodeList;
-std::map<std::string, std::shared_ptr<DocumentBroker>> LOOLWSD::DocBrokers;
-std::mutex LOOLWSD::DocBrokersMutex;
+static std::map<std::string, std::shared_ptr<DocumentBroker>> docBrokers;
+static std::mutex docBrokersMutex;
/// Handles the filename part of the convert-to POST request payload.
class ConvertToPartHandler : public PartHandler
@@ -371,10 +371,10 @@ private:
// This lock could become a bottleneck.
// In that case, we can use a pool and index by publicPath.
- std::unique_lock<std::mutex> lock(LOOLWSD::DocBrokersMutex);
+ std::unique_lock<std::mutex> lock(docBrokersMutex);
Log::debug("New DocumentBroker for docKey [" + docKey + "].");
- LOOLWSD::DocBrokers.emplace(docKey, docBroker);
+ docBrokers.emplace(docKey, docBroker);
// Load the document.
std::shared_ptr<WebSocket> ws;
@@ -410,7 +410,7 @@ private:
if (docBroker->decSessions() == 0)
{
Log::debug("Removing DocumentBroker for docKey [" + docKey + "].");
- LOOLWSD::DocBrokers.erase(docKey);
+ docBrokers.erase(docKey);
}
}
@@ -551,11 +551,11 @@ private:
// This lock could become a bottleneck.
// In that case, we can use a pool and index by publicPath.
- std::unique_lock<std::mutex> lock(LOOLWSD::DocBrokersMutex);
+ std::unique_lock<std::mutex> lock(docBrokersMutex);
// Lookup this document.
- auto it = LOOLWSD::DocBrokers.find(docKey);
- if (it != LOOLWSD::DocBrokers.end())
+ auto it = docBrokers.find(docKey);
+ if (it != docBrokers.end())
{
// Get the DocumentBroker from the Cache.
Log::debug("Found DocumentBroker for docKey [" + docKey + "].");
@@ -566,7 +566,7 @@ private:
{
// Set one we just created.
Log::debug("New DocumentBroker for docKey [" + docKey + "].");
- LOOLWSD::DocBrokers.emplace(docKey, docBroker);
+ docBrokers.emplace(docKey, docBroker);
}
auto ws = std::make_shared<WebSocket>(request, response);
@@ -633,7 +633,7 @@ private:
if (docBroker->decSessions() == 0)
{
Log::debug("Removing DocumentBroker for docKey [" + docKey + "].");
- LOOLWSD::DocBrokers.erase(docKey);
+ docBrokers.erase(docKey);
}
}
@@ -764,11 +764,11 @@ public:
{
// This lock could become a bottleneck.
// In that case, we can use a pool and index by publicPath.
- std::unique_lock<std::mutex> lock(LOOLWSD::DocBrokersMutex);
+ std::unique_lock<std::mutex> lock(docBrokersMutex);
// Lookup this document.
- auto it = LOOLWSD::DocBrokers.find(docKey);
- if (it != LOOLWSD::DocBrokers.end())
+ auto it = docBrokers.find(docKey);
+ if (it != docBrokers.end())
{
// Get the DocumentBroker from the Cache.
docBroker = it->second;
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index 5504888..61ce73e 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -52,10 +52,6 @@ public:
static const std::string FIFO_LOOLWSD;
static const std::string LOKIT_PIDLOG;
- // All DocumentBrokers by their DocKey (the URI path without host, port, or query).
- static std::map<std::string, std::shared_ptr<DocumentBroker>> DocBrokers;
- static std::mutex DocBrokersMutex;
-
static
std::string GenSessionId()
{
commit 6b505e561fe410947a55469db7e2127010cc2de6
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Mar 22 18:45:22 2016 +0200
Bin unneeded #include
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 9d23a12..dfcad92 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -67,7 +67,6 @@ DEALINGS IN THE SOFTWARE.
#include <Poco/Exception.h>
#include <Poco/File.h>
#include <Poco/FileStream.h>
-#include <Poco/Mutex.h>
#include <Poco/Net/ConsoleCertificateHandler.h>
#include <Poco/Net/Context.h>
#include <Poco/Net/HTMLForm.h>
commit 744c4143c2d6b5f57ba6e8b3b4df64a68ebfc4ed
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Mar 22 18:41:14 2016 +0200
Indentation nit-pick
diff --git a/loolwsd/MasterProcessSession.hpp b/loolwsd/MasterProcessSession.hpp
index 87607fb..f102760 100644
--- a/loolwsd/MasterProcessSession.hpp
+++ b/loolwsd/MasterProcessSession.hpp
@@ -18,7 +18,7 @@
class MasterProcessSession final : public LOOLSession, public std::enable_shared_from_this<MasterProcessSession>
{
-public:
+ public:
MasterProcessSession(const std::string& id,
const Kind kind,
std::shared_ptr<Poco::Net::WebSocket> ws,
@@ -59,7 +59,7 @@ public:
virtual void sendFontRendering(const char *buffer, int length, Poco::StringTokenizer& tokens) override;
-private:
+ private:
void dispatchChild();
void forwardToPeer(const char *buffer, int length);
More information about the Libreoffice-commits
mailing list