loleaflet/welcome/welcome-en-US.html | 5 +++++ loolwsd.xml.in | 5 +++++ wsd/FileServer.cpp | 19 +++++++++++++------ wsd/FileServer.hpp | 2 +- wsd/LOOLWSD.cpp | 12 +++++++++++- wsd/LOOLWSD.hpp | 1 + 6 files changed, 36 insertions(+), 8 deletions(-)
New commits: commit 7f96586922471457938ba1138ca7a8f7f384c4cc Author: Jan Holesovsky <[email protected]> AuthorDate: Tue Apr 14 19:50:04 2020 +0200 Commit: Jan Holesovsky <[email protected]> CommitDate: Thu Apr 16 11:30:00 2020 +0200 Welcome: Serve the release notes files from a given (configured) directory. Change-Id: Iae36c1c48fee963659662436d594be659908a3e3 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92216 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Jan Holesovsky <[email protected]> diff --git a/loleaflet/welcome/welcome-en-US.html b/loleaflet/welcome/welcome-en-US.html new file mode 100644 index 000000000..637bd3375 --- /dev/null +++ b/loleaflet/welcome/welcome-en-US.html @@ -0,0 +1,5 @@ +<html> +<body> + <p>test</p> +</body> +</html> diff --git a/loolwsd.xml.in b/loolwsd.xml.in index a8442c91e..1739a661f 100644 --- a/loolwsd.xml.in +++ b/loolwsd.xml.in @@ -114,6 +114,11 @@ <text desc="Watermark text to be displayed on the document if entered" type="string"></text> </watermark> + <welcome> + <enable type="bool" desc="Controls whether the welcome screen should be shown to the users on new install and updates." default="true">true</enable> + <path desc="Path to 'welcome-$lang.html' files served on first start or when the version changes. When empty, defaults to the Release notes." type="path" relative="true" default="loleaflet/welcome"></path> + </welcome> + <storage desc="Backend storage"> <filesystem allow="false" /> <wopi desc="Allow/deny wopi storage. Mutually exclusive with webdav." allow="true"> diff --git a/wsd/FileServer.cpp b/wsd/FileServer.cpp index ce9e12756..e5e08e92a 100644 --- a/wsd/FileServer.cpp +++ b/wsd/FileServer.cpp @@ -469,7 +469,7 @@ void FileServerRequestHandler::sendError(int errorCode, const Poco::Net::HTTPReq socket->send(oss.str()); } -void FileServerRequestHandler::readDirToHash(const std::string &basePath, const std::string &path) +void FileServerRequestHandler::readDirToHash(const std::string &basePath, const std::string &path, const std::string &prefix) { struct dirent *currentFile; struct stat fileStat; @@ -539,7 +539,7 @@ void FileServerRequestHandler::readDirToHash(const std::string &basePath, const } while(true); - FileHash.emplace(relPath, std::make_pair(uncompressedFile, compressedFile)); + FileHash.emplace(prefix + relPath, std::make_pair(uncompressedFile, compressedFile)); deflateEnd(&strm); } } @@ -551,13 +551,20 @@ void FileServerRequestHandler::readDirToHash(const std::string &basePath, const void FileServerRequestHandler::initialize() { - static const std::vector<std::string> subdirs = { "/loleaflet/dist" }; - for(const auto& subdir: subdirs) + // loleaflet files + try { + readDirToHash(LOOLWSD::FileServerRoot, "/loleaflet/dist"); + } catch (...) { + LOG_ERR("Failed to read from directory " << LOOLWSD::FileServerRoot); + } + + // welcome / release notes files + if (!LOOLWSD::WelcomeFilesRoot.empty()) { try { - readDirToHash(LOOLWSD::FileServerRoot, subdir); + readDirToHash(LOOLWSD::WelcomeFilesRoot, "", "/loleaflet/dist/welcome"); } catch (...) { - LOG_ERR("Failed to read from directory " << subdir); + LOG_ERR("Failed to read from directory " << LOOLWSD::WelcomeFilesRoot); } } } diff --git a/wsd/FileServer.hpp b/wsd/FileServer.hpp index 097208e21..365da309c 100644 --- a/wsd/FileServer.hpp +++ b/wsd/FileServer.hpp @@ -35,7 +35,7 @@ public: /// Clean cached files. static void uninitialize() { FileHash.clear(); } - static void readDirToHash(const std::string &basePath, const std::string &path); + static void readDirToHash(const std::string &basePath, const std::string &path, const std::string &prefix = std::string()); static const std::string *getCompressedFile(const std::string &path); diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 7f67f2b10..a8bfd4ad1 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -717,6 +717,7 @@ std::string LOOLWSD::LoTemplate; std::string LOOLWSD::ChildRoot; std::string LOOLWSD::ServerName; std::string LOOLWSD::FileServerRoot; +std::string LOOLWSD::WelcomeFilesRoot; std::string LOOLWSD::ServiceRoot; std::string LOOLWSD::LOKitVersion; std::string LOOLWSD::HostIdentifier; @@ -935,7 +936,9 @@ void LOOLWSD::initialize(Application& self) { "sys_template_path", "systemplate" }, { "trace.path[@compress]", "true" }, { "trace.path[@snapshot]", "false" }, - { "trace[@enable]", "false" } + { "trace[@enable]", "false" }, + { "welcome.enable", "true" }, + { "welcome.path", "loleaflet/welcome" } }; // Set default values, in case they are missing from the config file. @@ -1138,7 +1141,14 @@ void LOOLWSD::initialize(Application& self) ChildRoot = getPathFromConfig("child_root_path"); ServerName = config().getString("server_name"); + LOG_DBG("FileServerRoot before config: " << FileServerRoot); FileServerRoot = getPathFromConfig("file_server_root_path"); + LOG_DBG("FileServerRoot after config: " << FileServerRoot); + + WelcomeFilesRoot = getPathFromConfig("welcome.path"); + if (!getConfigValue<bool>(conf, "welcome.enable", true)) + WelcomeFilesRoot = ""; + NumPreSpawnedChildren = getConfigValue<int>(conf, "num_prespawn_children", 1); if (NumPreSpawnedChildren < 1) { diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp index ec36fe26f..4470e8871 100644 --- a/wsd/LOOLWSD.hpp +++ b/wsd/LOOLWSD.hpp @@ -235,6 +235,7 @@ public: static std::string ChildRoot; static std::string ServerName; static std::string FileServerRoot; + static std::string WelcomeFilesRoot; ///< From where we should serve the release notes (or otherwise useful content) that is shown on first install or version update. static std::string ServiceRoot; ///< There are installations that need prefixing every page with some path. static std::string LOKitVersion; static std::string HostIdentifier; ///< A unique random hash that identifies this server _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
