Commit graph

2676 commits

Author SHA1 Message Date
Ashod Nakashian
efe874f89c wsd: simplify shutdown and termination flagging
With the use of a single flag for both, the
logic is now less ambiguous, as we cannot have
termination flagged without also implying
shutting down.
The assertions are no longer needed.

Now that setting the termination flag
explicitly implies having the shut down flag
as well, the checks are simpler. We only
need to check that the shutdown is not set
to continue running as normal, since having
the termination flag must perfoce mean shut
down is also set, there is no need to check
both.

Change-Id: I99e22f5668385182b0594040a8e3354b55e74642
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-14 16:32:50 +02:00
Caolán McNamara
307818ba1c cid#318834 Missing move assignment operator
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I798c0e6610afca9d0d503514b33e75c35a7ccb33
2023-08-14 12:31:55 +02:00
Ashod Nakashian
a42adac98f wsd: add the web-server URL to the media-src list
We need to allow loading media sources from
the web-server URL. This seems to be necessary
at least on iOS.

Change-Id: Ic7b23c4f80b975460de9311a67f3c5cb51758d14
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-10 12:24:08 +02:00
Caolán McNamara
1cd88f217e cid#321976 AUTO_CAUSES_COPY
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I2207cc530e1773f29cf540ea2ff9c6f44c4c237b
2023-08-10 08:47:25 +02:00
Caolán McNamara
6d873d6837 cid#318919 Dereference after null check
map is never null so make it a reference

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I9f6ad863d0a1102dd7e26a5668b1c6ba71249580
2023-08-09 13:39:23 +02:00
Caolán McNamara
2119a19881 cid#321981 AUTO_CAUSES_COPY
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I6c2d30c8db254beb6b20aae7891b089a986a4df8
2023-08-09 13:39:23 +02:00
Henry Castro
a2b924033d admin: rename ACCESS_TOKEN -> JWT_TOKEN
To avoid confusion with the WOPI access token.
.

Change-Id: Ie38e0f11d0655e89eb1c7f1e20b73a9b8756ba21
Signed-off-by: Henry Castro <hcastro@collabora.com>
2023-08-08 08:27:30 -04:00
Rash419
0ed983d7a3 admin: refactor adminClusterOverview.js
- refactored special case for templating
  adminClusterOverview.html
- removed useless variable
- format the code, fix indent

Signed-off-by: Rash419 <rashesh.padia@collabora.com>
Change-Id: Ib22cb481db7c7ef94b11f3044d0cd856e6d0eed5
2023-08-05 14:28:29 +05:30
Rash419
944f269926 admin: added new cluster overview page
- added DlgLoading class to show loading modal dialog
- upgraded the d3

Signed-off-by: Rash419 <rashesh.padia@collabora.com>
Change-Id: I8bd99bbadaa59a7de1e83bebde8db0dce920705d
2023-08-05 14:28:29 +05:30
Rash419
fc77e1a1ff admin: fix auth issue when switching between
multiple cool servers
- also good to check response first as client
  might use persisted cookies

Signed-off-by: Rash419 <rashesh.padia@collabora.com>
Change-Id: Idcd85266a4cc5020aeaca7d7fb8428bc0a3d7d32
2023-08-04 21:25:37 +05:30
Caolán McNamara
aaa61e44e5 allow tileprocessed to accept multiple comma-seperated tileids
and bundle them together when emitted from the browser-side

// i.e. FIXME: new multi-tile-processed message.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I69916cbe30c26686fb44a2d8d229704c459b6601
2023-08-04 13:07:29 +01:00
Caolán McNamara
509c29421e split this hunk into reusable ClientSession::onTileProcessed
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I383542b6c9c3a888937e2f7e330ec7e77efaaa82
2023-08-04 13:07:29 +01:00
Caolán McNamara
8bb41ee775 cid#318947 Unchecked return value from library
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ia8b96035d5038d82a55f68a751fdbda5806ec1d6
2023-08-04 10:17:58 +02:00
Caolán McNamara
1d179cdf76 cid#321981 AUTO_CAUSES_COPY
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I92d66a3d497d574d819f18960bff5b60e180b715
2023-08-04 10:17:58 +02:00
Caolán McNamara
7cb1dfd4eb cid#321977 AUTO_CAUSES_COPY
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I50f94b290e40b11d555c51448630835d71a62019
2023-08-04 10:17:58 +02:00
Ashod Nakashian
75ae9894b9 wsd: Util::make_unique -> std::make_unique
Change-Id: I1063913f91571ea6ad95386a3da6a4072574d155
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-03 08:40:20 +02:00
Ashod Nakashian
5b52f7d8eb wsd: smart pointer cleanup
std::make_shared and std::make_unique
are superior to explict smart pointer
construction. Where we have private
constructors, we can't use them.

