[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-1-0' - 13 commits - loleaflet/Makefile loleaflet/README loolwsd/Common.hpp loolwsd/configure.ac loolwsd/debian loolwsd/FileServer.hpp loolwsd/LOOLWSD.cpp loolwsd/LOOLWSD.hpp loolwsd/loolwsd.service loolwsd/loolwsd.spec.in loolwsd/loolwsd.xml.in loolwsd/Makefile.am loolwsd/README loolwsd/Storage.cpp loolwsd/test

Andras Timar andras.timar at collabora.com
Wed Jun 29 12:31:04 UTC 2016


 loleaflet/Makefile             |    2 
 loleaflet/README               |   14 +-
 loolwsd/Common.hpp             |    1 
 loolwsd/FileServer.hpp         |    4 
 loolwsd/LOOLWSD.cpp            |  200 ++++++++++++++---------------------------
 loolwsd/LOOLWSD.hpp            |   39 ++++++-
 loolwsd/Makefile.am            |    5 -
 loolwsd/README                 |    8 -
 loolwsd/Storage.cpp            |    2 
 loolwsd/configure.ac           |    2 
 loolwsd/debian/loolwsd.service |   11 --
 loolwsd/loolwsd.service        |   11 --
 loolwsd/loolwsd.spec.in        |    2 
 loolwsd/loolwsd.xml.in         |   10 +-
 loolwsd/test/run_unit.sh.in    |   28 +++--
 15 files changed, 154 insertions(+), 185 deletions(-)

New commits:
commit 3a98b909612d3df72fa557a95fd3db855d0fdd8f
Author: Andras Timar <andras.timar at collabora.com>
Date:   Wed Jun 29 14:29:19 2016 +0200

    Bump version to 1.7.0
    
    Changes in loolwsd command line options warrant a minor version bump.
    :s#	libpoconetssl17-dbg_1.7.3-1_amd64.deb

diff --git a/loleaflet/Makefile b/loleaflet/Makefile
index 46a6f4a..81b5896 100644
--- a/loleaflet/Makefile
+++ b/loleaflet/Makefile
@@ -3,7 +3,7 @@
 # ("micro") part: Between releases odd, even for releases (no other
 # changes inbetween).
 
-VERSION=1.6.15
+VERSION=1.7.0
 
 # Version number of the bundled 'draw' thing
 DRAW_VERSION=0.2.4
diff --git a/loolwsd/configure.ac b/loolwsd/configure.ac
index f1b0e57..9a47ab4 100644
--- a/loolwsd/configure.ac
+++ b/loolwsd/configure.ac
@@ -3,7 +3,7 @@
 
 AC_PREREQ([2.69])
 
-AC_INIT([loolwsd], [1.6.15], [libreoffice at lists.freedesktop.org])
+AC_INIT([loolwsd], [1.7.0], [libreoffice at lists.freedesktop.org])
 LT_INIT([shared, disable-static, dlopen])
 
 AM_INIT_AUTOMAKE([1.11 silent-rules subdir-objects])
commit dbc835a16889f5defaa9ad56a1d342b6e5979549
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Tue Jun 28 12:11:10 2016 +0530

    loolwsd: Fix incorrect WOPI PutFile path in logs
    
    Change-Id: I90f0cd249b1b32593e16801a3c78daa128aa6d71
    (cherry picked from commit 0f23d617cacece2c8ae3b4dafb9906f5b565e840)

diff --git a/loolwsd/Storage.cpp b/loolwsd/Storage.cpp
index bbaccb0..d86c71f 100644
--- a/loolwsd/Storage.cpp
+++ b/loolwsd/Storage.cpp
@@ -369,7 +369,7 @@ bool WopiStorage::saveLocalFileToStorage()
     Log::info("WOPI::PutFile response: " + oss.str());
     const auto success = (response.getStatus() == Poco::Net::HTTPResponse::HTTP_OK);
     Log::info() << "WOPI::PutFile uploaded " << size << " bytes from [" << _jailedFilePath  << "]:"
-                << "] -> [" << _uri << "]: "
+                << "] -> [" << url << "]: "
                 <<  response.getStatus() << " " << response.getReason() << Log::end;
 
     return success;
commit 96185ca651b802b0f901271163255fb1f389ca44
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Mon Jun 27 08:27:08 2016 -0400

    loolwsd: removed lo_jail_subpath
    
    Really unused setting that caused deployment complications.
    
    Change-Id: If837fca4c904e82b23babd4a1f0f3f15b5ef57f4
    Reviewed-on: https://gerrit.libreoffice.org/26705
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit b7e0766fea74f851ccda9b6b172357029eed05db)

diff --git a/loolwsd/Common.hpp b/loolwsd/Common.hpp
index f0be984..f76b823 100644
--- a/loolwsd/Common.hpp
+++ b/loolwsd/Common.hpp
@@ -36,6 +36,7 @@ constexpr auto FIFO_PATH = "pipe";
 constexpr auto JAILED_DOCUMENT_ROOT = "/user/docs/";
 constexpr auto CHILD_URI = "/loolws/child?";
 constexpr auto NEW_CHILD_URI = "/loolws/newchild?";
+constexpr auto LO_JAIL_SUBPATH = "lo";
 
 // The client port number, both loolwsd and the kits have this.
 extern int ClientPortNumber;
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index d887289..1969ad0 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -1162,7 +1162,6 @@ std::string LOOLWSD::Cache = LOOLWSD_CACHEDIR;
 std::string LOOLWSD::SysTemplate;
 std::string LOOLWSD::LoTemplate;
 std::string LOOLWSD::ChildRoot;
-std::string LOOLWSD::LoSubPath = "lo";
 std::string LOOLWSD::ServerName;
 std::string LOOLWSD::FileServerRoot;
 std::string LOOLWSD::LOKitVersion;
