Commit graph

1929 commits

Author SHA1 Message Date
Ashod Nakashian
d8cddcea06 wsd: lastFileModifiedTime -> modifiedTime
The SaveManager is responsible for the file on disk.

Change-Id: I92f7843375fdc875bc7d1af3fba387f67a4f0ca5
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-13 13:25:36 -05:00
Ashod Nakashian
d806353af1 wsd: move lastFileModifiedTime into SaveManager
Change-Id: Ic3dd4f193e1676a47288bc77e75f6643438bafc7
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-13 13:25:36 -05:00
Ashod Nakashian
76be0d562b wsd: move save tracking into SaveManager
Change-Id: Ic98cc50469f1e25bb2e007554e1d9d42e020dc91
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-13 13:25:36 -05:00
Ashod Nakashian
ea96f43df9 wsd: introduce SaveManager
The SaveManager is responsible for the document's
save state. It also encapsulates the members
necessary to track the save state and related
data.

Change-Id: I3ed0f1d93f25988b1ad8b1a121a2080288866a53
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-13 13:25:36 -05:00
Tamás Zolnai
d0deb5eaa0 wsd: filter-out redundant 'formfieldbutton' messages.
Signed-off-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Change-Id: I37834c63631fa44c9d37c9e1a4d448c1fef68c9e
2021-02-10 16:51:30 +01:00
Ashod Nakashian
bafcc98285 wsd: support FileUrl
Change-Id: I433b5f79956be9d8557df1a1f433a99d6ae10f65
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-09 10:45:37 -05:00
Ashod Nakashian
ec58e833e8 wsd: refactor downloadStorageFileToLocal
Prepare to support FileUrl.

Change-Id: I0ac4eccb937653ba86e74c2e6cecb7ddd5dd4ffe
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-09 10:45:37 -05:00
Ashod Nakashian
f7d61ae0d3 wsd: remove single-use member
And a couple of const cases.
The removed const is to allow move on return.

Change-Id: I7a81b531e75c39379871f5ffeb82d49ba1110ab1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-09 10:45:37 -05:00
Aron Budea
c4faeb049b wsd: tweak SSL logging
Signed-off-by: Aron Budea <aron.budea@collabora.com>
Change-Id: I4e1e4f99cd2ac3d21b9426602de11e10bdd47a61
2021-02-06 21:43:03 +01:00
Ashod Nakashian
2304b52587 wsd: correct assertion on storage and not tilecache
We already access _storage before the assertion,
so it must move before the first use.

Also, we have no use for _tileCache when uploading,
so no point in asserting its validity here.

Change-Id: I4196d0719e6750cfd2dba8d5f449a1b76286bde9
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-31 22:20:59 -05:00
Ashod Nakashian
8a37738fdb wsd: documentation of DocumentBroker states
This details the design of the DocumentBroker
states and state-machines as they are to be
eventually implemented. Not everything described
is current, but the goal is to document what
the design ought to be, not what it is.

Change-Id: I938177812777af058b46c41a396407d0a083cbc4
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-31 22:20:59 -05:00
Ashod Nakashian
aba6d5b6c5 wsd: log at info level when we force uploading
Change-Id: Ic6da7e2c0f29ddbf5884b75866794609f69f8a8f
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-31 22:20:59 -05:00
Ashod Nakashian
523cfec790 wsd: save -> upload
Change-Id: I08445bd9f726225809c443f4bdfc611bbfc03bf6
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-31 22:20:59 -05:00
Ashod Nakashian
30f7ea2e9a wsd: remove default arguments of uploadToStorageInternal
Only the last argument (force) was implicit, and only
in one call (of total two calls). Explicit is better.

Change-Id: Ic26f4dd265f48156d1730f1b95bb70145ca47873
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-31 22:20:59 -05:00
Ashod Nakashian
2b96bf3fd6 wsd: move the loaded flag into DocumentStatus
The loaded flag is used to track whether or not
the document was ever loaded. It does *not* reflect
whether or not the document is currently loaded,
rather it is used to save the document, if necessary,
before unloaded.

This is why we need to track it as a separate boolean,
rather than implicitly tracking this state via the
DocumentState enum, which would not be able to
differentiate between a failed-to-load state and
one of a normal end-of-life, after loading.

Change-Id: I1fc3fb09c31cadf7ebb6b0123e462e78dd0af356
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-29 09:22:36 -05:00
Ashod Nakashian
048c468caa wsd: move the markToDestroy flag into DocumentStatus
The markToDestroy flag tracks whether or not the
document is in the process of being unloaded.

Change-Id: I8f2339f75ed6d7c5d318eb1d467d6a9cbc1d61c2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-29 09:22:36 -05:00
Ashod Nakashian
1041346928 wsd: move the closeRequested flag into DocumentStatus
The closeRequested flag tracks owner termination.

Change-Id: I91d7491396cd8db6ca493ba8015a5310c361a2f3
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-29 09:22:36 -05:00
Ashod Nakashian
ca0c2a24cc wsd: introduce DocumentState class
DocumentState is responsible for tracking
the state of the document, properly documenting
the different stages of the document lifetime
and encapsulating all the relevant members.

DocumentState is still unused in this commit.

Change-Id: Ic2c8de3a9f2d42c5550c5f4ad5f889040f697890
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-29 09:22:36 -05:00
Ashod Nakashian
b4dd9f82a3 wsd: saveToStorageInternal -> uploadToStorageInternal
Change-Id: I0273314d65ebee91092a883bebeb53ab31051194
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-26 21:40:59 -05:00
Ashod Nakashian
f14034584f wsd: saveAsToStroage -> uploadAsToStorage
Change-Id: I6edbff6da6b2c29000c0a66524266138aeb88b89
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-26 21:40:59 -05:00
Ashod Nakashian
ed1e08662a wsd: saveToStorage -> uploadToStorage
Change-Id: Ie00728ca81d481676ae3a3c44d8d79e80ee29278
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-26 21:40:59 -05:00
Ashod Nakashian
a176213750 wsd: lastStorageSaveSuccessful -> lastStorageUploadSuccessful
Change-Id: I71618e388f44ac7b74f295c8af5d0235b395fe87
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-26 21:40:59 -05:00
Ashod Nakashian
7a9dc03e46 wsd: DocumentBroker documentation
Change-Id: Iaacb2bb961719e23ef0e955587d70f38ef5ce464
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-26 21:40:59 -05:00
Andras Timar
92f44a4695 On-disk cache was removed long ago, clean-up in packaging
Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: I2eeaed12af6ac8789151b95a9c2a2aa1fd72573b
2021-01-26 21:10:50 +01:00
Tor Lillqvist
b92e13de96 Add an ERROR message from client to server that is logged with LOG_ERR()
Change-Id: If9f3316bb07f68b609c96135227a3e06a1112786
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-26 15:24:08 +02:00
Tor Lillqvist
e60f972b05 Correct description of handling of the DEBUG message from the client
Change-Id: I19fd4ed92315908af36362368ee2fdbc8558c2ae
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-26 14:38:46 +02:00
Tor Lillqvist
cb63bb6bed Log the DEBUG messages from client with LOG_DBG and not to stderr
Change-Id: I4fbb05b3b703ebcd1221faafd1ab3e33a1f8f144
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-25 14:24:43 +02:00
Ashod Nakashian
21b1a54d00 wsd: access _isLoaded member via getter
This prepares for moving this flag into
the upcoming state machine.

Change-Id: I0fa0e26f72a8f4da6813c3be6df5b16a94773591
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-23 23:55:43 +00:00
Ashod Nakashian
c12313676e wsd: cosmetic
Change-Id: Ie0df45003a0d4221c4e03ad093229cb703e6bf3a
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-23 23:55:43 +00:00
Ashod Nakashian
f038204021 wsd: load -> download
To differentiate between the different stages
of document lifecycle, fetching documents
from the storage is now called 'download',
as opposed to the previous 'load', which is
reserved to loading document in Core.

This is a cosmetic renaming to avoid
confusing usage and intent going forward.

Change-Id: Ib9451e6f73bab19b877a3e6c8fb5b17ba82a06ab
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-23 23:55:43 +00:00
Michael Meeks
f4008cd979 clipboard: give a more explicit clustering error earlier.
Change-Id: I3050fd5f9e66174ece03620e956ee394684f369f
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2021-01-15 09:31:22 +00:00
Ashod Nakashian
18446d63cf wsd: test: don't report test timeout outside of tests
Change-Id: I6c5042578a3b718e2305139c0e4ea390b4a43ed3
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 22:03:29 -05:00
Ashod Nakashian
307900ef9f wsd: misc and cosmetics
Change-Id: I407a20af9297278bdfd06ef3587cdb1d5fff0195
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 16:24:29 -05:00
Ashod Nakashian
6713c2a8d5 wsd: avoid reading the config entry more than once
This code is executed regularly, at every poll.
The config getter internally throws exceptions,
catches and handles, before returning. While
this isn't performance sensitive, it is noisy
to have such poor-behaving code executed
frequently and regularly.

But the real motivation is the pain this exception
causes when debugging an exception. GDB ends up
catching this rogue exception, which is hardly
useful or helpful.

At any rate, we don't need to get a config entry
more than once, as they can't change during the
lifetime of the process.

Change-Id: Ic69fb94674b74b298987131d44d9baa27e9fa4aa
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 16:24:29 -05:00
Ashod Nakashian
06c5c90dd5 wsd: test: support SSL in classic tests
Add support for configuring the SSL certificates
when running the test binary as well as setting
up the SSL context.

Also adds the SSL socket headers with proper
compile-time guards for when SSL is disabled.

Change-Id: I99992639a66a64871f8ff8a2b2105279ead63ca1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 08:07:06 -05:00
Ashod Nakashian
feac95ab77 wsd: test: shorter poll interval during tests
Technically, the poll interval should be
irrelevant because the tests should wakeupWorld
when they need to break the poll. However, it
turns out that many tests implicitly rely on
the poll interval to be large, and if for
any reason the poll wakes up, the tests either
advance their phase too soon, or assert, causing
random failures and reliability issues.

