Commit graph

633 commits

Author SHA1 Message Date
Tor Lillqvist
eb9c580c36 Introduce ways to toggle and tweak core Trace Event recording and logging
When toggling tile debugging in the Help>About, toggle Trace Event
recordning, too. Add a comment with an example of how to turn on
SAL_LOG overriding at the same place.

The following new messages from client to server are introduced:

traceeventrecording <start/stop>

    Starts or stops comphelper::TraceEvent recording.

sallogoverride <string>

    Overrides the SAL_LOG value, or stops overriding if no parameter
    or parameter is "default".

Signed-off-by: Tor Lillqvist <tml@collabora.com>
Change-Id: I8b56c28cd99d39115cd796c44e5051d934d21a1f
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-05-03 16:09:35 +03:00
Tor Lillqvist
be476d23b3 Produce a Chrome Event Trace file
It is (for now) produced (by the ProfileZone things in core) whenever
logging level is "trace". The Event Trace file pathname can be given
in the loolesd.xml file or on the loolwsd command line.

Signed-off-by: Tor Lillqvist <tml@collabora.com>
Change-Id: I6d5829121e71460a4600ee94d2ebf51043c8893f
2021-05-03 16:09:35 +03:00
Miklos Vajna
656eb310bb Fix Debian 8 / gcc-4.9 warnings
net/HttpRequest.cpp:126:19: error: declaration of 'end' shadows a member of 'this' [-Werror=shadow]

kit/Kit.cpp:163:29: error: missing initializer for member 'statfs::f_bsize' [-Werror=missing-field-initializers]

kit/Kit.cpp:171:14: error: 'OVERLAYFS_SUPER_MAGIC' was not declared in this scope

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: Ibbd35ab5af3adad403ed22a0aeb70917b9e21970
2021-04-30 10:38:09 +02:00
Pranam Lashkari
a2757f3a47 loolwsd: after comment operation update status
send status after performing any comment operation,
updating status send page dimensions,
which help in canvas layer to resize actual page size
without updating page size comments may go out of view
and will also not be scrollable into view

Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: I489648bb5ccd7223746fea42050088e078046a1a
2021-04-09 09:56:13 +02:00
Dennis Francis
3ec3af8707 client-side-grid: disable core grid and bg
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Change-Id: Ib8fdba0ea3f8ddca761f9e0d8c56773e86b5e2f4
2021-04-07 13:59:06 +05:30
Ashod Nakashian
029fe9275e wsd: initialize config and use it in Kit
Change-Id: I0c6047ab2083b3fbfbade89d1c1ef04eb6e3b6c1
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-04-02 12:43:39 -04:00
Ashod Nakashian
08eab4bc15 wsd: more config features
Change-Id: I2fb33a2d89ab886bc454ae961dbff7b6c2c1b0ef
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-04-02 12:43:39 -04:00
Ashod Nakashian
db36d079ce wsd: pass the config from loolwsd to forkit
Change-Id: If89a5021bc7d86d630511abb65839f5448f4bd3d
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-04-02 12:43:39 -04:00
Ashod Nakashian
e0aa90dd3a wsd: simplify lokit_main call
By defining NoCapsForKit and NoSeccomp
as const values for the KIT_IN_PROCESS
case, we have a more consistent and
simpler call-site.

Change-Id: Ife553eab9eaffd96560d4cfb4b8fdcdf26a1b9db
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-04-02 12:43:39 -04:00
Pranam Lashkari
b8c85e7237 impress: hide regular slides in master view
Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: I2b1ececba67fb8855187baafdc42cb5baa051635
2021-04-01 14:02:46 +02:00
Gleb Popov
c3a3a0d7a8 Mark the argument as unused to silence compiler warning.
Signed-off-by: Gleb Popov <6yearold@gmail.com>
Change-Id: I99731e183afb7a8164f3e4d5e737e7e78f02a0a2
2021-03-27 17:59:11 -04:00
Michael Meeks
c2b11b5e5b Dump versions when we have a signal.
Change-Id: I6b1f5ac1cebdd05dd9ff9541a5418059f55841ed
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2021-03-25 19:46:36 +00:00
Ashod Nakashian
1f978d9b50 wsd: cleanup Poco headers
Change-Id: I1eec2301576fc2f1cde40389b1f858f80b1204c0
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-03-22 10:09:22 -04:00
Michael Meeks
479447637b Optimize for overlayfs by forcing an initial copy to linkable/
built-in hard-link support performs extremely badly otherwise.