Change-Id: I492122f58e958113c6e6d31445c6614ad98c89aa
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-03 08:40:20 +02:00
Ashod Nakashian
b8854ea2e9 wsd: decouple FileServerRequestHandler from COOLWSD
Change-Id: Ie121849a16bb84195d32e11a67e4aad5753aebfc
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-03 08:40:20 +02:00
Ashod Nakashian
d47001267b wsd: reduce manual http header creation
We have http::Response specifically for
this kind of thing.

Change-Id: I57130754f95c06f5ab958ca373f21763e74cb6a2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-03 08:40:20 +02:00
Ashod Nakashian
c1725faac1 wsd: dump the last quarantined version with the status
Change-Id: I46e1d84ba46bea3bf6cfd9c043af247e8b37afc1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-08-03 08:40:20 +02:00
Henry Castro
47485adc3e admin: add access token
The access token will validate the session
when a websocket is connected to the server.

Change-Id: I008b04a499ab0d85fd6f95fc06a511f800c0bb2e
Signed-off-by: Henry Castro <hcastro@collabora.com>
2023-08-02 20:23:42 +01:00
Michael Meeks
03d83ab6b8 paste: cleanup excessive debugging.
We don't want to dump the whole paste buffer as hex, or indeed any
large mis-encoded string - instead crop to the problematic section
for easier debugging, and no performance hit.

Change-Id: I30518beea436895a42b3429c3cb6e16e2093cca9
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-07-28 21:38:02 +01:00
Pranam Lashkari
fb5909bc40 theme: use integration theme value from the interation message
problem:
till now we used values from DOM elements which were unreliable,
sometimes they are not discoverable due to nested iframs.
That threw some 404 due to incorrect theming path.

Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: Ibc291ce9f64db799095e1edcb14c598bdd085de7
2023-07-24 10:06:35 +02:00
Andras Timar
fc946198d3 Rewrite coolwsd-generate-proof-key in C++
* simplified the tooling a bit: use coolconfig for creating
  RSA key pairs for WOPI Proof headers.
* got rid of a dependency: ssh-keygen, towards leaner docker images

Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Iaf468b5c8585d45027f512bb0a287ab77afb1ea9
2023-07-22 00:14:48 +02:00
Michael Meeks
d309d7199a deltas: fold the update: command back into an empty delta: command.
Also: address parts of #6897, primarily:

* remove the problematic aspect of bumping the last wid in our
  TileData, when this could trigger a re-send of a previously
  sent delta, causing tile corruption.
    * instead append an empty wid entry.
    * as an optimization - if the last entry is empty update
      the wid - since re-sending an empty delta is of no
      concern.

* simplify a number of code-paths that special-case zero length
  deltas. All deltas now commence with 'D'.

* still track updates in the JS - by detecting empty deltas.

* shares more code and simplifies various paths.

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I02af6d4b152524c201b6985b7a3497da7f08a517
2023-07-17 11:35:25 +02:00
Michael Meeks
b7d7c02a3f deltas: allow JS tilecombine to force sending a keyframe to the client.
However, don't force rendering a keyframe, only sending it - other
clients may be happy with deltas. This is to better handle:

window.app.console.debug('Unusual: Delta sent - but we have no keyframe for ' + key);

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I4efff0f6b1d2817e6b8bd567eb3b098383a1ef42
2023-07-17 11:35:25 +02:00
Rash419
8c5d822dc9 android: fix: save failed error while parsing save command
Signed-off-by: Rash419 <rashesh.padia@collabora.com>
Change-Id: Ia6a53184322f403d2b995213700193d5612fd63d
2023-07-15 20:33:18 +05:30
Szymon Kłos
3d6ed28857 Fix pasting image assertion
Revert "Avoid crash when pasting image in debug mode"
This reverts commit 78558fe9af.

Instead of detecting paste command and not trigerring assertion:
fix frame type so it will be binary in case of paste.

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: If5c726463459be7eaffae1522df522dfa1d74443
2023-07-13 20:06:58 +02:00
Michael Meeks
9270ceef16 update: send for redundant tilecombine requests.
Update tests to check for this too.

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I02c8f3167886321496245589b34a382fd61617f0
2023-07-13 08:14:48 +01:00
Michael Meeks
9a29a346d8 Allow tilecombine's to send oldWid information to fetch deltas.
Disable the 'forceKeyFrame' for tilecombine messages from the client,
we have a larger cache now and it makes sense to honor and track these.
forceKeyFrame was signalled with a zero oldWireId - which is the default
if we don't have it set.

Change-Id: If96423e96f8dc578a634ed5093517dfa6702cc1b
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-07-13 08:14:48 +01:00
Ashod Nakashian
752f2a4ae1 wsd: save and upload rapidly when unloading
We normally throttle saving and uploading to
avoid hammering repeatedly, but when unloading,
we reduce said minimum wait by a factor of 10.

This allows for a quicker unload cycle, esp.
if we had just saved before unloading, or
if there was a previous failure.

Change-Id: I8710c9b86c05254ad9b9735d8496dd96900221e2
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
2fd159bc0c wsd: better always-save-on-exit handling
Change-Id: Id718f81fc2eb0af5ca5bfe61e687de5258dbdd7d
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
75b1cbcb11 wsd: better detection of upload skipping for save-on-exit
Change-Id: I0b8c6dc7429587cddff6304aaf501f24af896602
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
68e20add3b wsd: better data-loss detection
Had to disable a crash test due to incorrect
modification check before unloading.