As the tests should now be more robust (at
least the ones that were non-deterministic
in this way), we can now lower the interval
to catch other cases (either extant or in the
future).

Change-Id: Id0d472e70875db8669bb21c6582b0d5052b19bfb
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 08:07:06 -05:00
Ashod Nakashian
1fb968ac08 wsd: test: remove redundant wakeupWorld and log the exit status
And introduce passTest and failTest to log a reason
and be more informative when reading logs.

Change-Id: I5090793b802a29135de8ea3783a457e189cc7df3
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-13 08:07:06 -05:00
Ashod Nakashian
07cf0d52ef wsd: default UserFriendlyName if missing
While UserFriendlyName is an optional field
in the WOPI protocol, Core needs it for
the Author of the document. When it's blank
the Author is not set and the document fails
to load.

By default we are at least able to load the
document with a sensible placeholder for the
Author. Meanwhile, we log a warning to let
the integrators know of the issue.

Documentation updated.

Change-Id: I4dd2c9d164b4d889f85701a4a27ee8d395bff220
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-11 22:07:21 -05:00
Henry Castro
722a152caa wsd: disable setting "SAL_LOG" in "DEBUG" mode
The development environment is necessary analyse
the logs, so disable setting SAL_LOG instead to
add a parameter to already a long list of options

Change-Id: Id8e4a66e1dcb32c636806e47e1d69270af4c53f5
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-01-11 08:15:39 -04:00
Ashod Nakashian
e8a5b4843c wsd: UploadResult cleanup
A minor cleanup of UploadResult to make tidy
it up a little bit and make it less specific.

Single-argument constructors should be explicit
to avoid unexpected conversion and other surprises.

Change-Id: I57599805743dffddac620f501dc6ca79c2217f89
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-01-10 11:13:27 -05:00
Michael Meeks
234962dc79 Remind admins of the costs of high log levels.
Change-Id: Ie83ec794eb0962b6ecf3f1f7b201390d19fb0958
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2021-01-04 17:39:45 +00:00
Michael Meeks
317dffb817 Optimize copy of jails to hard-linking with new capability.
In some cases we cannot do a fast bind-mount of the files we want
in our jail since we don't have cap_sys_admin for loolmount inside
eg. docker.

Thus we need to fallback to hard-linking, however various security
systems namespace parts of our tree, such that link() fails with
EXDEV even across the (apparently) same file-system.

As such we need to assemble a copy of what we want to hard-link
close to our jails. However, this needs to be owned by root / the
system to avoid having writable files shared between jails. Hence
we need cap_chown in addition to cap_fowner, to get ownership right
and then hard-link.

Change-Id: Iba0ef46ddbc1c03f3dc7177bc1ec1755624135db
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2021-01-04 15:05:36 +00:00
Ashod Nakashian
01138d7ae0 wsd: save errno before invoking any other functions
Most C and Posix API clobber errno. By failing to save
it immediately after invoking an API we risk simply
reporting the result of an arbitrary subsequent API call.

This adds LOG_SYS_ERRNO to take errno explicitly.
This is necessary because sometimes logging is not done
immediately after calling the function for which we
want to report errno. Similarly, log macros that log
errno need to save errno before calling any functions.
This is necessary as the argements might contain calls
that clobber errno.

This also converts some LOG_SYS entries to LOG_ERR
because there can be no relevant errno in that context
(f.e. in a catch clause).

A couple of LOG_ macros have been folded into others,
reducing redundancy.

Finally, both of these log macros append errno to the
log message, so there is little point in ending the
messages with a period.

Change-Id: Iecc656f67115fec78b65cad4e7c17a17623ecf43
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-29 11:40:17 +00:00
Ashod Nakashian
0072a4080e wsd: test: log timeout better
Change-Id: I3643a2bad8611d1f6402615435295717eb2e93c1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-28 12:04:53 -04:00
Ashod Nakashian
693a2e19e3 wsd: SocketPoll::poll accepts chrono duration
Cleans up some of the conversions and implicity
unit in integral types.

Change-Id: I79f35b92f8f631894e55bdb39851b050870fce96
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-22 11:24:13 -05:00
Ashod Nakashian
13d7d23cbe wsd: use chrono for readability and conversion safety
Change-Id: If5d478605fef0199b331d91310673a460e70d48e
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-22 11:24:13 -05:00
Ashod Nakashian
693ac2fa52 wsd: logs and const
Change-Id: Id7e4f81ab9709b62eddfa747479ab593a5ad45a2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-22 11:24:13 -05:00
Miklos Vajna
f77c8076a7 wsd: fix crash on renderfont when the doc broker has no tile cache
Happens when renderfont is called without first loading a document.

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: I1152d1f4b3f610364e22c406cda5494672f20aed
2020-12-21 10:23:56 +01:00
Michael Meeks
e5b2d3381f Check ENABLE_DEBUG conditional correctly.
Avoiding some debug code ending up in the product.

Change-Id: If37b2986f134986a33b9dd5b4729b50c56cbc248
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2020-12-10 11:53:02 +00:00
Miklos Vajna
8b0ab31864 WopiStorage: fix uninitialized reads
Change-Id: I603a5205f111b7c8f99baecd6ed482fc9502a6d5
Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
2020-12-10 09:35:25 +01:00
Ashod Nakashian
583c627a66 wsd: avoid single-character strings
Change-Id: I709e8e797bc5e68984823d8c46c590e109d23f18
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-09 17:19:58 +01:00
Ashod Nakashian
a26d587760 killpoco: use standard data types where possible
Change-Id: I723797be18f6eba1e494639f5698c0d8d9a665bc
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-09 17:19:58 +01:00
Ashod Nakashian
8298fdb2d6 wsd: cosmetic and consts
Change-Id: Ibb4bb7c527f68786bd6288b407008a3e3a7b2e17
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-09 17:19:58 +01:00
Ashod Nakashian
a76375234d wsd: remove unsused return values
Saving documents to storage also logs and broadcasts
the result to the users. Return values from these
functions are ignored, and anyway not actionable.

Change-Id: Iaf0dab9c6ac8c593e4df292c71fcb30e8b6d7eeb
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-09 17:19:58 +01:00
Gabriel Masei
99c9ac1723 wsd: allow different UI mode for different views
Signed-off-by: Gabriel Masei <gabriel.masei@1and1.ro>
Change-Id: Icad28de7a75a6392cafb4fd3385e564616ece499
2020-12-09 15:46:24 +01:00
Ashod Nakashian
ba4e52e7b9 wsd: log: overload chrono duration to simplify logging
Also, makes the logging of units much less error prone.

The overloaded streaming operators are temporary as
they are provided in C++20. The ones here (though
incomplete) are fashioned after the C++20 specs.

Change-Id: Ieb499282ccb6e63fa939ba07bed3e5a4fbef1bd0
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-08 09:26:41 +00:00
Ashod Nakashian
47630f826e wsd: use steady_clock for measuring time interval
chrono::system_clock can go back in time.
For time interval measurements, where we don't
care about the local time, a monotonic clock
should be used.

This avoids the server uptime jumping around
with daylight saving (or indeed by regular
synchronization with an atomic clock), among
other cases.

Change-Id: I09f9b24c82d19439348a2e66cad9e9de7d755208
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-08 09:26:41 +00:00
Ashod Nakashian
4cd460e239 wsd: avoid chrono::duration<double>
While chrono supports double as a datatype, it
is opaque and doesn't lend itself to any obvious
units of time (presumably seconds). Using
chrono::milliseconds is much more readable and
also safe when converting from seconds or any
other units. Ultimately, we typically convert
to milliseconds anyway, mostly for logging.
There is but one exception where we convert
in seconds, and now that case is documented.

Change-Id: Ide98f45f2ad8da8225d41ae870bbc4bc09a2a0b5
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-08 09:26:41 +00:00
Ashod Nakashian
90f79998fb wsd: convert limitLifeSeconds from int to chrono
No advantage in using int when chrono handles
conversion and comparisons transparently for us.

Change-Id: Idc942e7a2557ef979d876f378cf6bb84d3e657cd
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-08 09:26:41 +00:00
Ashod Nakashian
6574fbd881 wsd: use chrono datatypes as much as possible
std::chrono handles unit conversion handsomely
and where there could be logical errors, the
compiler errors out. We only ever need to
use raw integer or double values to interface
C functions and possibly for IO.

Change-Id: I5c2b43c36bd69840f1a4172e9898666c4d68c567
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-12-08 09:26:41 +00:00
Gökay Şatır
8b937cfc14 Rename _channelName to channelName.
Change-Id: Ib0fe1f7cfcff4747cd8c0a520204fcf36410d546
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
2020-12-07 17:30:51 -05:00
Gökay Şatır
cdd10066df AdminConsole: Additional changes based on reviews.
Change-Id: I277d9179a84dc34aae9770a07a3a72d35a24a0a6
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
2020-12-07 17:30:51 -05:00
Gökay Şatır
b51413c0a0 Admin console: Cosmetic changes and documentation.
Change-Id: I977b5bc56f44c44b8bedf9f9bd710e7050fe67ff
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
2020-12-07 17:30:51 -05:00
Gökay Şatır
ace1c23a99 Admin console log levels.
Now chosen log level is propagated to forkit and kits.
Also, admin console users can filter logs according to their channel names on client side.

Change-Id: Ife15a6148ed87533b81e9d63da252c633e74e559
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
2020-12-07 17:30:51 -05:00
Michael Meeks
c069f72c4d Socket - re-work disposition to ensure we transfer sockets.
A number of call-sites, eg. clipboard, or admin-ws were
writing to sockets assuming they could return all the data
in a single series of writes, without needing to poll. As
such they failed to addSocketToPoll on the new poll - eg.
the docBroker. Unfortunately this meant that on EAGAIN
writes, the socket would be closed and the last parts
of a message lost.

Browsers would give net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)

The situation is/was intermittent, so painful to debug.
On under-loaded developer machines, socket buffers are larger,
so this was seldom seen.

The re-factor forces a transfer to another SocketPoll via
the disposition, except for a couple of corner cases.