Change-Id: I26d5080590538cb6342d64e2e0a4023bbc84c427
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2021-03-15 15:47:34 +02:00
Henry Castro
1df271b363 config: add "macro_security_level" item
"Level of Macro security".

Change-Id: I491648f2a89289c7f4455dfad76d73ac8449b965
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-03-12 08:23:56 -04:00
Henry Castro
50c0fc4492 config: add "enable_macros_execution" item
"Specifies whether the macro execution is enabled in
general. This will disable Basic, Beanshell, Javascript
and Python scripts. If it is set to false, the
macro_security_level is ignored. If it is set to true,
the mentioned entry specified the level of macro security".

Change-Id: I4bc5b690268a93994d17e2b02b7b60b6398646b7
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-03-12 08:23:56 -04:00
Ashod Nakashian
74d019e716 wsd: cosmetic
Change-Id: I98d16305d461f5b081756d4a5c518d3616483538
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-03-08 22:49:53 -05:00
Ashod Nakashian
1837fb7fa1 wsd: avoid using shared_ptr copies
Change-Id: I5ee6e1cf56d984e0cb5407c556d53fc736cdb794
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-03-08 22:49:53 -05:00
Ashod Nakashian
6f59004e5c wsd: remove unused time_point argument from drainQueue
Change-Id: Ib6c48ab63ab09205e90968c6d455848e2d24f3e4
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-03-08 22:49:53 -05:00
Ashod Nakashian
f8c1857447 wsd: reduce jail size
Change-Id: I9fd1c76aff9c97b800c6b7b6154beb9c596170fb
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-03-06 08:52:50 +00:00
Henry Castro
266623aa2d kit: revisit log messages kit.cpp
LOG_FTL = abnormal, crash, denied service
LOG_ERR = load, save, session, connection, wrong parameters
other cases LOG_WRN, LOG_INF

Change-Id: Ieefc881876106b1afc4f34505903f1321b33411b
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-02-26 11:22:58 -04:00
Ashod Nakashian
418f694720 Revert "kit: enable send LOK_CALLBACK_STATUS_INDICATOR_FINISH"
The commit in question breaks two unit-tests: wopi-template
and copy-paste. Temporarily reverting until the regressions
it introduces are resolved.

This reverts commit be68f06f70.

Change-Id: I1fafd73fdea57077eea05a146b7df0b013e6e8ba
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-25 14:14:59 -05:00
Henry Castro
3d58669af5 kit: revisit log messages Fokit.cpp
LOG_FTL = abnormal, crash, denied service
LOG_ERR = load, save, session, connection, wrong parameters
other cases LOG_WRN, LOG_INF

Change-Id: I105b0d2706db4ffeb2ab10923604f2e06c2d8d77
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-02-23 21:42:08 -05:00
Henry Castro
c24c7d9335 wsd: add an option "batch mode" to load the document
disable any dialog interactivity

Change-Id: I6d6fde721c7b3c18c519f87139525fcac1f6fb31
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-02-22 14:59:59 -04:00
Henry Castro
be68f06f70 kit: enable send LOK_CALLBACK_STATUS_INDICATOR_FINISH
Otherwise the LOK_CALLBACK_STATUS_INDICATOR_FINISH
message is lost, and client side does not receive
it when Macro Security dialog popup.