@@ -1261,7 +1260,6 @@ void LOOLWSD::initialize(Application& self)
     SysTemplate = getPathFromConfig("sys_template_path");
     LoTemplate = getPathFromConfig("lo_template_path");
     ChildRoot = getPathFromConfig("child_root_path");
-    LoSubPath = getPathFromConfig("lo_jail_subpath");
     ServerName = config().getString("server_name");
     FileServerRoot = getPathFromConfig("file_server_root_path");
     NumPreSpawnedChildren = getUIntConfigValue(conf, "num_prespawn_children", 1);
@@ -1415,7 +1413,7 @@ Process::PID LOOLWSD::createForKit()
 {
     Process::Args args;
 
-    args.push_back("--losubpath=" + LOOLWSD::LoSubPath);
+    args.push_back("--losubpath=" + std::string(LO_JAIL_SUBPATH));
     args.push_back("--systemplate=" + SysTemplate);
     args.push_back("--lotemplate=" + LoTemplate);
     args.push_back("--childroot=" + ChildRoot);
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index d82e026..76e942e 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -40,7 +40,6 @@ public:
     static std::string SysTemplate;
     static std::string LoTemplate;
     static std::string ChildRoot;
-    static std::string LoSubPath;
     static std::string ServerName;
     static std::string FileServerRoot;
     static std::string LOKitVersion;
diff --git a/loolwsd/loolwsd.xml.in b/loolwsd/loolwsd.xml.in
index 3399ef8..c55cf30 100644
--- a/loolwsd/loolwsd.xml.in
+++ b/loolwsd/loolwsd.xml.in
@@ -7,7 +7,6 @@
     <sys_template_path desc="Path to a template tree with shared libraries etc to be used as source for chroot jails for child processes." type="path" relative="true" default="systemplate"></sys_template_path>
     <lo_template_path desc="Path to a LibreOffice installation tree to be copied (linked) into the jails for child processes. Should be on the same file system as systemplate." type="path" relative="false" default="/opt/collaboraoffice5.0"></lo_template_path>
     <child_root_path desc="Path to the directory under which the chroot jails for the child processes will be created. Should be on the same file system as systemplate and lotemplate. Must be an empty directory." type="path" relative="true" default="jails"></child_root_path>
-    <lo_jail_subpath desc="Relative path where the LibreOffice installation will be copied inside a jail. Set relative to false to prevent expanding the path." type="path" relative="false" default="lo">lo</lo_jail_subpath>
 
     <server_name desc="Hostname:port of the server running loolwsd. If empty, it's derived from the request." type="string" default=""></server_name>
     <file_server_root_path desc="Path to the directory that should be considered root for the file server. This should be the directory containing loleaflet." type="path" relative="true" default="../loleaflet/../"></file_server_root_path>
commit e3bd1c3db4bdd5259b5adbfea1ec49091c458f43
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Jun 27 09:41:41 2016 +0200

    loolwsd: document new command line options in READMEs
    
    (cherry picked from commit f540fb087c9f0918d8a13f8679f0825e4c21e4b0)

diff --git a/loleaflet/README b/loleaflet/README
index fedd119..cba373b 100644
--- a/loleaflet/README
+++ b/loleaflet/README
@@ -39,11 +39,11 @@ To see an example:
 
 * run loolwsd, like:
 
-    ./loolwsd --systemplate=${SYSTEMPLATE} --lotemplate=${MASTER}/instdir --childroot=${ROOTFORJAILS}
+    ./loolwsd --o:sys_template_path=${SYSTEMPLATE} --o:lo_template_path=${MASTER}/instdir --o:child_root_path=${ROOTFORJAILS}
 
 Note that this will, by default, set the loolwsd's file server's root to the parent directory of loolwsd,
 which means you can access all the files in loleaflet using /loleaflet/ path. It is advised to set
-fileserverroot manually for more control. See loolwsd/README for more information.
+file_server_root_path manually for more control. See loolwsd/README for more information.
 
 * open debug/document/document_simple_example.html or dist/loleaflet.html through loolwsd's fileserver
 
@@ -65,11 +65,11 @@ For example:
 
     https://localhost:9980/loleaflet/dist/admin/admin.html
 
-It will ask for username and password which is set by the --admincreds option of loolwsd. For example you can
-pass --admincreds=admin/admin which will make username and password 'admin', 'admin' respectively. After entering
-the correct password you should be able to monitor the live documents opened, total users, memory consumption,
-document URLs with number of users viewing that document etc. You can also kill the documents directly from
-the panel which would result in closing the socket connection to the respective document.
+It will ask for username and password which is set by the admin_console options of loolwsd. For example you can
+pass --o:admin_console.username=admin --o:admin_console.password=admin in command line, or set these values in
+loolwsd.xml. After entering the correct password you should be able to monitor the live documents opened, total
+users, memory consumption, document URLs with number of users viewing that document etc. You can also kill the
+documents directly from the panel which would result in closing the socket connection to the respective document.
 
 Testing
 -------
diff --git a/loolwsd/README b/loolwsd/README
index 4b508fe..a58b948 100644
--- a/loolwsd/README
+++ b/loolwsd/README
@@ -107,7 +107,7 @@ chroot system, and directory for the jails:
 To run loolwsd the way it is supposed to eventually be run "for real", you can
 now do:
 
-    ./loolwsd --systemplate=${SYSTEMPLATE} --lotemplate=${MASTER}/instdir --childroot=${ROOTFORJAILS}
+    ./loolwsd --o:sys_template_path=${SYSTEMPLATE} --o:lo_template_path=${MASTER}/instdir --o:child_root_path=${ROOTFORJAILS}
 
 The ${SYSTEMPLATE} is a directory tree set up using the
 loolwsd-systemplate-setup script here. (It should not exist before
@@ -125,12 +125,12 @@ jail, ${SYSTEMPLATE} and ${MASTER}/instdir need to be on the same file
 system as ${ROOTFORJAILS}.
 
 Leaflet files are served itself by loolwsd internal file server. You
-can specify the root of this fileserver using the --fileserverroot
+can specify the root of this fileserver using the --o:file_server_root_path
 flag in loolwsd commandline.  By default, if you do not specify this
 flag, the parent directory of loolwsd/ is assumed to be the
-fileserverroot. So, for development purposes, you can access the
+file_server_root_path. So, for development purposes, you can access the
 leaflet files (using /loleaflet/), but it is advised to explicitly set
-the fileserverroot to prevent any unwanted files from reading,
+the file_server_root_path to prevent any unwanted files from reading,
 especially when lool is deployed for normal public usage on servers.
 
 Please note that it is necessary that all the leaflet files that are
commit c304d35e15df4304ab54b70c5f146110b8579d17
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Jun 27 09:27:25 2016 +0200

    loolwsd: use the new command line options in spec file for default admin
    
    (cherry picked from commit 93e11045056c36612713d990ae5dc72cccbb3717)

diff --git a/loolwsd/loolwsd.spec.in b/loolwsd/loolwsd.spec.in
index 7dd638d..2b10a82 100644
--- a/loolwsd/loolwsd.spec.in
+++ b/loolwsd/loolwsd.spec.in
@@ -66,7 +66,7 @@ env BUILDING_FROM_RPMBUILD=yes make %{?_smp_mflags}
 %install
 env BUILDING_FROM_RPMBUILD=yes make install DESTDIR=%{buildroot}
 %if %{default_admin} == "YES"
-sed -i "s|ExecStart=/usr/bin/loolwsd --version --systemplate=/opt/lool/systemplate --lotemplate=/opt/collaboraoffice5.0 --childroot=/opt/lool/child-roots --numprespawns=5 --fileserverroot=/usr/share/loolwsd|ExecStart=/usr/bin/loolwsd --version --systemplate=/opt/lool/systemplate --lotemplate=/opt/collaboraoffice5.0 --childroot=/opt/lool/child-roots --numprespawns=5 --fileserverroot=/usr/share/loolwsd --admincreds=admin/admin|" loolwsd.service
+sed -i "s|ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.0 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd|ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.0 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd --o:admin_console.username=admin --o:admin_console.password=admin|" loolwsd.service
 %endif
 %__install -D -m 444 loolwsd.service %{buildroot}%{_unitdir}/loolwsd.service
 install -d -m 755 %{buildroot}/var/adm/fillup-templates
commit 2a32c950aaf3b0c523e97352e0cb890893677d44
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Jun 27 09:15:40 2016 +0200

    loolwsd: let loolwsd.service use the new command line options
    
    (cherry picked from commit e85179e0f8e16aec6cf2963c772c1069ed9ac924)

diff --git a/loolwsd/debian/loolwsd.service b/loolwsd/debian/loolwsd.service
index 112ea8e..5124662 100644
--- a/loolwsd/debian/loolwsd.service
+++ b/loolwsd/debian/loolwsd.service
@@ -4,16 +4,7 @@ After=network.target
 
 [Service]
 EnvironmentFile=-/etc/sysconfig/loolwsd
-#
-# For admin console you have to give admin user name and password
-# with --admincreds=username/password
-#
-# Local Storage is disabled by default. Specify --allowlocalstorage
-# to enable it. Beware! If you specify --allowlocalstorage, all files
-# that can be read by lool user, will be passed to LibreOffice and
-# may be displayed in the browser. This option is only for debugging.
-#
-ExecStart=/usr/bin/loolwsd --version --systemplate=/opt/lool/systemplate --lotemplate=/opt/collaboraoffice5.0 --childroot=/opt/lool/child-roots --numprespawns=5 --fileserverroot=/usr/share/loolwsd
+ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.0 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd
 User=lool
 KillMode=control-group
 Restart=always
diff --git a/loolwsd/loolwsd.service b/loolwsd/loolwsd.service
index 112ea8e..5124662 100644
--- a/loolwsd/loolwsd.service
+++ b/loolwsd/loolwsd.service
@@ -4,16 +4,7 @@ After=network.target
 
 [Service]
 EnvironmentFile=-/etc/sysconfig/loolwsd
-#
-# For admin console you have to give admin user name and password
-# with --admincreds=username/password
-#
-# Local Storage is disabled by default. Specify --allowlocalstorage
-# to enable it. Beware! If you specify --allowlocalstorage, all files
-# that can be read by lool user, will be passed to LibreOffice and
-# may be displayed in the browser. This option is only for debugging.
-#
-ExecStart=/usr/bin/loolwsd --version --systemplate=/opt/lool/systemplate --lotemplate=/opt/collaboraoffice5.0 --childroot=/opt/lool/child-roots --numprespawns=5 --fileserverroot=/usr/share/loolwsd
+ExecStart=/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.0 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd
 User=lool
 KillMode=control-group
 Restart=always
commit b26744742a6e4c0f5291b4a61ae949e96e57e2d8
Author: Andras Timar <andras.timar at collabora.com>
Date:   Mon Jun 27 07:37:04 2016 +0200

    loolwsd: use LOOLWSD_CONFIGDIR and LOOLWSD_CACHEDIR in default config
    
    (cherry picked from commit 8b074036293edf77233df061a2a6fe72849d6a93)

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 550ffff..d887289 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -1215,7 +1215,7 @@ void LOOLWSD::initialize(Application& self)
 
     // Add default values of new entries here.
     static const std::map<std::string, std::string> DefAppConfig = {
-        { "tile_cache_path", "/usr/local/var/cache/loolwsd" },
+        { "tile_cache_path", LOOLWSD_CACHEDIR },
         { "sys_template_path", "systemplate" },
         { "lo_template_path", "/opt/collaboraoffice5.0" },
         { "child_root_path", "jails" },
@@ -1227,9 +1227,9 @@ void LOOLWSD::initialize(Application& self)
         { "loleaflet_html", "loleaflet.html" },
         { "logging.color", "true" },
         { "logging.level", "trace" },
-        { "ssl.cert_file_path", "/etc/loolwsd/cert.pem" },
-        { "ssl.key_file_path", "/etc/loolwsd/key.pem" },
-        { "ssl.ca_file_path", "/etc/loolwsd/ca-chain.cert.pem" },
+        { "ssl.cert_file_path", LOOLWSD_CONFIGDIR "/cert.pem" },
+        { "ssl.key_file_path", LOOLWSD_CONFIGDIR "/key.pem" },
+        { "ssl.ca_file_path", LOOLWSD_CONFIGDIR "/ca-chain.cert.pem" },
         { "storage.filesystem[@allow]", "false" },
         { "storage.wopi[@allow]", "true" },
         { "storage.wopi.host[0][@allow]", "true" },
commit df71566ee757071f0f1798e577f33ccefaa6dc5f
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sun Jun 26 16:36:19 2016 -0400

    bccu#1909 - loolwsd command line options vs. config file and package upgrades
    
    Unit tests updated with new command-line arguments.
    
    Change-Id: I1a391255c44d4d22b8304129634ef7d16b606bce
    Reviewed-on: https://gerrit.libreoffice.org/26683
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit e8cd9e35d3628ffb6689a4b40e5171cb7f6be8dc)

diff --git a/loolwsd/test/run_unit.sh.in b/loolwsd/test/run_unit.sh.in
index 1d590b1..91029e0 100755
--- a/loolwsd/test/run_unit.sh.in
+++ b/loolwsd/test/run_unit.sh.in
@@ -47,10 +47,12 @@ echo > $test_output
 
 if test "z$tst" == "z"; then
      echo "executing external tests"
-     ${abs_top_builddir}/loolwsd --systemplate="$systemplate_path" \
-                                 --lotemplate="$lo_path" \
-                                 --childroot="$jails_path" \
-                                 --allowlocalstorage > "$tst_log" 2>&1 &
+     ${abs_top_builddir}/loolwsd --o:sys_template_path="$systemplate_path" \
+                                 --o:lo_template_path="$lo_path" \
+                                 --o:child_root_path="$jails_path" \
+                                 --o:storage.filesystem[@allow]=true \
+                                 --o:admin_console.username=admin --o:admin_console.password=admin \
+                                 > "$tst_log" 2>&1 &
 
      echo "  executing test"
 
@@ -74,11 +76,11 @@ if test "z$tst" == "z"; then
 
 else # newer unit tests.
     echo "Running $tst | $tst_log ...";
-    if ${abs_top_builddir}/loolwsd --systemplate="$systemplate_path" \
-                                   --lotemplate="$lo_path" \
-                                   --childroot="$jails_path" \
-                                   --allowlocalstorage \
-                                   --admincreds="admin/admin" \
+    if ${abs_top_builddir}/loolwsd --o:sys_template_path="$systemplate_path" \
+                                   --o:lo_template_path="$lo_path" \
+                                   --o:child_root_path="$jails_path" \
+                                   --o:storage.filesystem[@allow]=true \
+                                   --o:admin_console.username=admin --o:admin_console.password=admin \
                                    --unitlib=".libs/$tst.so" > "$tst_log" 2>&1; then
         echo "Test $tst passed."
         echo ":test-result: PASS $tst" >> $test_output
@@ -86,9 +88,11 @@ else # newer unit tests.
         cat "$tst_log"
         echo "============================================================="
         echo "Test failed on unit: $tst re-run with:"
-        echo "   $ gdb --args ../loolwsd --systemplate=\"$systemplate_path\" \\"
-        echo "         --lotemplate=\"$lo_path\" \\"
-        echo "         --childroot=\"$jails_path\" --allowlocalstorage --admincreds="admin/admin" \\"
+        echo "   $ gdb ${abs_top_builddir}/loolwsd --o:sys_template_path=\"$systemplate_path\" \\"
+        echo "         --o:lo_template_path=\"$lo_path\" \\"
+        echo "         --o:child_root_path=\"$jails_path\" \\"
+        echo "         --o:storage.filesystem[@allow]=true \\"
+        echo "         --o:admin_console.username=admin --o:admin_console.password=admin \\"
         echo "         --unitlib=\".libs/$tst.so\""
         echo "============================================================="
         echo ":test-result: FAIL $tst" >> $test_output
commit 35f643e58d3d043472fb0d787498343f33d6d6c5
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Jun 25 20:10:48 2016 -0400

    bccu#1909 - loolwsd command line options vs. config file and package upgrades
    
    Removed admin-console creds and allow-local-storage.
    
    Change-Id: If281b6320caee5d28007063591325eb98ba8e01b
    Reviewed-on: https://gerrit.libreoffice.org/26670
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit d281813c06eef8ac00a57ff7de70013619a4f1a1)

diff --git a/loolwsd/FileServer.hpp b/loolwsd/FileServer.hpp
index 2d23a74..7c19e10 100644
--- a/loolwsd/FileServer.hpp
+++ b/loolwsd/FileServer.hpp
@@ -82,8 +82,8 @@ public:
             Log::info("Invalid JWT token, let the administrator re-login");
         }
 