Change-Id: I2f1b2f99f179c4fda84464c9241fe434fa527725
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2020-12-07 14:32:43 +00:00
Ashod Nakashian
0704514730 wsd: label storage operations as upload and download
Using "load" and "save" in the storage was a poor
choice of verbs, in hindsight, because these very
same verbs are also used to describe the loading
and saving of documents in Core.

It is more appropriate to label the storage
operations as download and upload, respectively,
to avoid any confusion. This is especially useful
because when reporting we have for some time now
been reporting the results of each of these
stages separately, there is no longer reason
to label them the same.

We already used "upload" and "download" in
some of the logs, but not all.

Change-Id: I0fac9130032e2c3c6dfb4d671c31130265091f0d
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-30 18:46:46 -05:00
Ashod Nakashian
3f2ae319c9 wsd: make session in the upload details weak_ptr
Change-Id: I9e25526333977ada276f59f2e7e33a20dd27f924
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-30 18:46:46 -05:00
Ashod Nakashian
4162803e64 wsd: extract storage saving reponse handling
This is in preparation for asynchronous uploading.

Change-Id: I5c9977107b415efd24cbd99c29599b86cfe32933
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-30 18:46:46 -05:00
Ashod Nakashian
0d3a8f77d3 wsd: session is optional to broadcasting doc modification time
The current session is needed only while loading, as it's not
yet in the sessions container. But while saving, broadcasting
to all sessions includes the current session as well, and
we avoid sending duplicate message to the current session.

We also make the broadcast helper a member of DocumentBroker
which simplifies it.

Change-Id: I3bb37cc808d97ba2b772b88474a8c10f7fdff6b7
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-30 18:46:46 -05:00
Ashod Nakashian
06a45e6db9 wsd: extract wopi upload response handling
This is in preparation for asynchronous uploading.

Change-Id: Ibd0ff0fa8edfc08ad2755a45227891ed40e09d1c
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-30 18:46:46 -05:00
Ashod Nakashian
70fa07f22e wsd: log helpful messages when we fail to cache files
Change-Id: Ie228edbcea4dfe83b2bd78c34ec2b4423d64f61c
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-29 19:27:23 -05:00
Ashod Nakashian
0ce2c8f4f4 wsd: reuse file and directory cleanup helpers
Change-Id: I41d681347070245e411e359af57383e323f297ce
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-29 19:27:23 -05:00
Ashod Nakashian
d4857b603b wsd: cleanup temp incoming directories after use
The temporary directories created for convert-to
and insertfile are used only once and should be
cleaned up to avoid clutter.

We also de-poco the temp directory creation as
it doesn't add value and do a bit of cleanup.

Change-Id: Ie1fd5b4749788ff4407f2cc886d405258f65f97a
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-23 21:29:34 -05:00
Ashod Nakashian
fad4222a2a wsd: move convert-to docs into the jail
We now download the convert-to files into the
child-root/tmp directory and then move it into
the jail that will convert it. This way ownership
and cleanup become contained within our child-root
and jail subsystems. This reduces the chances of
leaking convert-to files and simplifies the design.

In addition, we avoid an extra file copy and improve
the security of the convert-to API.

Change-Id: I450c24d0d0dc0da447c8072b0701c3b48d07c81b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-23 21:29:34 -05:00
Ashod Nakashian
f60753a951 wsd: misc cleanup
Change-Id: Ief6cbc40ef2f7d98b0b76477109332676dab45b2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-22 22:26:36 -05:00
mert
5418b4b19b Make AutoSpellChecking option state remembered on first start
Change-Id: I25823025e35ba6f580b03834979fb0bea616bcc1
Signed-off-by: mert <mert.tumer@collabora.com>
2020-11-17 14:55:31 +03:00
Gleb Popov
f7faaad790 Replace all __linux in CPP conditions with __linux__.
Signed-off-by: Gleb Popov <6yearold@gmail.com>
Change-Id: If3e213b1cf1f3c4ab960276fc6edfb71f9416420
2020-11-17 09:21:45 +00:00
Gleb Popov
78904302da Do not call non-standard std:🧵:id constructor.
Change-Id: I916f7ba28bc9a52fa3c601fd695ff8146c1712a1
Signed-off-by: Gleb Popov <6yearold@gmail.com>
2020-11-16 14:02:23 +00:00
Gleb Popov
3ee1ee0b50 AdminModel.cpp: Fix build with libc++.
Change-Id: I46a5d8a44c9d329d52ef355f228be63b8af06947
Signed-off-by: Gleb Popov <6yearold@gmail.com>
2020-11-16 14:02:23 +00:00
Ashod Nakashian
cb4beaca34 wsd: avoid the using keyword and use C++ size_t
size_t in C and in C++ are not necessarily the same
type. The C++ size_t is in the std namespace. Since
we do include many C headers, and indeed some C++
runtime headers do define size_t for backwards
compatibility, it's easy to mix and match the two
types.

Also, 'using std::size_t;' isn't a great practice,
so removed.

This is not exhaustive, just some low-hanging cases.

Change-Id: I85a36b6fd1acd204274b1869de9bcb94c8b3cf13
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-15 15:41:41 -05:00
Ashod Nakashian
ee0b5203ec wsd: SaveResult final and Result enum class
This makes the code self-documenting and avoids accidental
comparison or assignment of Result variables/values.

Change-Id: I84b8e36aa999191c8704938552b73ddc1c3dc3fc
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-15 13:50:16 -05:00
Ashod Nakashian
2ddc1afb69 wsd: resuse Stat where possible
This replaces Util::getFileTimestamp with
FileUtil::Stat::modifiedTimepoint() and fixes a potential bug:
getFileTimestamp had only 1 second precision (it simply dropped
sub-second data). This could mean that any modifications to a file
within a second could not be detected.

Minor simplifications done where possible and overly long lines
have been reformatted.

This is a non-functional change (except that file modified-time
now supports microsecond precision).

Change-Id: I3606638a86fc3e00c0ad5cb602bdbb2b4651867b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-15 13:50:16 -05:00
Michael Meeks
7a02a8c24e Ensure consistent canonical view id accounting between wsd and kit.
Confusion arose due to separate creation of session, and watermark
property fetch from CheckFileInfo which happens in DocumentBroker::load
which doesn't do a load. This happens in a subsequent 'load url='
message cf. global.js which can then race vs. the session creation.

This causes mis-ordering of another unhelpfully shared Session,
letting the view canonicalization list to get out of sync between
the two processes.

So instead - tell the view it's canonical id. An example of the
problems of trying to share some unclear subset of the Session
class between kit and wsd perhaps.

Change-Id: I63dc30f9a047e3f889fd339b6aaf392b9fef37b9
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2020-11-14 19:56:09 +03:00
Michael Meeks
0d10c2cae8 Set normalized view id for broadcast (ie. slide preview) thumbnails.
Change-Id: Ica5312ae9c7147c8dc969523e28d460348ba2e76
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2020-11-14 19:54:56 +03:00
Miklos Vajna
d7d2bf528e wsd: fix a typo in ClientSession
Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: Ie6d57ec3bc9b70f63b270e50d965ffc14f896969
2020-11-06 09:55:09 +01:00
Miklos Vajna
a4e70f2507 wsd: fix typo: reserverd -> reserved
Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: I736c621723502deceb4f01b005b62c2dfd8c4e37
2020-11-05 12:47:37 +01:00
Ashod Nakashian
8f2ded18da wsd: misc minor cleanup
Change-Id: I39911e6a6b16661173ae69e39d353e517857f282
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-11-02 07:56:03 -05:00
Ashod Nakashian
5f07da1298 wsd: privatize public members
Change-Id: Iab57b946cc29814155fccde9b1fbb0c6697b8c26
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-10-31 15:07:53 -04:00
Andras Timar
f786244a0b Revert "wsd: temporarily avoid race-conditions when creating documents"
This reverts commit 4410c51b3879c9291b465dea3a59c2e65e94c361.
Reason: this issue should be fixed in the integration that caused the
problem in the first place.

Change-Id: Id41eb66979e4c08dd3b9fd6499e01b4690526541
2020-10-30 11:21:43 +01:00
mert
ffaf53d3ef Make Themeing related CSS vars UI Configurable
Change-Id: If6e4096dc37573ff116f218ceb4ca14135820ff7
Signed-off-by: mert <mert.tumer@collabora.com>
2020-10-30 11:20:00 +01:00
Jan Dageförde
d7656402d3 Migrate code to use generic sendError
Signed-off-by: Jan Dageförde <jan.dagefoerde@googlemail.com>
Change-Id: I0a00ea1220f19479eb021538f67b6bda0c59f7ef
2020-10-28 13:12:27 +03:00
Jan Dageförde
7206231ede Rewrite FileServerRequestHandler::sendError to rely on generic sendError
Signed-off-by: Jan Dageförde <jan.dagefoerde@googlemail.com>
Change-Id: Ib19f95868b61fa43375bf4b19372d9f3f68691dd
2020-10-28 13:12:27 +03:00
Ayhan Yalçınsoy
42c56919b3 Remove Poco/TimeStamp.h left-over part-2
Change-Id: I2d5ce91cab57fb0806f4edb7045207cf32de99bb
Signed-off-by: Ayhan Yalçınsoy <ayhanyalcinsoy@pisilinux.org>
2020-10-27 11:56:51 +03:00
Miklos Vajna
eb5c86a4d3 DocumentBroker::saveToStorage: guard against nullptr _storage
This can happen on a 'savetostorage' which is after a failed load.

Change-Id: Iad26bf6415c772c8646a119b0454c202873d6860
Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
2020-10-26 10:57:23 +01:00
Ashod Nakashian
2785b13a13 wsd: temporarily avoid race-conditions when creating documents
As the comment describes, this is a temporary workaround.
The issue happens when nocaps is enabled, no doubt due
to the timing difference from the more common (and default)
caps-enabled case.

Change-Id: I742d7b9fd63f0babe8e1d45b968e09026d78debc
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-10-25 12:20:58 +01:00
Ashod Nakashian
45a065399e wsd: improve wopi upload logging
Change-Id: Iec6c6f2f491266bc2d0b919acc6514c2871a7b7e
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-10-25 12:20:58 +01:00
Ashod Nakashian
d0dc93d910 wsd: better file size utility
std::ifstream's tellg() returns -1 on error.
This is handled very poorly and shows up as ULONG_MAX.