Change-Id: Ife52c77078160b8cc1075eff9137de2d26b87b55
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-02-22 14:58:58 -04:00
Tor Lillqvist
9492ef6142 Include the view id in the tunnelled dialog image hash
Otherwise this will break badly in the collaborative editing (multiple
views) case.

Change-Id: I63d391cb5a7d118c34564c4e1a4df7710b13e90e
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-02-19 14:29:40 +02:00
Ashod Nakashian
81da7c7bff wsd: download templates by wsd
Templates were downloaded by Core
upon loading. This works fine, as
long as there is no special network
setup in loolwsd. However, when
loolwsd has a complex network setup,
such as when using reverse proxies,
Core wouldn't know about the details
and would likely fail to download
the template.

Luckily, there is no reason to rely
on Core for downloading templates.
Instead, we download it in loolwsd,
just like any other document, and
load it in Core as normal. The
remaining post-load saving of
templates remain unchanged.

Change-Id: Ib22ada4ae469863d5e5c8baeee27f667f7cd40ff
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-15 09:41:17 -05:00
Ashod Nakashian
6d11e400a7 wsd: userName is optional
This resolves a dependency on userName
(a.k.a. UserFriendlyName) that was a source
of issues when missing.

It turns out that when it's missing but
spellOnline is set, an edge-case caused
an exception that failed loading.

The spellOnline value, in its turn, was
incorrectly set to "null" when in fact
it was missing. This resulted in online
spell-checking being active by default.
Perhaps this was intentional, but here
we don't change this behavior at all.
Instead, we avoid sending "null" when
it's missing, and by default we always
enable online spell-checking, unless
it is explicitly set to "false".

This way, the exception is not thrown
and spellOnline doesn't have invalid
values, while preserving the current
behavior.

Change-Id: I4a09ac44ff5d6147c715afa0fb34af9650da4afd
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2021-02-13 13:25:48 -05:00
Szymon Kłos
357cb8b22e Allow to show help in global callback
This is needed to show help in macro security warning
dialog which is showed before the document is loaded.

Change-Id: Ic50bac0c860c5673ce3ec854e54d658157d2a9dd
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
2021-02-11 12:32:41 +01:00
Andras Timar
19206ce9c2 sometimes it's useful, when path to loolkitconfig.xcu is configurable
e.g. in case of CODE AppImage, that is built from packages,
/etc/loolwsd/loolkitconfig.xcu will not be good, the good
location is within the AppImage's file system.

Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Ie2bf56cd95781c193a0e7185bd96d40c4849d920
2021-02-09 08:41:53 +01:00
Tor Lillqvist
5cc5e19ed6 Add comment describing a way to intentionally induce cache inconsistency
Change-Id: I4dabc1e70b2bca6751a60e5655a530c0025b09c5
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-26 17:09:09 +02:00
Tamás Zolnai
fd14e92314 Revert "leaflet: wsd: select the page before opening the slide wizard"
This reverts commit 0a54b23251.

Signed-off-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Change-Id: Id41a85d920a470d784f4c6158bb25c9ba46f43d2
2021-01-26 12:32:36 +01:00
Tor Lillqvist
c535040952 Use correct naming convention
Change-Id: I6aa3b7b25ae9eff462580eb17ceaa5bc40359c53
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-25 18:06:56 +02:00
Tor Lillqvist
f1e074f6bc Add caching of tunnelled dialog images
The same cache size is used in server and client. The caches use the
invalidation algorithm. Pass the hash of the pixmap in the
windowpaint: message. The client stores dialog images in its cache.
The server stores hashes of the images. When the server knows that the
client already has an image cached, it sends just its hash and the
client will use the cached image.

Pass the size of the cache to the client so that we don't have to keep
the the cache size synchronised in two places in the code.

Change-Id: Ie6cbfca79a9ede48fcc115e3acc669b925bb624e
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-25 17:48:33 +02:00
Tor Lillqvist
78691886f3 Use winId here, too
The other code in this function carefully checks before indexing the
tokens vexctor. We have already stored the integer from tokens[1] (if
it exists) in winId. So use that in one more place instead of
tokens[1] for consistency.

