loolwsd/Storage.cpp | 19 ++++++++++++++----- loolwsd/Storage.hpp | 3 ++- 2 files changed, 16 insertions(+), 6 deletions(-)
New commits: commit b50a7d507c6ffa04767c3694f667f66089cef0d5 Author: Ashod Nakashian <[email protected]> Date: Sat Apr 16 18:12:10 2016 -0400 loolwsd: wopi trusted hosts are stored in set to warn about conflicting config Change-Id: If27e173ffee753e655057d8516f4f3b3ecda5d3b Reviewed-on: https://gerrit.libreoffice.org/24159 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/Storage.cpp b/loolwsd/Storage.cpp index a3b68e2..67ed5ec 100644 --- a/loolwsd/Storage.cpp +++ b/loolwsd/Storage.cpp @@ -34,7 +34,7 @@ /////////////////// bool StorageBase::_filesystemEnabled; bool StorageBase::_wopiEnabled; -std::vector<std::string> StorageBase::_wopiHosts; +std::set<std::string> StorageBase::_wopiHosts; std::string StorageBase::getLocalRootPath() const { @@ -70,13 +70,22 @@ void StorageBase::initialize() for (size_t i = 0; ; ++i) { const std::string path = "storage.wopi.host[" + std::to_string(i) + "]"; - if (app.config().getBool(path + "[@allow]", false)) + const auto host = app.config().getString(path, ""); + if (!host.empty()) { - const auto host = app.config().getString(path, ""); - if (!host.empty()) + if (app.config().getBool(path + "[@allow]", false)) { Log::info("Adding trusted WOPI host: [" + host + "]."); - _wopiHosts.push_back(host); + _wopiHosts.insert(host); + } + else + { + if (_wopiHosts.find(host) != _wopiHosts.end()) + { + Log::warn("Configuration of WOPI trusted hosts contains conflicting duplicates."); + } + + _wopiHosts.erase(host); } } else if (!app.config().has(path)) diff --git a/loolwsd/Storage.hpp b/loolwsd/Storage.hpp index 9855bbb..7114269 100644 --- a/loolwsd/Storage.hpp +++ b/loolwsd/Storage.hpp @@ -12,6 +12,7 @@ #define INCLUDED_STORAGE_HPP #include <string> +#include <set> #include <Poco/Util/Application.h> #include <Poco/URI.h> @@ -87,7 +88,7 @@ protected: static bool _filesystemEnabled; static bool _wopiEnabled; /// Allowed/trusted WOPI hosts, if any and if WOPI is enabled. - static std::vector<std::string> _wopiHosts; + static std::set<std::string> _wopiHosts; }; /// Trivial implementation of local storage that does not need do anything. _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