Luckily, we have Stat class that does the same
both more safely and more efficiently.

Without opening the file, we now get the necessary
information unambiguously.

Change-Id: I2448bc71e01b0f166a9dd66aa38a88ea97a50cdd
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-10-25 12:20:58 +01:00
Ashod Nakashian
11c73db905 wsd: announce the log file location
And set the LOOL_LOGFILE envar only when
we have a path.

Change-Id: Ide5144c7e5aec5ddb9a5a6c32538e9e0a3a6ed0b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2020-10-25 12:20:58 +01:00
Jan Dageförde
7aae0ddc4f Simplify another Util::getHttpTimeNow() in headers
Change-Id: Ib2718e1dbcff20cd3fa1e6463287ca512f39efc8
2020-10-24 21:29:28 +03:00
Szymon Kłos
7c7fe41f3a Autosave annotations in pdf
Change-Id: Ic4fb2da63e761b78dedf9f67e0612e90e6d4be87
2020-10-23 14:15:50 +02:00
Ashod Nakashian
8190cf7869 wsd: allow some time between retrying saving
Change-Id: I9d923582057467141a3f4d0b260b982464b60511
2020-10-22 14:40:40 +02:00
Ashod Nakashian
c71998438d wsd: document forced storage saving and remove default args
Change-Id: Ic7fde18f07dfe848e219b4ebba30426277ae1287
2020-10-22 14:40:40 +02:00
Ashod Nakashian
eb377ee8d8 wsd: force saving to storage if the last attempt had failed
When uploading to storage fails, we want to retry on next
save. This works when the document is modified between
the last attempt to upload and the current save.

However, when the document isn't modified (f.e. when unloading
the document) we still need to upload the last version of the
document, so we save the document, but that fails as the
document isn't modified. And so we end up not uploading it.
Actually, it gets worse, because we will keep retrying to
save, because there is nothing else to do when we need to
unload the document (say because it has been idle).

This issue was previously not seen because storage failures
are quite rare. However in certain cases NC with complex
access permission controls does fail fairly frequently,
and this edge-case becomes an issue.

This patch enables forced uploading when the last attempt
had failed, regardless of the state of the current save
result.

Change-Id: I951bf19b62f049547913f490d618be20b6191080
2020-10-20 20:50:30 -04:00
Andras Timar
cd23bb7a6c Use Util::getVersionInfo instead of raw LOOLWSD_VERSION_HASH, because the length of the latter is unpredictable
Change-Id: Iab370375f29590d3c34298499ca156cd63dac564
2020-10-20 23:49:54 +02:00
dilaverdemirel
29251ef432 Replaces Poco::DateTimeFormatter to Util::getHttpTimeNow #207
Change-Id: I49b8d4b2acb0d4bcc719325a28537d45700bebdc
2020-10-20 10:04:44 +02:00
Tor Lillqvist
5642e89ccf Add handling of a "DEBUG" message that is just printed to stderr
This is useful in situations where you can't get at console.log()
output from the JavaScript, like when you are using the Nextcloud iOS
app installed from the App Store and want to debug the loleaflet
offered by a Collabora Online server you are using. You can add code
like

    this._map._socket.sendMessage('DEBUG Foo bar=' + bar);

temporarily to the JavaScript and will see those then in the terminal
where you run 'make run.'

Change-Id: I04c78d86faa283e135dbcb86dac0cabd7b6a0724
2020-10-16 12:28:49 +03:00
Aron Budea
4fd9c0617f wsd: resolve host as fallback for allowed WOPI host check
If IP address was set as allowed in storage.wopi, but its host
name was given in WOPI URI, the host was not resolved, and was
not accepted.

Change-Id: I20655cee8b435c9645d5cfdd102bdae9033fc1ab
2020-10-15 14:30:19 +02:00
Yusuf Keten
d977d13976 port to util::make_unique for wsd
Change-Id: I4fcbd350bd40de5044fdf08ba7e082d89c8e525d
2020-10-15 09:20:42 +02:00
Miklos Vajna
ccc52d83f9 wsd: LOK_WHITELIST_LANGUAGES was removed from new enough core
See core.git commit abb6c01519a0318d7165dc9dc5b7d185353f93d6 (replace
usage of whitelist with allowlist, 2020-07-06).

Change-Id: I04646c63df4de14b9aa7dca02a4d5cec10e5eb67
2020-10-14 12:35:07 +02:00
Alan Verdugo
084a295040 Fixing pycodestyle errors
Change-Id: I5e47613d33f87bfddb1bf3f301d6ea0319f2ec3c
2020-10-12 18:31:14 +03:00
Miklos Vajna
f4a87047b6 document broker, tile combined handling: warn only once without tile cache
Follow-up to commit 3a7a6948f1 (document
broker: handle combined tile request without tile cache, 2020-10-05),
requested at <https://github.com/CollaboraOnline/online/pull/242>.

Change-Id: I57124c64dbf3034de8f43584164572eed8d67f86
2020-10-12 10:20:57 +02:00
Andras Timar
977c27b803 extra logging for debugging convert-to failure
Change-Id: I3e38f5f1a53ba2c06323d70d80118267152f43fe
2020-10-11 14:40:37 +02:00
Miklos Vajna
557b14dabd wsd: fix typo, transfering -> transferring
Change-Id: If3729bf278607d33a9c545219cee7db863f0bc7c
2020-10-09 17:28:18 +02:00
Andras Timar
da7543a9e9 typo: its not -> it's not
Change-Id: I27526e14a44b5cb9fe8ad20b8b94bc6b79839ddd
2020-10-09 12:44:14 +02:00
Michael Meeks
abccea8214 Add a X-LOOL-WOPI-ServerId to help cluster debugging to requests.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: Ib964cb84be2cf31257b7ad59c0afb1f18b586afb
2020-10-09 09:30:41 +01:00
Miklos Vajna
3ce20bae68 DocumentBroker::sendRequestedTiles: avoid nullptr _tileCache
Change-Id: I467c7ca451b4f72f4f1205e965be2dd602d6d69d
2020-10-08 11:59:08 +02:00
Miklos Vajna
11897f2db7 Introduce Util::make_unique()
In the old code, if the evaluation first allocates the memory for the
raw pointer, then calls firstLine() and an exception is thrown before
the std::unique_ptr construction, then the memory is leaked. Using
make_unique() has the benefit of avoiding this problem.

Convert only a single usage, so the remaining places can be done as easy
hacks.

Change-Id: Iaf3d8051a8a0627a57fdf1196bde7d5f8612fcff
2020-10-08 09:53:37 +02:00
Ashod Nakashian
08dc42bdaa wsd: log the exception message
Change-Id: Ie9b9cfe38645809c57cec40afbcccc1da87386e1
2020-10-07 08:50:23 -04:00
Yunus Bulut
e982a8665b Remove WebDAVStorage in Storage.hpp #111
Change-Id: Ic95b7354ed3448c0ae77cae338d8eb2bbc01e4e5
2020-10-07 14:55:26 +03:00
Yunus Bulut
35ad7d4265 Destroy WebDAVStorage and <webdav> section #169
Change-Id: I7ce095f722599a37b82e8789baeb6145028dd10d
2020-10-07 14:55:26 +03:00
Andrea Gelmini
9d01540680 Fix typos
Change-Id: I7d487f32ca43e19023760ef3c6bb1683607f93d1
2020-10-07 12:51:08 +02:00
Henry Castro
5a401b1405 wsd: explicit decode URI
is it a POCO bug?
The implicit decode URI is not working
if a file is "test___á.pdf" <=> "test___%C3%A1.pdf"
getPath() returns "test___%C3%A1.pdf"

Change-Id: I79e2ec13cd5500d188a1657e47af03d29b151824
2020-10-06 16:38:44 -04:00
Henry Castro
af70d3c21a wsd: do not encode to send file when the API is "convert-to"
if a file is "test__á.pdf" and if it is encoded "test___%C3%A1.pdf"
then stat("test___%C3%A1.pdf") is false

Change-Id: I28a5ed90c599b7244f0c3a3d2259d83b25be762f
2020-10-05 10:52:29 -04:00
Henry Castro
d541429ec9 wsd: do not encode the URI if the API is "convert-to"
If it is encoded again, the result file does
not exist.

If a file is "test___á.pdf" and encode again
"test___%C3%A1.pdf"

fileExists("test___%C3%A1.pdf") false

Change-Id: I9fa1b8b52ebf0993158eb6ebe383da53921f640a
2020-10-05 10:48:43 -04:00
Miklos Vajna
3a7a6948f1 document broker: handle combined tile request without tile cache
Similar to commit 2b546f72de (document
broker: handle tile request without tile cache, 2020-09-28), though
sadly I don't have a reproducer for this at hand anymore.

Change-Id: I5b3c2c69d5b5719998b3ce261aafb775d5441c2f
2020-10-05 10:24:02 +02:00
Andras Timar
34bc966d68 change product name
Change-Id: Ic34d324c952364442d3f4f9f0758676ab57c8a9a
2020-10-02 14:18:28 +02:00
Miklos Vajna
7c0d0c35fc ClientSession: simplify by using std::any_of()
Change-Id: I92b284883a633ebe3bf47ea8001f8c18692275a1
2020-10-02 09:28:39 +02:00
Andras Timar
0002fdfd6c fix license headers
Change-Id: I8623770b32d278a45357dc7f757fabfadd2b4af7
2020-10-01 11:56:43 +02:00
Mike Kaganski
8a661a1d38 Add favIconUrl to apps in discovery
Change-Id: If164b0c0b302eb8980f51cf4622377e96ba6d5f9
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99796
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-09-29 09:52:21 +02:00
Andras Timar
f9ff9227b7 fix typo in documentation
Change-Id: I8854a217d0bc0b436cb96235e8d213900fb7f991
2020-09-28 13:03:57 +02:00
Jan Holesovsky
4ad8773821 Make various bits of the UI configurable.
This adds the infrastructure to be able to pass the info which elements
like the statusbar / ruler / sidebar are supposed to be shown or hidden
on startup of the editor.