Change-Id: I2bc09b3e44e0549a94469d7569f724df17a113b3
Signed-off-by: Tor Lillqvist <tml@collabora.com>
2021-01-21 14:59:22 +02:00
Tamás Zolnai
218e47e65a Switch to the correct view before calling getSelectionType() method.
This method needs to be called with having the correct view activated.

It caused a crash in writer/simultaneous_typing multi-user cypress test.

Signed-off-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Change-Id: I57dd58a635ce7ea127200a6a3f0cadc8c0861aaf
2021-01-18 20:39:03 +01:00
Tor Lillqvist
c5118ea43a Fix crash in iOS app: Don't bother with UnitKit
I don't recall if simply ifdeffing is the proper way to bypass UnitKit
stuff (that I don't understand) for the mobile apps, but at least it
helps.

Signed-off-by: Tor Lillqvist <tml@iki.fi>
Change-Id: I85d477e4ee7d11c597d95a9b0b42af7e5f7ad122
2021-01-15 01:36:52 +02:00
Michael Meeks
673c3cfb98 Remove un-used _isLoading and ScopeGuard.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I0f7536023cbbef52087c3110565d046dd1ab8835
2021-01-13 16:55:35 +00:00
Shubham Goyal
3a3867e1c6 Resolve #805 : Remove Mutex lock
Signed-off-by: Shubham Goyal <22shubh22@gmail.com>
Change-Id: I80da9d085590e67c0998ce971225a8c9903c0bb7
2021-01-13 16:55:35 +00:00
Andras Timar
2dc31a7648 check if we run in a container
* and fix error reporting: we do not abort every time when loolforkit
  is invoked with incorrect user name

* and better readability of the conditions

Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Idc9db40c00d41c95160db130eb324c487f14de17
2021-01-12 22:24:28 +01:00
Michael Meeks
98c7a03690 Drop cap_chown after use.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: If5bb5727b8842f30b60f4c9cee392f94d1984dca
2021-01-06 10:08:52 +00:00
Henry Castro
9f43878891 kit: send early dialog event to server
When the "Macro Security Warning" send clicks events,
the is no instance of Model/View/Controller yet.
So adjust to send to global events.

Change-Id: Idc395cfb86548481bbadc22874293d7d6238db89
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-01-05 11:10:22 -04: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
Henry Castro
7f70197723 kit: enable input process when early dialog show
Before loading the document and if it has an embedded
macros, it will show the "Macro Security Warning"
message dialog.

If the input process is not enabled, the result will be
a virtual deadlock, so it should filter some messages at least.

Change-Id: I565569a0227ac0e7ce2feae2cf3ccdf21ce4b1d4
Signed-off-by: Henry Castro <hcastro@collabora.com>
2021-01-04 09:33:55 -04: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
mert
c9cc7e840f Save Watermark bitmaps per user for re-use
Although we already save it for 256x256 regular
tiles, we use smaller tiles for preview requests
everytime there is a preview request the pixmap has to
recreated. Used unordered_map instead to keep different
resolutions saved for re-use

Change-Id: I3ced6b08b6e5f8096195b253abba8bb5afdffa3c
Signed-off-by: mert <mert.tumer@collabora.com>
2020-12-28 14:51:02 +03: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
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
Jan Holesovsky
c44609532a Root actually has all the capabilities.
Signed-off-by: Jan Holesovsky <kendy@collabora.com>
Change-Id: If49be334cb1380daf1eaf24c7007f1b004754304
2020-12-18 23:15:57 +01:00
Michael Meeks
ea1148a50d Don't copy dictionary extensions we already pre-loaded from the system.
Change-Id: I9cf7459c5214b6d7c23d5097822c7827409577a0
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2020-12-15 23:15:09 -05:00