Commit graph

853 commits

Author SHA1 Message Date
Pranav Kant
631ae0f11f loolwsd: Get the first *live* connection
Sometimes there are situations when `connection` map is filled
with dead sessions. We don't want to deal with those dead ones.

Change-Id: I00dda77c39b5adbba69421eace0be0159e02505c
Reviewed-on: https://gerrit.libreoffice.org/22207
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:57:10 +00:00
Pranav Kant
10db02c208 loolwsd: Move document related callback logic to Document class
There are 5 LOK callbacks currently that are triggered on LOKit,
and not on LOKitDocument. These include status indicators, and
document password callbacks during document load. Lets move all
the callbacks called during document load in the Document container
itself, and keep the callbacks called after document load in the
Child session.

Change-Id: I8e43c2baaa12023b34822954dd494780ee6dd7ca
Reviewed-on: https://gerrit.libreoffice.org/22206
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:56:50 +00:00
Pranav Kant
a2549e3df7 loolwsd: Disconnect the child if there is no client
Don't let them hanging around, otherwise we would keep sending
messages to a dead peer (ToClient) indefinitely.

Change-Id: I9d4bb6edee351bd31f1faa30deaa4f37c3c7d031
Reviewed-on: https://gerrit.libreoffice.org/22465
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:56:12 +00:00
Pranav Kant
7ecde23422 loolwsd: Remove superfluous registration of callback
Our DocumentCallback is smart enough which checks all the
running connections, and send the callback notification to all of
them. Registering the callback only during the first loadDocument
call should be enough.

Change-Id: I82bcb9525814dae14def3bfb6c088337d0d0ea3c
Reviewed-on: https://gerrit.libreoffice.org/22202
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:55:50 +00:00
Pranav Kant
b902d80ec7 loolwsd: Add a unit test for password protected documents
Change-Id: Ia675d2750e11cb466b2e80b8f36f2ef04e0a7a09
Reviewed-on: https://gerrit.libreoffice.org/22466
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:55:07 +00:00
Pranav Kant
3667bef9a6 loolwsd: Handle password protected documents
Change-Id: Iceb5bb598ef1517bf640994c27bad4ca36bd72c1
Reviewed-on: https://gerrit.libreoffice.org/21894
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:49:45 +00:00
Ashod Nakashian
13f9b7a2db loolwsd: Storage Abstraction support
An abstract Storage abstraction class is added.
There will be a factory to instantiate concrete
implementation for a given backend.

For WebDAV and similar hosted backends, authentication
and authorization will be done by the implementation
with the help of the Auth abstraction.

Change-Id: I38ec5dad4c2c4ce16df30d65826df96751b10e2d
Reviewed-on: https://gerrit.libreoffice.org/22513
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:45:25 +00:00
Ashod Nakashian
d8df19d064 loolwsd: Authentication and Authorization support
An abstract class to request an access token, given
an authorization grant. The class should be
specialized for each authentication/authorization
type we support.

Currently it's not enabled in the code as it's
an early stage in developing an general API.

Change-Id: I4f2efd376d575640bd3e17c7257994020b11bbe8
Reviewed-on: https://gerrit.libreoffice.org/22512
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-19 21:44:55 +00:00
Miklos Vajna
e3cc05ddcd loolwsd: fix indentation 2016-02-19 08:38:02 +01:00
Henry Castro
7037f07a38 loolwsd: re-work cppunit test websoket 2016-02-18 17:12:16 -04:00
Pranav Kant
9cf0cbf3a6 loolwsd: Allow sending 'tilecombine' messages with 'timestamp'
... and revert back with this parameter in 'tile:' response
messages so that client can identify the response.

This is also required to make client-side tile benchmarking tests
work again.

Change-Id: I307aabf622b17f4dce727d1faf3c83eb566ba905
2016-02-19 00:32:03 +05:30
Pranav Kant
cabb9d7fc3 loolwsd: Add a missing command, 'tilecombine' to documentation
Change-Id: Iedefef83cefca6e88e9676a0bc810ecb766b59ee
2016-02-19 00:32:03 +05:30
Henry Castro
e9de068423 loolwsd: fixes coding style naming convention rules in Util files 2016-02-18 13:00:37 -04:00
Tor Lillqvist
3d817e914e When running against a LOK_PREINIT=1 loolwsd, for some reason we get a BOM
So skip that.
2016-02-18 18:37:02 +02:00
Tor Lillqvist
7a97e1a1bc Remove pointless duplicated information from a log line
The log lines automatically have information telling which process
they come from.
2016-02-18 18:37:02 +02:00
Henry Castro
10070b11a9 loolwsd: fixes coding style naming convention in LOOLKit.cpp 2016-02-18 12:22:30 -04:00
Henry Castro
87718e288d loolwsd: fixes coding style naming convention rules in LOOLBroker.cpp 2016-02-18 10:07:37 -04:00
Miklos Vajna
bad184ced8 loolwsd: -Werror=shadow 2016-02-18 14:45:44 +01:00
Tor Lillqvist
54a2ca8b2b Fix typo 2016-02-18 15:42:45 +02:00
Tor Lillqvist
dd33957904 Mention that the "no Hungarian prefixes" rule is ignored 2016-02-18 12:10:48 +02:00
Henry Castro
76f405af98 loolwsd: add Log::info Preinit stage OK 2016-02-17 23:56:30 -04:00
Ashod Nakashian
7aeeab46f8 loolwsd: Admin manager added with a sample stats command
Change-Id: I7d3c1a5ab573d20d285c1c184cfb88ace17991f8
Reviewed-on: https://gerrit.libreoffice.org/22430
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-17 15:30:02 +00:00
Tor Lillqvist
46e2446db1 Update from LO master 2016-02-17 15:28:00 +02:00
Tor Lillqvist
446035ca69 Make the loTemplate path work inside the chroot, in the preinit case
Create a corresponding symlink inside the chroot.