Change-Id: I188264dec6961074444934ff5fd7088e23b170d4
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/103169
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mert Tumer <mert.tumer@collabora.com>
2020-09-28 11:53:16 +02:00
Miklos Vajna
2b546f72de document broker: handle tile request without tile cache
Change-Id: I5e0006cde07a84e6553db92627fdab943ac51d04
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/103534
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2020-09-28 10:50:46 +02:00
Miklos Vajna
e080b8af04 ClientSession: clean up copy&paste
dialogevent and formfieldevent has the same handler, do that at a single
place.

Change-Id: I4e0f7b36484f6ef65539616c0fe81a331c9caa98
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/103529
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-09-28 09:33:18 +02:00
Miklos Vajna
92543758a7 wsd: mark these functions as static
So that it's more obvious that they don't even read the state of the
object.

Change-Id: I71d39bf3a20989c8fbf3410c2f1d2a98661c49d5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102986
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-09-18 14:05:37 +02:00
Szymon Kłos
87aad0a8bb Decode file name when trying to download file
Simplified download process (ab162b6f9580315700a01c3bc10becd510a2ead4)
introduced a bug. Trying to download file with eg. space in the name
become impossible. This patch decodes the string to fix the issue.

Change-Id: I8e5d98010cf098b889eddcce4ba1ce65367b15d5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102874
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2020-09-16 17:31:59 +02:00
mert
115bb1b652 Fix unable to open password protected documents on mobile
Change-Id: Ifd67cb6f3640784176abfe483f0364c1dfe4b5d9
Signed-off-by: mert <mert.tumer@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102388
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102729
2020-09-15 15:14:40 +02:00
Aron Budea
d876290762 wsd: Don't fail if config item is missing in loolwsd.xml
After upgrading from old versions that didn't include
config.storage.ssl in loolwsd.xml, an exception was thrown
and not caught, and loolwsd failed to start with the following
message: "Not found: storage.ssl.cert_file_path".

Change-Id: Id0ca76632c513c6f5c80797a2c7d20f0173e4b56
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102250
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-09-09 08:55:55 +02:00
Szymon Kłos
70827c372c Simplify download process
Use hash to identify download and pass that to the client.
This allows us to reduce parameters for download requests.
DocBroker maps download ids to URL in the file system.

Change-Id: I254d4f0ccaf3cff9f038a817c8162510ae228bc5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101992
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-09-07 15:00:20 +02:00
Mike Kaganski
05dba7ad86 Restructure discovery to have less apps
The apps are not meant to represent MIME types of respective
single file extensions; rather, they represent application/module
that handles several extensions. So this groups extensions under
modules (writer/calc/...). This is required for some WOPI hosts
that whitelist discovery data on per-app base.

The old list of MIME-type-based apps is kept for compatibility
with existing integrations, until they are fixed to use new-style
discovery. Extensions are removed from legacy part, to avoid
duplicating actions.

This also hardcodes content types, to avoid repeated parsing of
discovery.xml.

lint-discovery.py is updated to process new-style information
(ignores legacy part).

Change-Id: Ib8d3518f00510cd0788314d8a9da9a286a52e0ba
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99637
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-08-27 11:29:12 +02:00
Ashod Nakashian
9f5bd85008 wsd: use a shared threadname suffix for each document
The use of a common threadname suffix in the WSD and Kit
processes is intentional. It is designed to help filter
for a single document's logs across both processes.

The thread name has nothing to do with the classes in
the code, nor is it intended to imply any relationship
except with the process and the document in question.

As the comment in this patch explains, the choice of
the suffix is arbitrary and while it may be changed,
it has to be sensible and common between the two threads
to allow for easy grepping.

Historically, there were in fact dedicated threads
within the respective "broker" classes, but this
fact should be safely ignored, since at the log level
we care less about which part of the code generates a
log entry (that info, if needed, is at the end of each
log entry, in the form of filename and line number),
rather we care more about which document it relates to,
which is crucial in investigating production issues.

Logs and code structure are only incidentally related.
Logs are (or at least should be) designed around
the execution structure, not code architecture.

(This reverts 2a16f34812)

Change-Id: Ic6fe2f9425998824774d2644fe4362e75dea6b88
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101261
Tested-by: Jenkins
Tested-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-08-26 17:47:50 +02:00
Samuel Mehrbrodt
8c602e179e Revert "Revert "Don't update modified status after saving to storage fails""
This reverts commit e83e36bd9b.

Unit test failure was fixed

Change-Id: I2176368278725c1711df3b23eef95de6526c68d5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100859
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-08-24 14:34:10 +02:00
Michael Meeks
cd98388653 Avoid contention on RSA Digest engine.
Change-Id: If9068371c7ab18083d432f8bc582d85c2f85e80e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/101081
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-20 18:11:12 +02:00
Ashod Nakashian
3cf27ee2c2 wsd: minor cosmetics
Change-Id: I9e67cf870c92197a5c53d45f479d8c9f70818049
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100833
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ash@collabora.com>
2020-08-17 14:15:37 +02:00
Tamás Zolnai
e83e36bd9b Revert "Don't update modified status after saving to storage fails"
The reverted change breaks unit-wopi-documentconflict test.

This reverts commit 494a5221f5.

Change-Id: I3e89a6e6526e9388e4dc6a1ea8f8d8832e8cb169
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100678
Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com>
2020-08-13 17:35:02 +02:00
Samuel Mehrbrodt
494a5221f5 Don't update modified status after saving to storage fails
Otherwise client gets a notification that document is unmodified.
This should not happen, as the document in the storage has not been updated
and so it should be considered as modified until saving to storage succeeds.

Change-Id: I6918f97d96a546ce086f622854f4cbeed48d54ae
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100162
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-08-13 09:39:30 +02:00
Ashod Nakashian
c5f9d605e4 wsd: make outgoing connection timeout configurable
The default Poco connection timeout is 60 seconds,
which is probably excessive. The current configurable
default is a more reasonable 30 seconds.

Currently we set this timeout on Storage connections
going out (i.e. WOPI connections).

Change-Id: Ie80a9141ca9bf721addc74baf94e62e0ad72fdd2
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98913
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ash@collabora.com>
2020-08-11 20:11:14 +02:00
Michael Meeks
5544f5669b iOS likes to do extra escaping of an iframe's .src
This yields a relevant Post request of:

slideshow.svg%3FWOPISrc=https:%252F%252Fshare....
slideshow.svg?WOPISrc=https%3A%2F%2Fshare....

Which ends up trying to serve a file with a ?WOPISRC= suffix.
Since we don't want anything 'odd' being served from the file-system
anyway; get a bit more paranoid and clean that up.

Change-Id: I39993e4629b0d01f34098391a0fa448ef8a9984e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100509
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-11 18:13:06 +02:00
Ashod Nakashian
999df3fffb wsd: hashmaps have better data locality
They are especially efficient for small lookups.

Change-Id: Ia005f40127cf222debe185515fc45cd92b8ae752
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100413
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-10 16:00:27 +02:00
Gökhan Karabulut
e2e638c468 tdf#124478: Log maximum file descriptor related limits
The number of available file descriptors in a system limits the number
of documents we can open. We use an fd for client connection, another fd
for communication with a kit process and a wakeup pipe with 2 fds.
Therefore, we are left with the maximum number of fds divided by 4
documents. Out of these documents, reserve 8 (i.e., 32 fds) and log the
remaining number of documents allowed by the system. Note that Online
instance can further configure a limit for the maximum number of open
documents, which is also logged.

Also log the maximum file descriptor allowed by the system, which is the
number of available file descriptors - 1.

Change-Id: I3972690a6c9995e8d74dcfe25fe87b1ef4c33d4b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100393
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-10 12:20:08 +02:00
Michael Meeks
4c6ba6d850 Notify WSD of tiles which we didn't need to render.
When we get a wid match, this helps WSD to cleanup its tile
subscriber list effectively.

Change-Id: I6517039fb3d8c9ad8f53aef549b8adbb79961ce1
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100348
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-07 20:01:40 +02:00
Michael Meeks
1061ac90ce TileCache: cleanup debug, propagate now more helpfully & fix staleness.
Stale tiles were still being counted, unhelpfully. Avoid doing lots
of ::now() calls, and yet detect this.

Change-Id: Ib1e4b2f1968c1994849bb23ec54e28f6706230ee
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/100347
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-08-07 20:01:30 +02:00
gokaysatir
30dfb54ca4 loleaflet: Admin console overview details.
Change-Id: Ia796d457e26a5867547fb4b2b4b78b10c64d7c95
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99689
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Henry Castro <hcastro@collabora.com>
2020-08-07 16:03:39 +02:00
Mike Kaganski
571ef16df8 Implement fake oldvalue/modulus/exponent and X-WOPI-ProofOld
... since these are required in proof-key element as per [MS-WOPI].

Change-Id: Ie770271ee911e3f7822375c00a83c6a32cd5f2fc
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/88743
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-07-28 14:46:02 +02:00
Tomaž Vajngerl
ca00470722 allow saving a PDF, add "view_comment" state
This adds a "view_comment" in addition to "view" and "edit" state
into discovery.xml. In case it is enabled, the filters let the
comment commands through to core.

In addition add "Save Comment" menu action to allow saving the
comments, which is enabled when in "read-only" with "view_comment"
mode.

Change-Id: I3ab3dbee93ee2167ae96adea7025fc0b385f8201
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99473
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-07-27 16:40:12 +02:00
Tomaž Vajngerl
241f134473 Enable comments inserting and deleting when in read-only mode
Change-Id: I5aa3be061a6ef65bbf5d4cb879c4dde97ed31dd5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99017
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-07-20 22:47:00 +02:00
Mike Kaganski
a1fafe27f4 Allow user to try to lock the document for edit
Use mobile-edit-button for that is permitted.

Change-Id: I4d4c3f21d574abae033bacc69def96aaf6b51567
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98786
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-07-20 15:49:09 +02:00
Mike Kaganski
e9c4c0286a Handle failed locking as (temporarily) read-only session
E.g., opening a checked-out document in SharePoint