-        const auto user = config.getString("admin_console_username", "");
-        const auto pass = config.getString("admin_console_password", "");
+        const auto user = config.getString("admin_console.username", "");
+        const auto pass = config.getString("admin_console.password", "");
         if (user.empty() || pass.empty())
         {
             Log::error("Admin Console credentials missing. Denying access until set.");
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 469a5b8..550ffff 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -845,6 +845,10 @@ public:
                     }
                 }
             }
+            else
+            {
+                Log::error("Unknown resource: " + request.getURI());
+            }
         }
         catch (const Exception& exc)
         {
@@ -1161,9 +1165,7 @@ std::string LOOLWSD::ChildRoot;
 std::string LOOLWSD::LoSubPath = "lo";
 std::string LOOLWSD::ServerName;
 std::string LOOLWSD::FileServerRoot;
-std::string LOOLWSD::AdminCreds;
 std::string LOOLWSD::LOKitVersion;
-bool LOOLWSD::AllowLocalStorage = false;
 bool LOOLWSD::SSLEnabled =
 #if ENABLE_SSL
     true;
@@ -1252,21 +1254,6 @@ void LOOLWSD::initialize(Application& self)
     AutoPtr<AppConfigMap> pOverrideConfig(new AppConfigMap(_overrideSettings));
     conf.addWriteable(pOverrideConfig, PRIO_APPLICATION); // Highest priority
 
-    // This overrides whatever is in the config file,
-    // which forces admins to set this flag on the command-line.
-    config().setBool("storage.filesystem[@allow]", AllowLocalStorage);
-
-    if (!AdminCreds.empty())
-    {
-        // Set the Admin Console credentials, if provided.
-        StringTokenizer tokens(AdminCreds, "/", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
-        if (tokens.count() == 2)
-        {
-            config().setString("admin_console_username", tokens[0]);
-            config().setString("admin_console_password", tokens[1]);
-        }
-    }
-
     // Allow UT to manipulate before using configuration values.
     UnitWSD::get().configure(config());
 
@@ -1354,15 +1341,6 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
                         .repeatable(false)
                         .argument("port number"));
 
-    optionSet.addOption(Option("admincreds", "", "Admin 'username/password' used to access the admin console.")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("credentials"));
-
-    optionSet.addOption(Option("allowlocalstorage", "", "When true will allow highly insecure loading of files from local storage.")
-                        .required(false)
-                        .repeatable(false));
-
     optionSet.addOption(Option("override", "o", "Override any setting by providing fullxmlpath=value.")
                         .required(false)
                         .repeatable(true)
@@ -1399,10 +1377,6 @@ void LOOLWSD::handleOption(const std::string& optionName,
         DisplayVersion = true;
     else if (optionName == "port")
         ClientPortNumber = std::stoi(value);
-    else if (optionName == "admincreds")
-        AdminCreds = value;
-    else if (optionName == "allowlocalstorage")
-        AllowLocalStorage = true;
 #if ENABLE_DEBUG
     else if (optionName == "unitlib")
         UnitTestLibrary = value;
@@ -1510,18 +1484,13 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
         ChildRoot += '/';
 
     if (FileServerRoot.empty())
-        FileServerRoot = Path(Application::instance().commandPath()).parent().parent().toString();
+        FileServerRoot = Poco::Path(Application::instance().commandPath()).parent().parent().toString();
     FileServerRoot = Poco::Path(FileServerRoot).absolute().toString();
     Log::debug("FileServerRoot: " + FileServerRoot);
 
     if (ClientPortNumber == MasterPortNumber)
         throw IncompatibleOptionsException("port");
 
-    if (AdminCreds.empty())
-    {
-        Log::warn("No admin credentials set via 'admincreds' command-line argument. Admin Console will be disabled.");
-    }
-
     // Create the directory where the fifo pipe with ForKit will be.
     const Path pipePath = Path::forDirectory(ChildRoot + "/" + FIFO_PATH);
     if (!File(pipePath).exists() && !File(pipePath).createDirectory())
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index 42780dd..d82e026 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -43,9 +43,7 @@ public:
     static std::string LoSubPath;
     static std::string ServerName;
     static std::string FileServerRoot;
-    static std::string AdminCreds;
     static std::string LOKitVersion;
-    static bool AllowLocalStorage;
     static bool SSLEnabled;
 
     static
diff --git a/loolwsd/Makefile.am b/loolwsd/Makefile.am
index bcfc07d..896c6cb 100644
--- a/loolwsd/Makefile.am
+++ b/loolwsd/Makefile.am
@@ -140,8 +140,9 @@ run: all @JAILS_PATH@ @SYSTEMPLATE_PATH@/system_stamp
 	@PROTOCOL="http" ; if test "z at ENABLE_SSL@" != "z"; then PROTOCOL="https" ; fi ; \
 		echo "   $$PROTOCOL://localhost:9980/loleaflet/@LOOLWSD_VERSION_HASH@/loleaflet.html?file_path=file://$(abs_top_srcdir)/test/data/hello-world.odt"
 	@echo
-	./loolwsd --systemplate="@SYSTEMPLATE_PATH@" --lotemplate="@LO_PATH@" \
-                  --childroot="@JAILS_PATH@" --allowlocalstorage --admincreds=admin/admin
+	./loolwsd --o:sys_template_path="@SYSTEMPLATE_PATH@" --o:lo_template_path="@LO_PATH@" \
+			  --o:child_root_path="@JAILS_PATH@" --o:storage.filesystem[@allow]=true \
+			  --o:admin_console.username=admin --o:admin_console.password=admin
 else
 
 SYSTEM_STAMP =
diff --git a/loolwsd/loolwsd.xml.in b/loolwsd/loolwsd.xml.in
index 8baa2c8..3399ef8 100644
--- a/loolwsd/loolwsd.xml.in
+++ b/loolwsd/loolwsd.xml.in
@@ -48,4 +48,10 @@
             <host desc="Hostname to allow" allow="false">localhost</host>
         </webdav>
     </storage>
+
+    <admin_console desc="Web admin console settings.">
+        <username desc="The username of the admin console. Must be set."></username>
+        <password desc="The password of the admin console. Must be set."></password>
+    </admin_console>
+
 </config>
commit fcfb3d3cb0109bc93c7d795929b4eee8677eeb8e
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Jun 25 18:03:41 2016 -0400

    bccu#1909 - loolwsd command line options vs. config file and package upgrades
    
    Remove command-line arguments in favor of the config file.
    
    Settings can be overridden using the command-line flag
    --override (or --o) followed by the full XML path=value.
    
    Change-Id: I902a145f4d2bd0256e31a3e70b0382c0261aecc8
    Reviewed-on: https://gerrit.libreoffice.org/26669
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit 6501a21114a9d9f258d96d500ae48af5df29d7ec)

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index e6ab153..469a5b8 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -1270,46 +1270,14 @@ void LOOLWSD::initialize(Application& self)
     // Allow UT to manipulate before using configuration values.
     UnitWSD::get().configure(config());
 
-    if (Cache.empty())
-    {
-        Cache = getPathFromConfig("tile_cache_path");
-    }
-
-    if (SysTemplate.empty())
-    {
-        SysTemplate = getPathFromConfig("sys_template_path");
-    }
-
-    if (LoTemplate.empty())
-    {
-        LoTemplate = getPathFromConfig("lo_template_path");
-    }
-
-    if (ChildRoot.empty())
-    {
-        ChildRoot = getPathFromConfig("child_root_path");
-    }
-
-    if (LoSubPath.empty())
-    {
-        LoSubPath = getPathFromConfig("lo_jail_subpath");
-    }
-
-    if (ServerName.empty())
-    {
-        ServerName = config().getString("server_name");
-    }
-
-    if (FileServerRoot.empty())
-    {
-        FileServerRoot = getPathFromConfig("file_server_root_path");
-    }
-
-    if (NumPreSpawnedChildren == 0)
-    {
-        // Default to 1 child.
-        NumPreSpawnedChildren = getUIntConfigValue(conf, "num_prespawn_children", 1);
-    }
+    Cache = getPathFromConfig("tile_cache_path");
+    SysTemplate = getPathFromConfig("sys_template_path");
+    LoTemplate = getPathFromConfig("lo_template_path");
+    ChildRoot = getPathFromConfig("child_root_path");
+    LoSubPath = getPathFromConfig("lo_jail_subpath");
+    ServerName = config().getString("server_name");
+    FileServerRoot = getPathFromConfig("file_server_root_path");
+    NumPreSpawnedChildren = getUIntConfigValue(conf, "num_prespawn_children", 1);
 
     const auto maxConcurrency = getUIntConfigValue(conf, "per_document.max_concurrency", 4);
     if (maxConcurrency > 0)
@@ -1386,41 +1354,6 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
                         .repeatable(false)
                         .argument("port number"));
 
-    optionSet.addOption(Option("cache", "", "Path to a directory where to keep the tile cache (default: " + std::string(LOOLWSD_CACHEDIR) + ").")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("directory"));
-
-    optionSet.addOption(Option("systemplate", "", "Path to a template tree with shared libraries etc to be used as source for chroot jails for child processes.")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("directory"));
-
-    optionSet.addOption(Option("lotemplate", "", "Path to a LibreOffice installation tree to be copied (linked) into the jails for child processes. Should be on the same file system as systemplate.")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("directory"));
-
-    optionSet.addOption(Option("childroot", "", "Path to the directory under which the chroot jails for the child processes will be created. Should be on the same file system as systemplate and lotemplate.")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("directory"));
-
-    optionSet.addOption(Option("losubpath", "", "Relative path where the LibreOffice installation will be copied inside a jail (default: '" + LoSubPath + "').")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("relative path"));
-
-    optionSet.addOption(Option("fileserverroot", "", "Path to the directory that should be considered root for the file server (default: '../loleaflet/').")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("directory"));
-
-    optionSet.addOption(Option("numprespawns", "", "Number of child processes to keep started in advance and waiting for new clients.")
-                        .required(false)
-                        .repeatable(false)
-                        .argument("number"));
-
     optionSet.addOption(Option("admincreds", "", "Admin 'username/password' used to access the admin console.")
                         .required(false)
                         .repeatable(false)
@@ -1466,20 +1399,6 @@ void LOOLWSD::handleOption(const std::string& optionName,
         DisplayVersion = true;
     else if (optionName == "port")
         ClientPortNumber = std::stoi(value);
-    else if (optionName == "cache")
-        Cache = value;
-    else if (optionName == "systemplate")
-        SysTemplate = value;
-    else if (optionName == "lotemplate")
-        LoTemplate = value;
-    else if (optionName == "childroot")
-        ChildRoot = value;
-    else if (optionName == "losubpath")
-        LoSubPath = value;
-    else if (optionName == "fileserverroot")
-        FileServerRoot = value;
-    else if (optionName == "numprespawns")
-        NumPreSpawnedChildren = std::stoi(value);
     else if (optionName == "admincreds")
         AdminCreds = value;
     else if (optionName == "allowlocalstorage")
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index 248b240..42780dd 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -107,7 +107,8 @@ private:
         }
 
         // Reconstruct absolute path if relative.
-        if (config().hasProperty(property + "[@relative]") &&
+        if (!Poco::Path(path).isAbsolute() &&
+            config().hasProperty(property + "[@relative]") &&
             config().getBool(property + "[@relative]"))
         {
             path = Poco::Path(Application::instance().commandPath()).parent().append(path).toString();
diff --git a/loolwsd/loolwsd.xml.in b/loolwsd/loolwsd.xml.in
index 0bd3383..8baa2c8 100644
--- a/loolwsd/loolwsd.xml.in
+++ b/loolwsd/loolwsd.xml.in
@@ -7,7 +7,7 @@
     <sys_template_path desc="Path to a template tree with shared libraries etc to be used as source for chroot jails for child processes." type="path" relative="true" default="systemplate"></sys_template_path>
     <lo_template_path desc="Path to a LibreOffice installation tree to be copied (linked) into the jails for child processes. Should be on the same file system as systemplate." type="path" relative="false" default="/opt/collaboraoffice5.0"></lo_template_path>
     <child_root_path desc="Path to the directory under which the chroot jails for the child processes will be created. Should be on the same file system as systemplate and lotemplate. Must be an empty directory." type="path" relative="true" default="jails"></child_root_path>
-    <lo_jail_subpath desc="Relative path where the LibreOffice installation will be copied inside a jail." type="path" relative="true" default="lo">lo</lo_jail_subpath>
+    <lo_jail_subpath desc="Relative path where the LibreOffice installation will be copied inside a jail. Set relative to false to prevent expanding the path." type="path" relative="false" default="lo">lo</lo_jail_subpath>
 
     <server_name desc="Hostname:port of the server running loolwsd. If empty, it's derived from the request." type="string" default=""></server_name>
     <file_server_root_path desc="Path to the directory that should be considered root for the file server. This should be the directory containing loleaflet." type="path" relative="true" default="../loleaflet/../"></file_server_root_path>
commit 397bbd4fbf2a2127c59442c31449da53a1799677
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Jun 25 12:31:22 2016 -0400

    bccu#1909 - loolwsd command line options vs. config file and package upgrades
    
    Support overriding config settings via the command-line.
    
    By using --o:name=value (or --override:name=value) the
    setting called 'name' can be replaced by 'value'.
    
    Ex. --o:per_document.max_concurrency=12
    
    The above will override the max_concurrency to 12,
    regardless of what the XML has set.
    
    Change-Id: If7ffa5dcdc9ce2a8d1a89c8203b8ba870cb624ac
    Reviewed-on: https://gerrit.libreoffice.org/26668
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit 8798943f08f9faa33468e9415e396ec77c779a6e)

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 1095570..e6ab153 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -1248,6 +1248,10 @@ void LOOLWSD::initialize(Application& self)
         loadConfiguration(configPath, PRIO_DEFAULT);
     }
 
+    // Override any settings passed on the command-line.
+    AutoPtr<AppConfigMap> pOverrideConfig(new AppConfigMap(_overrideSettings));
+    conf.addWriteable(pOverrideConfig, PRIO_APPLICATION); // Highest priority
+
     // This overrides whatever is in the config file,
     // which forces admins to set this flag on the command-line.
     config().setBool("storage.filesystem[@allow]", AllowLocalStorage);
@@ -1304,10 +1308,10 @@ void LOOLWSD::initialize(Application& self)
     if (NumPreSpawnedChildren == 0)
     {
         // Default to 1 child.
-        NumPreSpawnedChildren = config().getUInt("num_prespawn_children", 1);
+        NumPreSpawnedChildren = getUIntConfigValue(conf, "num_prespawn_children", 1);
     }
 
-    const auto maxConcurrency = config().getInt("per_document.max_concurrency", 4);
+    const auto maxConcurrency = getUIntConfigValue(conf, "per_document.max_concurrency", 4);
     if (maxConcurrency > 0)
     {
         setenv("MAX_CONCURRENCY", std::to_string(maxConcurrency).c_str(), 1);
@@ -1426,6 +1430,11 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
                         .required(false)
                         .repeatable(false));
 
+    optionSet.addOption(Option("override", "o", "Override any setting by providing fullxmlpath=value.")
+                        .required(false)
+                        .repeatable(true)
+                        .argument("xmlpath"));
+
 #if ENABLE_DEBUG
     optionSet.addOption(Option("unitlib", "", "Unit testing library path.")
                         .required(false)
@@ -1482,6 +1491,13 @@ void LOOLWSD::handleOption(const std::string& optionName,
         NoCapsForKit = true;
     else if (optionName == "careerspan")
         careerSpanSeconds = std::stoi(value);
+    else if (optionName == "override")
+    {
+        std::string optName;
+        std::string optValue;
+        LOOLProtocol::parseNameValuePair(value, optName, optValue);
+        _overrideSettings[optName] = optValue;
+    }
 
     static const char* clientPort = getenv("LOOL_TEST_CLIENT_PORT");
     if (clientPort)
diff --git a/loolwsd/LOOLWSD.hpp b/loolwsd/LOOLWSD.hpp
index 8de18e4..248b240 100644
--- a/loolwsd/LOOLWSD.hpp
+++ b/loolwsd/LOOLWSD.hpp
@@ -66,10 +66,37 @@ private:
     void displayHelp();
     Poco::Process::PID createForKit();
 
+    static
+    bool getSafeUIntConfig(Poco::Util::LayeredConfiguration& config, const std::string& name, unsigned int& value)
+    {
+        try
+        {
+            value = config.getUInt(name);
+            return true;
+        }
+        catch (Poco::SyntaxException)
+        {
+        }
+
+        return false;
+    }
+
+    static
+    unsigned int getUIntConfigValue(Poco::Util::LayeredConfiguration& config, const std::string& name, const unsigned int def)
+    {
+        unsigned int value = def;
+        if (getSafeUIntConfig(config, name, value) ||
+            getSafeUIntConfig(config, name + "[@default]", value))
+        {
+            return value;
+        }
+
+        return def;
+    }
+
     /// Reads and processes path entries with the given property
     /// from the configuration.
     /// Converts relative paths to absolute.
-    //TODO: Move to a better namespace.
     std::string getPathFromConfig(const std::string& property) const
     {
         auto path = config().getString(property);
@@ -88,6 +115,10 @@ private:
 
         return path;
     }
+
+private:
+    /// Settings passed from the command-line to override those in the config file.
+    std::map<std::string, std::string> _overrideSettings;
 };
 
 #endif
commit 93a2b3ce261f9a203b22ce949cca753688d5acce
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Jun 25 08:20:56 2016 -0400

    bccu#1909 - loolwsd command line options vs. config file and package upgrades
    
    Default config entries and values are now set before loading
    the config file from disk. This ensures that an upgrade
    to the server with new config entries will not break the
    server when the XML is not upgrade, rather, the server
    will fallback to the defaults when it fails to find the
    entry in the XML.
    
    This, of course, requires adding new entries to the
    default entries every time config entries are changed.
    
    Change-Id: Iac849dc41fc7410a3c9093b0d6e91d96182b86fd
    Reviewed-on: https://gerrit.libreoffice.org/26667
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit 7d4d7f47ac7f4fa0d9d18766b159f06d2f238d53)

diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 09004ca..1095570 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -75,6 +75,7 @@
 #include <Poco/ThreadPool.h>
 #include <Poco/URI.h>
 #include <Poco/Util/HelpFormatter.h>
+#include <Poco/Util/MapConfiguration.h>
 #include <Poco/Util/Option.h>
 #include <Poco/Util/OptionException.h>
 #include <Poco/Util/OptionSet.h>
@@ -1173,6 +1174,18 @@ static std::string UnitTestLibrary;
 
 unsigned int LOOLWSD::NumPreSpawnedChildren = 0;
 
+class AppConfigMap : public Poco::Util::MapConfiguration
+{
+public:
+    AppConfigMap(const std::map<std::string, std::string>& map)
+    {
+        for (const auto& pair : map)
+        {
+            setRaw(pair.first, pair.second);
+        }
+    }
+};
+
 LOOLWSD::LOOLWSD()
 {
 }
@@ -1196,12 +1209,43 @@ void LOOLWSD::initialize(Application& self)
         throw std::runtime_error("Failed to load wsd unit test library.");
     }
 
+    auto& conf = config();
+
+    // Add default values of new entries here.
+    static const std::map<std::string, std::string> DefAppConfig = {
+        { "tile_cache_path", "/usr/local/var/cache/loolwsd" },
+        { "sys_template_path", "systemplate" },
+        { "lo_template_path", "/opt/collaboraoffice5.0" },
+        { "child_root_path", "jails" },
+        { "lo_jail_subpath", "lo" },
+        { "server_name", "" },
+        { "file_server_root_path", "../loleaflet/../" },
+        { "num_prespawn_children", "1" },
+        { "per_document.max_concurrency", "4" },
+        { "loleaflet_html", "loleaflet.html" },
+        { "logging.color", "true" },
+        { "logging.level", "trace" },
+        { "ssl.cert_file_path", "/etc/loolwsd/cert.pem" },
+        { "ssl.key_file_path", "/etc/loolwsd/key.pem" },
+        { "ssl.ca_file_path", "/etc/loolwsd/ca-chain.cert.pem" },
+        { "storage.filesystem[@allow]", "false" },
+        { "storage.wopi[@allow]", "true" },
+        { "storage.wopi.host[0][@allow]", "true" },
+        { "storage.wopi.host[0]", "localhost" },
+        { "storage.wopi.max_file_size", "0" },
+        { "storage.webdav[@allow]", "false" },
+    };
+
+    // Set default values, in case they are missing from the config file.
+    AutoPtr<AppConfigMap> pDefConfig(new AppConfigMap(DefAppConfig));
+    conf.addWriteable(pDefConfig, PRIO_SYSTEM); // Lowest priority
+
     // Load default configuration files, if present.
-    if (loadConfiguration() == 0)
+    if (loadConfiguration(PRIO_DEFAULT) == 0)
     {
         // Fallback to the default path.
         const std::string configPath = LOOLWSD_CONFIGDIR "/loolwsd.xml";
-        loadConfiguration(configPath);
+        loadConfiguration(configPath, PRIO_DEFAULT);
     }
 
     // This overrides whatever is in the config file,
commit 566d4da55d2c89a91ecdd4dc993bbb4c247e288c
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sat Jun 25 08:19:54 2016 -0400

    loolwsd: disable webdav in config and add defaulting comment
    
    Change-Id: Id79263c8a9190d294868249e61c747d1454cddf5
    Reviewed-on: https://gerrit.libreoffice.org/26666
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>
    (cherry picked from commit 08324536499528414a05015b44e620b37a45b60d)

diff --git a/loolwsd/loolwsd.xml.in b/loolwsd/loolwsd.xml.in
index 96c80dc..0bd3383 100644
--- a/loolwsd/loolwsd.xml.in
+++ b/loolwsd/loolwsd.xml.in
@@ -1,6 +1,7 @@
 <config>
 
     <!-- Note: 'default' attributes are used to document a setting's default value as well as to use as fallback. -->
+    <!-- Note: When adding a new entry, a default must be set in WSD in case the entry is missing upon deployment. -->
 
     <tile_cache_path desc="Path to a directory where to keep the tile cache." type="path" relative="false" default="@LOOLWSD_CACHEDIR@"></tile_cache_path>
     <sys_template_path desc="Path to a template tree with shared libraries etc to be used as source for chroot jails for child processes." type="path" relative="true" default="systemplate"></sys_template_path>
@@ -44,7 +45,7 @@
             <max_file_size desc="Maximum document size in bytes to load. 0 for unlimited." type="uint">0</max_file_size>
         </wopi>
         <webdav desc="Allow/deny webdav storage. Mutually exclusive with wopi." allow="false">
-            <host desc="Hostname to allow">localhost</host>
+            <host desc="Hostname to allow" allow="false">localhost</host>
         </webdav>
     </storage>
 </config>


More information about the Libreoffice-commits mailing list