[Libreoffice-commits] online.git: 2 commits - loolwsd/Admin.cpp loolwsd/FileServer.cpp
Pranav Kant
pranavk at collabora.co.uk
Tue Jul 19 17:59:41 UTC 2016
loolwsd/Admin.cpp | 7 +++++--
loolwsd/FileServer.cpp | 19 ++++++++++++-------
2 files changed, 17 insertions(+), 9 deletions(-)
New commits:
commit dff5118d3a4ce148638845e63337a5fb907d9426
Author: Pranav Kant <pranavk at collabora.co.uk>
Date: Tue Jul 19 23:25:16 2016 +0530
loolwsd: Better handling of JWT cookies
Use Poco API instead of manually finding the cookie in request
headers.
Change-Id: I4fee64b0adfe8a3139ad4291512e94fd65f9aa9d
diff --git a/loolwsd/FileServer.cpp b/loolwsd/FileServer.cpp
index 507f512..abcba82 100644
--- a/loolwsd/FileServer.cpp
+++ b/loolwsd/FileServer.cpp
@@ -12,6 +12,7 @@
#include <string>
#include <vector>
+#include <Poco/Exception.h>
#include <Poco/FileStream.h>
#include <Poco/Net/HTTPCookie.h>
#include <Poco/Net/HTTPBasicCredentials.h>
@@ -22,6 +23,7 @@
#include <Poco/Net/HTTPServerParams.h>
#include <Poco/Net/HTTPServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
+#include <Poco/Net/NameValueCollection.h>
#include <Poco/Net/NetException.h>
#include <Poco/Net/SecureServerSocket.h>
#include <Poco/Net/WebSocket.h>
@@ -46,6 +48,7 @@ using Poco::Net::HTTPResponse;
using Poco::Net::HTTPServerParams;
using Poco::Net::HTTPServerRequest;
using Poco::Net::HTTPServerResponse;
+using Poco::Net::NameValueCollection;
using Poco::Net::SecureServerSocket;
using Poco::Net::HTTPBasicCredentials;
using Poco::StreamCopier;
@@ -56,14 +59,11 @@ bool FileServerRequestHandler::isAdminLoggedIn(HTTPServerRequest& request, HTTPS
const auto& config = Application::instance().config();
const auto sslKeyPath = config.getString("ssl.key_file_path", "");
- if (request.find("Cookie") != request.end())
+ NameValueCollection cookies;
+ request.getCookies(cookies);
+ try
{
- // FIXME: Handle other cookie params like '; httponly; secure'
- const std::size_t pos = request["Cookie"].find_first_of("=");
- if (pos == std::string::npos)
- throw Poco::Net::NotAuthenticatedException("Missing JWT");
-
- const std::string jwtToken = request["Cookie"].substr(pos + 1);
+ const std::string jwtToken = cookies.get("jwt");
Log::info("Verifying JWT token: " + jwtToken);
JWTAuth authAgent(sslKeyPath, "admin", "admin", "admin");
if (authAgent.verify(jwtToken))
@@ -74,7 +74,12 @@ bool FileServerRequestHandler::isAdminLoggedIn(HTTPServerRequest& request, HTTPS
Log::info("Invalid JWT token, let the administrator re-login");
}
+ catch (const Poco::Exception& exc)
+ {
+ Log::info("No existing JWT cookie found");
+ }
+ // If no cookie found, or is invalid, let admin re-login
const auto user = config.getString("admin_console.username", "");
const auto pass = config.getString("admin_console.password", "");
if (user.empty() || pass.empty())
commit 319dd5659875d37f77dcb0c59c1fd70bb3444037
Author: Pranav Kant <pranavk at collabora.co.uk>
Date: Tue Jul 19 23:15:10 2016 +0530
loolwsd: Don't send an empty result in frame
Change-Id: Ia4cf4c6d49be4b65d075c8380994dd7115ba2dc6
diff --git a/loolwsd/Admin.cpp b/loolwsd/Admin.cpp
index 952544b..c8405b2 100644
--- a/loolwsd/Admin.cpp
+++ b/loolwsd/Admin.cpp
@@ -67,8 +67,11 @@ bool AdminRequestHandler::adminCommandHandler(const std::vector<char>& payload)
tokens[0] == "mem_stats" ||
tokens[0] == "cpu_stats" )
{
- const std::string responseFrame = tokens[0] + " " + model.query(tokens[0]);
- sendTextFrame(responseFrame);
+ std::string responseFrame = tokens[0] + " ";
+ const std::string result = model.query(tokens[0]);
+ responseFrame += result;
+ if (result != "")
+ sendTextFrame(responseFrame);
}
else if (tokens[0] == "subscribe" && tokens.count() > 1)
{
More information about the Libreoffice-commits
mailing list