Change-Id: Ifd5225d8450d7f2f5ba9661f158551c5c16f9b09
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97596
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-07-20 15:47:33 +02:00
Tor Lillqvist
03697b3bb5 The socket inbuffer is not nul terminated
We can't just call strtoul() to parse the number at the end of the
buffer. The buffer might be followed by other digits in memory. In
that case we would get a completely wrong mobileAppDocId which will
lead to a crash or assertion failure.

Change-Id: I71c96323faa2b069009e5eda7a7153148b78094a
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98914
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-16 22:56:47 +02:00
Pranam Lashkari
22359767d6 tdf#129296 leaflet: Password protected document load failing
Do not send faileddocloading error if it is because of password.

When the document is password protected, we send to the client
both passwordrequired and faileddocloading.
These two are handled differently. While the first prompts the
user for password input, the second internally flags fatal error
and shows an error message that the document may be corrupted etc.
The end result is that the document is not loaded and displayed
when the user submits a correct password. To reset the fatal
error one has to reload, which is unhelpful when we need to
provide a password.

This patch makes sure that we only send one error message to
the client. If a password is required, it already implies that
the document didn't load, and that with the proper password we
should try again.
Similarly for when the password given is wrong. However, if
loading fails and it isn't a password-related failure,
faileddocloading error is returned and in this case the client
handles it as a final error (that requires reloading to retry).

Change-Id: I383418fd40b6e0749b20af0ef8dc40f391a05559
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98676
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2020-07-16 19:31:31 +02:00
Miklos Vajna
7b38cf9fce wsd: fix log order in DocumentBroker::sendRequestedTiles()
First log then modify the container.

Change-Id: Ia2bae55562ec6e158c5622cfd25197b6e65584a5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98872
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-07-16 15:45:05 +02:00
Mike Kaganski
2752141867 Restructure ClientSession::_handleInput to check tokens once
This allows to avoid redundancy, and makes it explicit which token
is handled where.

Change-Id: Ibc7ed7617f7f511cb8346e2e82281c3a3fdac9a7
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98821
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-15 14:53:16 +02:00
Tor Lillqvist
d7453ac243 Attempt to fix Android build: endLoadResult() can't be inside #if MOBILEAPP
Also helps the iOS build, but there is another recent change that
broke it more.

Change-Id: If750bfa3e89ee07d97a91996223012e309b0b712
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98811
Tested-by: Tor Lillqvist <tml@collabora.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-15 12:59:31 +02:00
Samuel Mehrbrodt
ce91fa4201 Report back load result to integrator
Integrator currently gets no message when loading the document
from WOPI host fails.

Similiar to Action_Save_Resp, introduce Action_Load_Resp with
the result of the load action.

Change-Id: I3b0f9ee691a1c5d58e9f833d511435a0b25a465f
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98299
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-07-15 09:48:43 +02:00
Tor Lillqvist
e633dd7c5a Make TileCache::_dontCache const
Change-Id: Ic932a836fc47de4b707d0468bafba65eaf5bf86a
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98774
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-14 19:02:37 +02:00
Michael Meeks
6ca6a7649e Forkit: add dump_forkit_state and re-factor state checks to simplify.
Change-Id: Ic65bbd0894f26f69e1b55c769ac47013f9aaf163
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98746
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-07-14 17:28:32 +02:00
Ashod Nakashian
aba09e165b wsd: improved TileCache
* Excised TileCacheDesc to improve performance and simplify code.
* clang-tidy suggestions and auto-rewrite fixes.
* Const-correctness.
* Inlined and improved a couple of trivial functions (that are called
often).
* Reduced some logs from INF to DBG as they are only meaningful to devs.

Change-Id: I1c4eb8c63da49aa061afbf3eb68cae23d4d5e7f3
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98661
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-07-14 15:35:20 +02:00
Tomaž Vajngerl
08d81615e7 add .uno:EditAnnotation as exception when in read-only mode
Change-Id: Ic6cd15973a96d20895a1e0dc47fc33692b09ec92
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98589
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-07-12 19:11:06 +02:00
Samuel Mehrbrodt
20eaab2720 Log number of active sessions
Change-Id: Id161f09bc637e5dcf5ea0beaf11e360de7aa1fa2
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98298
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-07-09 10:25:36 +02:00
Dennis Francis
d1b3f4c6af wsd/kit: use splitx/splity in clientvisiblearea message...
to filter tile-invalidation messages, so that the client gets
invalidations/new tiles for all split panes.

Change-Id: Ifacc452ed6bb43dfd36ff16386fb4a547ec8302b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98362
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
2020-07-08 17:18:33 +02:00
Tor Lillqvist
c0706831b8 Add comment describing what was not a good idea after all for the iOS app
Change-Id: I43c760fa521f6a5860f2ed5dfef816ba5faaf463
2020-07-08 17:35:40 +03:00
Tor Lillqvist
0a2033d688 Bin pointless virtual function that only calls the base class function
Pointless since my own 7f25109f72, so
yeah, I should have noticed then.

Change-Id: Ic34584134ef840b33b874952e0bba8d14d3fde2f
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/98374
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-08 16:30:13 +02:00
Samuel Mehrbrodt
e71e37bcec Improve reporting save results
Change-Id: I3f2f96f4b8f196e6e9268bed24695f739f679124
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97699
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-07-07 15:06:25 +02:00
Dennis Francis
a22392d827 supress clang -Wparentheses-equality for WIF*() spurious case
Change-Id: I213ba6085aa1b662d5a6283cf9d84742bce288e1
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97971
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
2020-07-05 10:09:40 +02:00
Tor Lillqvist
d0672cd2b9 Slight refactoring to make planned re-plumbing of iOS app easier
Change-Id: I274cf167c6593de6f073301f7071f2173b40cbab
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97760
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-03 08:41:02 +02:00
Ashod Nakashian
3cee55872b wsd: minor cleanup
* Use const where possible.
* Remove dead-code (clang-tidy error).
* Don't use hungarian notation.
* Avoid single-use variables (if redundant).
* Declare variables closest to use-site.
* Avoid unecessary temporaries.
* Avoid explicit true/false when the statement is boolean already.

Change-Id: I154dc2a7d4bcbd39f73f42e12a101a7e4eb0fd33
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96378
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-02 21:47:08 +02:00
Mike Kaganski
35f8788e1c Only lock documents in editing sessions
Change-Id: I97753541a944bb299b04c032790d6af7a9ee0f63
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97609
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-07-02 14:21:30 +02:00
Jan Holesovsky
b39017c08c android: Remove unneeded dependency + add some comments.
Change-Id: Idbc271a398f6f0c037d478bda5ee0b149ca4f24f
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97730
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-07-02 11:08:19 +02:00
Ashod Nakashian
4082a462da wsd: admin: don't poll rapidly when cleanup is disabled
When per_document.cleanup is disabled, the time
between the last cleanup (which never happened)
grows indefinitely, which results in minimal
polling time intervals. This wastes valuable
cpu cycles unnecessarily.

When cleanup is disabled, there is no need to
calculate the next cleanup time. The maximum
is reasonable (although it should really be
infinity).

Change-Id: I71d065441c4c2ff96fe31e6a45a5ecfdd2f85d49
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97471
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-02 02:33:25 +02:00
Samuel Mehrbrodt
9f8fdb7bd7 tdf#131123 Report back real save result
665b1629de was not correct, as it reported back
the save result of the internal save (which usually succeeds).
Instead we want to know the save result of the remote storage (WOPI/Webdav).
So report that back instead.

Change-Id: Iaaa42b8c817a19c2c77935a6f81c1951fdf2216c
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97637
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-07-01 17:57:53 +02:00
Tor Lillqvist
9e8ddfc0c1 Don't call JailUtil::cleanupJails() on MOBILEAPP
Change-Id: I7a01ff9afaccb6e3f4b399a12d828c8d44bcb4c2
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97612
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-01 16:43:56 +02:00
Jan Holesovsky
22e2f50f55 android: Make the documents open again.
The files stopped opening after
5c9988f2e3, but just avoiding the new
Jails stuff seems enough to fix it.

Change-Id: I4c3be058dd24e9500f64c240571f0e76a17ac8b8
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97608
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-07-01 16:43:09 +02:00
Michael Meeks
d4fa74916c Unconditionally display & log version on start & in dumpState.
Hopefully makes our logs generally much more useful.

Change-Id: I6e7a96792e322fc40eb7dda1aa16a2a4ada07df6
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97615
Tested-by: Jenkins
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-07-01 15:15:19 +02:00
Mike Kaganski
6de63613fb Improve logging failed lock request using X-WOPI-LockFailureReason
Change-Id: Ia521422d033861cd002e7eb2123ccc18e9cd0071
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97555
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-07-01 08:09:34 +02:00
Ashod Nakashian
e93f7039c1 wsd: anonymize the filename only when anonymization is enabled
Change-Id: I0649788d38492b66aeb9cc4716dcbd23cd76cb4e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97190
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:42:46 +02:00
Ashod Nakashian
a77208ddfb wsd: prefer emplace_back where possible
emplace_back avoids copy-construction when
the argument is a temporary instance created
at call-site.

Change-Id: I127fddd308d710af9ea65a86db1b03347e9c3d87
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96829
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:40:54 +02:00
Ashod Nakashian
02da27a436 wsd: improve readability
Change-Id: I2f85ebff783ebb799324b0aa95f5d0d023c19231
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96381
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:40:10 +02:00
Ashod Nakashian
e68be80496 wsd: add http-headers unit-test
This is to defend the sneaking of extra http-headers
in the access_header URI param that was recently fixed.

Change-Id: Ic28cf58854847ac278bed8043f398b107f7992b3
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96862
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:37:10 +02:00
Ashod Nakashian
77aa816180 wsd: log the response from WOPI CheckFileInfo separately
Change-Id: I8af28a7332903e6ed36dfba6bbd6bfbb5ebbd4db
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96828
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:35:53 +02:00
Ashod Nakashian
5cf0273c7f wsd: parse the URI params of the URI and DocumentURI
Change-Id: Iefc8c10ff85270aa95f255cef29b3427a0efcfe6
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96826
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:35:00 +02:00
Ashod Nakashian
fa96934861 wsd: Authorization parsing and creation improvements
Authorization class now handles the parsing and creation
of its instances, which makes it centralized.