Now a LOK_PREINIT=1 loolwsd starts up for me successfully. (Note: I
did not say whether it actually works. I don't know yet.)
2016-02-17 15:26:43 +02:00
Pranav Kant
da729a2b74 loolwsd: Add missing callbacks
We have a new callback now in LO core.

Change-Id: I560e5e31d08cf2b9969b8c5f9614630c29ee89c6
2016-02-17 16:24:13 +05:30
Tor Lillqvist
268c48c473 Minor edit 2016-02-17 12:43:03 +02:00
Tor Lillqvist
86f1e5087c Say that running 'make check' is mandatory
(Too bad that it is broken after
9e3d5c0337f9cd1439d4b6b648eb6ac795ff792e.)
2016-02-17 12:35:15 +02:00
Andras Timar
a178d445cd loolwsd: setcap loolkit 2016-02-17 10:42:00 +01:00
Henry Castro
a607159a8a loolwsd: catch exception requestTermination 2016-02-16 17:25:51 -04:00
Henry Castro
9b4099c41c loolwsd: check if the named pipes exists 2016-02-16 17:13:14 -04:00
Henry Castro
3ad641c7bd loolwsd: check if the pipe path exists 2016-02-16 17:04:21 -04:00
Tor Lillqvist
33ecd5ea2d Introduce environment variable SLEEPKITFORDEBUGGER
Sleeps a "kit" process after fork() for the specified number of
seconds to give you time to attach it in the debugger.

Also, if set, have the parent ("broker") process wait indefinitely the
fifo to become writable.

Also clarify the informative message for SLEEPFORDEBUGGER.
2016-02-16 10:49:42 +02:00
Ashod Nakashian
90776a3c0d loolwsd: control preinit vs fork using envars and disable bind-now
Change-Id: I63dffa18da69751ab72463bb64065d235d811db5
Reviewed-on: https://gerrit.libreoffice.org/22381
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-15 23:18:24 +00:00
Tor Lillqvist
b276c3541c Probably we should pass loTemplate to globalPreinit(), not loSubPath
globalPreinit() does not run in a chroot as far as I see, so trying to
use loSubPath as an absolute path will not work. Probably what was
meant is loTemplate, then the libraries at least are found.
2016-02-15 22:59:03 +02:00
Tor Lillqvist
c62d612562 Clean up error reporing
If neither libsofficeapp.so or libmerged.so exist where we look for
them, say so explicitly.

Log the error message from dlerror(), too.

Log the mesage about not forking in all cases when doing that, not
just if lok_preinit is not found.

Execing is not an alternative to fork(), spawning is.
2016-02-15 22:33:56 +02:00
Henry Castro
45754cc36c loolwsd: remove unused TerminationState 2016-02-14 23:08:59 -04:00
Pranav Kant
93fdcb34c4 loolwsd: Do not unload without a successfull load
A load document operation may fail, for example, when user enters
a wrong password or no password. In such cases ToPrisoner sends a
disconnect to child. Child do not need to take any steps in this
case, such as, decrementing the view counter, because nothing was
loaded.

Change-Id: Ib71f871aa1728c6355563362987800dece1679d3
Reviewed-on: https://gerrit.libreoffice.org/22203
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-02-15 00:31:29 +00:00
Henry Castro
cdcb32f013 loolwsd: loolbroker drop capabilities 2016-02-14 14:54:04 -04:00
Henry Castro
f5c163e6da loolwsd: avoid deadlock with mutex and join 2016-02-14 14:39:02 -04:00
Henry Castro
42abb3b1a7 loolwsd: websocket shutdown receive 2016-02-14 14:32:55 -04:00
Henry Castro
72db8ed63a loolwsd: replace the random jail id for lokit process id 2016-02-13 19:01:03 -04:00
Henry Castro
75b552bf71 loolwsd: create named pipes workspace 2016-02-13 13:22:15 -04:00
Henry Castro
9e3d5c0337 loolwsd: ensure chroot jail every lokit process 2016-02-13 10:15:28 -04:00
Tor Lillqvist
8a571401c0 Use less misleadit variable name 2016-02-12 14:09:29 +02:00
Tor Lillqvist
9a15bc6c2c Zero is a valid return value from open()
Sure, it is highly likely that fd 0 is already in other use, but let's
be correct.
2016-02-12 14:01:10 +02:00
Tor Lillqvist
d19433c3b8 Bin unused macros 2016-02-12 13:31:32 +02:00
Tor Lillqvist
ce3dc628be Fix misleading comment 2016-02-12 13:26:19 +02:00
Tor Lillqvist
39bfd5a210 Look for self-copmpiled Poco also in /opt/poco
That's where I have it...

Also, make sure such self-built Poco libraries themselves get copied
into the systemplate.
2016-02-12 13:23:41 +02:00
Andras Timar
97dcfdc7e8 loolwsd: bump version after tarball 2016-02-11 22:33:44 +01:00
Andras Timar
76b72c8008 loolwsd: bump version before tarball 2016-02-11 21:55:36 +01:00