Because we think there are modifications to
the doc, we issue a save, which will fail
because the kit is killed in said test.

Will be re-enabled when isPossiblyModified
is improved.

Change-Id: I0dd7931308e66e9a12d891a979d54e3f373ef99b
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
0a969e5006 wsd: better modification detection after saving
And now UnitSaveOnExitUnmodified verifies that
we do not unnecessarily upload unmodified
documents because always-save-on-exit is set.

Always-save-on-exit is meaningful only when there
are modifications. Otherwise, we create identical
copies as separate revisions.

Change-Id: I933069d31d3d273c41734b58e0849680566e591a
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
f383cf9032 wsd: always-save-on-exit skips uploading as-loaded docs
Change-Id: Id38c2b708d9d440cedb3d51b345bf180af0349f8
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Ashod Nakashian
acdd74f014 wsd: better session disconnection logic
This improves the disconnected session cleanup
and fixes a corner-case with the last editor
disconnecting before read-only sessions.

Change-Id: Iecb553d7f5be2c63fc55111e60e22b3d8aa668f6
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-12 07:00:41 -04:00
Marco Cecchetti
abca8e5dd3 Adding support for enabling/disabling a11y support from the ui
Added toggle button/menu entry for enable/disable accessibility support.
This ui feature is available for Online Writer only.
The button/menu entry is added only when accessibility is enabled at
server level.
That allows to enable/disable accessibility per view.
By default, the accessibility support is disabled.
Anyway the accessibility support state is saved to local storage
if available.

Signed-off-by: Marco Cecchetti <marco.cecchetti@collabora.com>
Change-Id: If5968a47f17922038b9da3d320cbed84ebb7688b
2023-07-10 16:02:18 +02:00
Michael Meeks
b963cde3c7 FileServer::LocalFileInfo re-work local file-list management.
Calling a PUT before a GET would cause a SEGV around managing the
internal list of files.

Re-factor to ensure we always have a valid LocalFileInfo to
work with, and simplify and cleanup code-paths.

Change-Id: I2b206bb8bdebc3c44cd55c61048da9b0dc30dbd5
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-07-08 13:08:59 +01:00
Michael Meeks
789dd2963c Append the wid properly to invalidatetiles and parse it too.
also re-work parseInvalidateMsg to not use std::pair<> returns.

Change-Id: I724783b7050a1ee251dfbe9b2f1e0ea02e7d45f2
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-07-08 13:08:59 +01:00
Michael Meeks
6d697de175 tilecache: update the wireId on the last keyframe/delta if necessary.
A zero size delta means we're effectively up-to-date for this new
wireId.

Change-Id: I96abdf00648f7c2f833ffd56bd43980265b8d490
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2023-07-08 13:08:59 +01:00
Ashod Nakashian
1cac1f1698 wsd: test: do not advance to next test on failure
Change-Id: I2831c90e088064f5a254ef8a9809796e8320ed04
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
7fdc33b916 wsd: no default parameters for DocumentBroker::autoSave
Change-Id: Id343cc36886c2768b4af7ee61d9524678c83dc69
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
12bae02ad0 wsd: separate out canSaveToDisk from needToSaveToDisk
Suppressing needToSaveToDisk silently when we cannot
save, because there is no Kit f.e., is unhelpful.

Now we have these two states separated out and
we log appropriate information in each case.

Change-Id: If38798578a7b88600e3f07c88e0bcbf833ae53f0
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
b1d68e4b3a wsd: better context logging for clipboard activity
Change-Id: I83935df41492e0267b924893594002e6665a671d
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
3fef73a33f wsd: DocumentBroker logging improvements
Change-Id: I9c6f32c087275f48ac559c2fbb05d04da4e00a08
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
7650d5e175 wsd: remove redundant cast
Change-Id: I0cac85728cd4ade5d78b2a4cb715d0fdde17c832
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
aabe6cba8d wsd: clang-tidy warning fix
Change-Id: Id8b6d9987c03d33286c7b2f819776bd571329f3f
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Ashod Nakashian
8ef57dd2ec wsd: better newChild unit-test event
Change-Id: I8403e14780ad0bf971625934b7011fba1f24f07c
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2023-07-08 04:19:00 -04:00
Caolán McNamara
01165fbe1f On a cache hit for a tile the result typically had a wireId of 0
And tile::needsFetch on that result will always return true given the
default of invalidFrom of 0 and the comparison of
  return this.invalidFrom >= this.wireId || ...
so the tile return from the cache is unusable.

It is typical for a request not to have a wireId, if we don't use the
cache then doRender will send a timecombine result with wireIds set. But
if we use the cache here we send a response using the wireId of the
request.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I586406af86b0f503dfc204e20120cc8acebf5b8e
2023-07-05 11:49:34 +01:00