We also avoid repeatedly constructing Authorization objects
in ClientSession and instead do it once at construction
and cache it.

A bunch of new unit-tests added.

Change-Id: I9b5939be51a5957214d07ed8f1096efd179686c6
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96825
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 07:33:57 +02:00
Ashod Nakashian
9a427524d1 wsd: support --cleanup in loolwsd
Leaving behind jails with bind-mount
entries makes build-workspace removal
complicated, and jenkins builds start failing.

The cleanup stage is integrated in Makefiles
and should be transparent.

In the event that manual cleanup is necessary,
'loolwsd --cleanup' can be invoked.

Change-Id: Ia4b99b0c66e56dfa2d50e79b0ba98f714cf32886
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97470
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 06:14:39 +02:00
Ashod Nakashian
5c9988f2e3 wsd: faster jail setup via bind-mount
loolmount now works and supports mounting and
unmounting, plus numerous improvements,
refactoring, logging, etc..  When enabled,
binding improves the jail setup time by anywhere
from 2x to orders of magnitude (in docker, f.e.).

A new config entry mount_jail_tree controls
whether mounting is used or the old method of
linking/copying of jail contents. It is set to
true by default and falls back to linking/copying.
A test mount is done when the setting is enabled,
and if mounting fails, it's disabled to avoid noise.

Temporarily disabled for unit-tests until we can
cleanup lingering mounts after Jenkins aborts our
build job. In a future patch we will have mount/jail
cleanup as part of make.

The network/system files in /etc that need frequent
refreshing are now updated in systemplate to make
their most recent version available in the jails.
These files can change during the course of loolwsd
lifetime, and are unlikely to be updated in
systemplate after installation at all. We link to
them in the systemplate/etc directory, and if that
fails, we copy them before forking each kit
instance to have the latest.

This reworks the approach used to bind-mount the
jails and the templates such that the total is
now down to only three mounts: systemplate, lo, tmp.

As now systemplate and lotemplate are shared, they
must be mounted as readonly, this means that user/
must now be moved into tmp/user/ which is writable.

The mount-points must be recursive, because we mount
lo/ within the mount-point of systemplate (which is
the root of the jail). But because we (re)bind
recursively, and because both systemplate and
lotemplate are mounted for each jails, we need to
make them unbindable, so they wouldn't multiply the
mount-points for each jails (an explosive growth!)
Contrarywise, we don't want the mount-points to
be shared, because we don't expect to add/remove
mounts after a jail is created.

The random temp directory is now created and set
correctly, plus many logging and other improvements.

Change-Id: Iae3fda5e876cf47d2cae6669a87b5b826a8748df
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/92829
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-07-01 05:42:43 +02:00
Mike Kaganski
64950bcc4e IIS requires content-length for POST requests
Without the content-length, LOCK requests result in 411 response with
the message: "The request must be chunked or have a content length".

Ref: https://forums.iis.net/t/1119456.aspx

Change-Id: Ieceb2bcf478c5f6baf97ee6b89d37622da168df5
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97524
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-06-30 15:58:42 +02:00
Jan Holesovsky
2c4e4f2e6e android: This assert is iOS-only, ifdef it out.
Change-Id: I2a0dab7069721175983fa426f30422f5fd00e6b8
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97474
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-06-30 10:54:29 +02:00
Szymon Kłos
3141bf7775 notebookbar: Introduce switch in loolwsd.xml
Change-Id: I94546a899fde1cecc2c35dc527e41e8a36061750
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93050
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2020-06-30 08:16:25 +02:00
Szymon Kłos
11965d083e notebookbar: early init
- read settings from loolwsd.xml
- in case of notebookbar activated send :notebookbar parameter
- for mobile apps I left empty parameter in setupKitEnvironment calls

Change-Id: I5813589564b37eecc1e77c5d0eb737eca5f92f04
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97233
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2020-06-30 08:15:25 +02:00
Mike Kaganski
ec1bc58070 Don't show last modification indicator when data is unavailable
E.g., SharePoint 2013 and 2016 don't support LastModifiedTime field
in CheckFileInfo [1].

[1] https://docs.microsoft.com/en-us/openspecs/office_protocols/ms-wopi/e2e91eab-4c6d-4f00-9c3f-3a1962135626#Appendix_A_30

Change-Id: Icdcf9f82758b4bd34be25f553e9d756ab76b8bfa
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97221
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2020-06-26 14:42:34 +02:00
Tor Lillqvist
7f25109f72 tdf#128502: Chunk of work to enable "multi-tasking" in the iOS app
Seems to not cause any serious regressions in the iOS app or in "make
run", but of course I am not able to run a comprehensive check of all
functionality.

Change-Id: I44a0e8d60bdbc0a885db88475961575c5e95ce88
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/93037
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-06-26 13:09:51 +02:00
Tor Lillqvist
9077962bfe The locale dance is unnecessary on iOS
The code does not work on iOS as locales apparently are differently
named than on Linux.

Besides, we have been able to open files with arbitrary non-ASCII
names, like 000🇹🇩🇲🇶🍉🥨111.odt, just fine for some time already.

Change-Id: I3f4a342721a7ad22786b8bdb1cd9829087539178
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97020
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-06-24 13:16:05 +02:00
Tor Lillqvist
a541dc5bcb No need for this 'if (false)'
Change-Id: I552ee8873d398b428aa2c54d7d762c13144b8b75
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96931
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-06-23 13:26:37 +02:00
Damian
f160ccf80d tdf#134041: reset engine before next digest computation
Change-Id: I68ef078f6f885bebaf29b37d5fd704a9c70c826a
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96899
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-06-23 12:32:19 +02:00
Ashod Nakashian
fa749d0a35 wsd: std::move rather than copy
Change-Id: Ie5e3f711d4cda686408624f849f3f7d7dfb549b8
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96380
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-23 06:43:38 +02:00
Ashod Nakashian
17044ade27 wsd: fix: call to virtual function during destruction
Change-Id: I914025fe642f6c78d4a5731fdb8e8920a62838b1
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96379
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-23 06:42:53 +02:00
Ashod Nakashian
4a57654d88 wsd: avoid unnecessary string ops
Change-Id: Ia5a6f2d7a260edaf8bb294693be12a434a2c30fe
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96376
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-23 06:41:58 +02:00
Tor Lillqvist
f0ecb35447 Bin spurious misleading output in the MOBILEAPP case
Change-Id: Ia731ac97174aa85842a156753bcd9e8a0fef9718
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96842
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-06-22 13:52:47 +02:00
Andras Timar
3a904c2031 fall back to en_US.UTF-8 if C.UTF-8 does not exist
It turned out that C.UTF-8 is not supported on RH7/CentOS7.
We started to use C.UTF-8 because it was widely available and we
could shave off locale data in Ubuntu based docker images and
AppImage. With this patch we fall back en_US.UTF-8 if C.UTF-8 does
not exist and add some logging.

Change-Id: Idea0ae885dc8cdd9ef33279bd90eb882a656d75c
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96788
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2020-06-21 16:25:50 +02:00
Ashod Nakashian
2c73b622d7 wsd: extract WOPI HTTP request construction
This hoists the common parts of the HTTPRequest
for all WOPI requests to avoid errors when changing them.

Change-Id: Ia02ef657a43b7a7d2fc13be3da012836fa0d7650
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96372
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-20 16:33:20 +02:00
Aron Budea
4e2e2f22c6 wsd: Don't try to resolve an accepted IP address
...and pollute the logs with warnings if it fails.

Change-Id: I71828205b8d020287f5b6d0bb82feb17c2fdd2f7
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96567
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-18 11:43:57 +02:00
Andras Timar
faf9ccbd0a Add LOKit logging option to configuration file
Environment variable in sysconfig.loolwsd was not good, because:
1) it was a systemd antipattern
2) this systemd environment file was not present on all distros
3) we had to take care about this separately, when we did not start
   loolwsd from systemd

Change-Id: I5c47668ca388c2f4b0afd6da8c575a3fb3cfab3b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96291
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2020-06-15 16:06:37 +02:00
Henry Castro
9928143e05 android: fix invalid URI when running x86_64
Change-Id: If057df24de63759d3e239475ecca94f8faaa0d35
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95611
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Henry Castro <hcastro@collabora.com>
2020-06-11 20:41:36 +02:00
Michael Meeks
d34854f688 Add support for BreadcrumbDocName.
Change-Id: I06c56e92dd3acf9269140ecefb0c8bc731191260
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95960
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-11 19:44:01 +02:00
Michael Meeks
33a5813d84 WOPI: pure re-factor, remove rampant duplication.
Dung out lots of pointless intermediate variables, and overly
verbose code. Vertical space is not a renewable resource.

Most variables had a consistent pattern, except these:

caller var          c'tor parameter         member name

Change-Id: I7910b713b8c4f6950b1e7be9c3a8e4eb4f54e249
----------------------------------------------------------
userId              userid                  _userId
userName            username                _username
canWrite            userCanWrite            _userCanWriter
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/96129
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-11 17:38:32 +02:00
Pedro Pinto Silva
a2fb3207bc Server README: add missing instalation instructions for openSuse Leap 15.1
Change-Id: I23997f9fee48a0ddf46ce0dd6e57ed8e01dc5a31
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95936
Tested-by: Jenkins
Tested-by: Pedro Silva <pedro.silva@collabora.com>
Reviewed-by: Pedro Silva <pedro.silva@collabora.com>
2020-06-09 14:32:51 +02:00
Gabriel Masei
ac17984226 admin: cleanup resource consuming kits
Change-Id: Ifafbadc61b788adc90c03fb92e0231f9e599c360
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95794
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-09 11:25:44 +02:00
Michael Meeks
ff1e14a1d0 WaE: fix 'isAutosave' shadows a member of 'this'
Change-Id: I30fec0e39085f6e4f7049bb690390606d2d1ef15
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95845
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-08 17:56:27 +02:00
Michael Meeks
848bacaa7f Proxy: shutdown socket with error if we can't find documentbroker.
Also called if/as/when the document is unloading as you connect.

Change-Id: I494dc207219298e07fba664cd2cbdd5d5b8ac889
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95809
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-08 16:06:57 +02:00
Samuel Mehrbrodt
043e3c5238 Rename: getIsAutosave -> isAutosave
Change-Id: I30b8d52ff33c2ae270b44a1670bacc4a48af4495
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95807
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-06-08 15:39:00 +02:00
Jan Holesovsky
1bcaac7a6e One more check that should be overriden with --disable-lool-user-checking.
Change-Id: I3f0170775abad34b2b9de2078410d00d46853ad9
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95619
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-06-08 11:35:58 +02:00
Tor Lillqvist
441b204d26 Avoid assertion failure in the iOS app
Change-Id: I5e0733579db01616f8c6e7743bb01a9a2feca8aa
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95591
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
2020-06-05 13:39:30 +02:00
Michael Meeks
36a4b5ad05 Proxy: dump ProxyProtocolHandler state separately
Somewhat inelegant - nasty extra header & dynamic cast.

Change-Id: Id18b2f7831ece3b971290e799c5df182429aa2a0
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95448
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-04 15:49:46 +02:00
Gabriel Masei
16f6d8c25a admin: notify subscribers that doc memory has changed
Change-Id: I139c7d49a2cd1b86c3a281613f5628f6af8b3365
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95133
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-04 12:59:34 +02:00
gokaysatir
5f07429b6b leaflet: Update admin console & drop bootstrap package.
Change-Id: I9243393693c2464f2e9a4d24cccf9c5f3415e2ef
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95468
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2020-06-04 12:56:16 +02:00
Michael Meeks
affa943e4b dumpState should dump much more loolwsd state.
Change-Id: I0e59d56b2b735aea013a59850ff3f37fd72bc8b9
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95447
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-03 18:59:20 +02:00
Michael Meeks
714640993b Remember to shutdown the socket after serving files.
re-factor to make it hard not to.

Change-Id: I26ebc48b4660276ede64a22167ac4779cebf5cd4
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95440
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-06-03 18:15:33 +02:00
Ashod Nakashian
4513318e58 wsd: leaflet: fix reuse_cookies support
reuse_cookies is now always encoded in the URL.

And, there is no need for the WOPISrc in the three cases
in this patch, and by passing the DocumentURI proper
(without /ws?WOPISrc=...) ensures that all query-params
in the DocumentURI are properly processed.

This fixes the reuse_cookies regression where it
wasn't passed to WOPI requests.

Change-Id: I8dccfb09a7b4102d10c1aef24f43b699a07bfed8
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95293
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:05:19 +02:00
Ashod Nakashian
d06ad733c5 wsd: improved RequestDetails parsing and documentation
...with support for properly extracting the different
fields with unit-test.

URIs are quite complex and varied. For historic reasons
they have all been treated without distinction, which
makes support for all variants difficult. RequestDetails
encapsulates this complexity, and now it is almost
completely documented both descriptively and functionally
(via extensive unit-tests).

Parsing of the URIs is now more structured by having
named fields instead of relying on knowing which
token should contain which field, which is error-prone
and very opaque.

Change-Id: I68d07c2e00baf43f0ade97d20f62691ffb3bf576
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95292
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:04:48 +02:00
Ashod Nakashian
1ee57ba1d0 wsd: proxy: correctly parse single-char fields in the URI
...instead of skipping them.

And add tests to defend the fix.

Change-Id: I8585cc3592841c8ad16d3804dc09a2a3b3a3bb71
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95291
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:01:59 +02:00
Ashod Nakashian
4a8937d0d1 wsd: performance improvements
Change-Id: I137dc67b4231df1cd23a9dce72e6b12dc1bf364e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95343
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:01:39 +02:00
Ashod Nakashian
223a1d08f0 wsd: performance-unnecessary-value-param
Change-Id: I1eb092c676da8600e0f8ed70cbc7e1f37fdd5a02
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95338
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:01:29 +02:00
Ashod Nakashian
fae093d89d wsd: std::move rather than copy
Change-Id: I7c4eea8aa5ab57444aa395f727e4ce6ac713b665
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95337
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 20:01:16 +02:00
Ashod Nakashian
d2d0492245 wsd: move LOOLProtocol::tokenize to Util::tokenize
The tokenizer(s) are more generic than the protocol
logic, and are used from contexts that don't involve
the protocol as such.

Change-Id: Ie8c256bf11a91e466bff794021f41603c9596a7f
2020-06-02 18:03:36 +01:00
Ashod Nakashian
44f4e59b6b wsd: RequestDetails takes the service root as argument
This avoids depending on LOOLWSD's statics, which
makes adding unit-tests much more difficult due to
the high number of dependencies LOOLWSD pulls.

Adds a number of unit-tests for RequestDetails.

Change-Id: I9f1d56f80a633505c7ff548ec0e33ffe61f59f53
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95290
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 17:28:40 +02:00
Ashod Nakashian
dd93a7eeb4 wsd: reuse more code and reduce inefficiencies
Change-Id: I8cf4709822750bce92ceab3fbac50240035776fa
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95289
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 17:26:59 +02:00
Ashod Nakashian
68bdbcf798 wsd: remove unused QueueHandler
Change-Id: Iec80d2afb1762175088b92a6e7140b0ca863a483
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95339
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 17:26:08 +02:00
Ashod Nakashian
6ab64ac992 wsd: single-char string literals -> char
Change-Id: I163d6fe1c80334317d38f8fed2199ad2b31a0f8a
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95335
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
2020-06-02 17:22:26 +02:00
Ashod Nakashian
784b7dc39d wsd: optimize StringVector
StringVector is heavily used for tokenization
and benefits from inlining of small functions.

Also, cat doesn't need to be slower than necessary.

Change-Id: I4ab2ff1b1f1a81092049d2cde64b6df10b34b5f7
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95287
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins
2020-06-02 01:39:37 +02:00
Ashod Nakashian
224ef08c7f wsd: single-char string literals -> char
More readable and typically more efficient.

Change-Id: I9bd5bfc91f4ac255bb8ae0987708fb8b56b398f8
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95285
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2020-06-02 01:31:26 +02:00
gokaysatir
ac682772a6 tdf#114982 - AdminConsole: control logging
Change-Id: I53cf4b0ff81ea9d6bf4ad595077f7365e7e34c00
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94130
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-30 11:10:19 +02:00
Samuel Mehrbrodt
665b1629de tdf#131123 Report back save result
Change-Id: Ie3dee5d344bc65c325b95f2746c9734bdd9e2f9d
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94490
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-05-29 08:39:46 +02:00
Andras Timar
15ced64d32 use C.UTF-8 locale rather than en_US.UTF-8
because en_US.UTF-8 is not present in minimal
environments such as docker images

Change-Id: I9edcb44df8a8f33117b2c5f1d2fa9e330bfc1770
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95018
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-05-28 13:18:12 +02:00
Ashod Nakashian
4d0ae969e1 wsd: expose version-hash programmatically
Passing --version-hash to loolwsd now prints the
hash and exits. This is designed to be used with
proxy.php to check the version running.

Also, include the version and hash in the
hosting/capabilities JSON response.

Note that --version still prints/logs the version
and doesn't exit. It seems that is designed to
log it before running, and so it might be used
in the wild. Changing the behavior in minor upgrade
might break some production servers that have
--version added to their execution command-line.

Change-Id: I30e6945f797a902ed4b3aae6f5f1b8518000946b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94911
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-05-27 12:56:02 +02:00
Jan Holesovsky
2a19330823 Proxy: Preprocess the localization files so that they contain the full URI.
Otherwise they are not passed through the proxy...

Change-Id: I307018e760ff99ac42c25ab7fa2fa3df4911ef8d
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94811
Tested-by: Andras Timar <andras.timar@collabora.com>
Reviewed-by: Andras Timar <andras.timar@collabora.com>
2020-05-25 22:44:34 +02:00
Michael Meeks
dac51dbcbd Sample for debugging a specific protocol command.
Change-Id: I662c9edb10d1ebbb729cc4c9bc053dc113cb027e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94807
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-25 21:53:56 +02:00
Michael Meeks
54ed949a20 insertfile - close socket after inserting.
Can fix hangs on insertion where the read side of the socket is
done sending, but not yet closed.

Change-Id: Ib2e943699e54a3d566434a46200402b8ec4937e0
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94798
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-25 17:53:54 +02:00
Michael Meeks
bb4250ea51 Avoid erroneous logging on insertfile.
Change-Id: Id5c658013d4907da3185e4c049e10a698bcfdc51
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94797
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-25 17:50:38 +02:00
Jan Holesovsky
cecf3922cb Adventise the proxy prefix support in /hosting/capabilities.
Change-Id: I09e340b1ecb1580feffe66c53b79d91749f0f9af
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94790
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Tested-by: Jenkins
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-05-25 15:35:54 +02:00
Jan Holesovsky
c659829981 Actually inform about the accepting connections to the console.
We already write there other startup information, and this is important
to know too :-)

Change-Id: I6cddcdc7690b9019a5dcf7351f60f3e769878e07
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94698
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
2020-05-25 15:29:52 +02:00
Michael Meeks
87d039e00a IO stats - handle convert-to case, and initiailize all temporaries.
Change-Id: I16c60c89745a7cc2f369a010c77cffbb08759f7b
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94775
Tested-by: Jenkins
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-25 12:37:40 +02:00
Ashod Nakashian
3309d597e9 wsd: correctly parse wopi URLs in RequestDetails
Wopi URLs have their own /ws marker, which
is confused with the one used with the RichProxy.
Without correctly identifying the one belonging
to the original URL and the one for the Proxy
logic, we end up mis-parsing and Wopi documents
don't load via RichProxy.

Change-Id: I7874e2aed9d5ac7de734f3db01f2820c5bbc5098
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94470
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
2020-05-19 15:17:12 +02:00
Michael Meeks
e600721abe Proxy: use much more obscure session IDs.
Change-Id: I1220216b88aaa3c9a0bc58ed5bf4b20b4214d997
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/94090
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2020-05-13 02:01:59 +02:00