Commit graph

1027 commits

Author SHA1 Message Date
Tor Lillqvist
9d85937a55 We need Poco 1.7.1 now after fb9c9a9ec7
At least Poco::Net::Context::Params is new in Poco 1.7.
2016-03-21 16:28:33 +02:00
Pranav Kant
fb9c9a9ec7 loolwsd: SSL infrastructure
... and use SSL for client connections.

Change-Id: Id396a7c2d1830da8d3b0ce446522403363ac17c1
Reviewed-on: https://gerrit.libreoffice.org/23395
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
2016-03-21 14:05:10 +00:00
Pranav Kant
14823f29b4 loolwsd: JWT Auth - Generation and verification of JWT tokens
Change-Id: If97fa52866f8d1d8976bd1a7340e2dac07e56c03
2016-03-21 15:56:00 +02:00
Pranav Kant
eeb22ce59d loolwsd: Move the authorizationCode to specialized OAuth class
To make room for other classes deriving from AuthBase that do not
require any authorization code, such as JWT authentication.

Change-Id: I69a35dd6f775badd7377949df2ca326c910d4021
2016-03-21 15:54:53 +02:00
Miklos Vajna
2563b3c848 loolwsd: add missing prefix in Admin 2016-03-21 08:59:15 +01:00
Tor Lillqvist
7bc2690497 More members can be private 2016-03-20 21:52:27 +02:00
Tor Lillqvist
26ccae2ac6 Add vim mode line 2016-03-20 21:52:27 +02:00
Tor Lillqvist
e55df2d021 The jailed processes are not "loolwsd" in any sense any more 2016-03-20 21:52:27 +02:00
Miklos Vajna
7a19ff3190 loolwsd: add Log::info() calls for paste 2016-03-18 18:08:41 +01:00
Henry Castro
979b4298b4 loolwsd: update discovery.xml 2016-03-17 19:48:34 -04:00
Andras Timar
638460381e package and deploy discovery.xml 2016-03-17 15:24:09 +01:00
Andras Timar
2b31359346 chmod -x 2016-03-17 15:22:35 +01:00
Henry Castro
3f93cdc1d1 Revert "loolwsd: read WOPI scheme, hostname from config values"
This reverts commit ad980bee02.
2016-03-16 19:58:44 -04:00
Henry Castro
ad980bee02 loolwsd: read WOPI scheme, hostname from config values 2016-03-16 16:45:20 -04:00
Henry Castro
8a6cfdf961 loolwsd: load default configuration files 2016-03-16 15:52:01 -04:00
Miklos Vajna
05f19cd7de loolwsd: fix -Werror,-Wunused-private-field 2016-03-16 09:11:56 +01:00
Henry Castro
bda64dbf2b loolwsd: fix get host from request 2016-03-15 19:16:58 -04:00
Tor Lillqvist
8fda553844 The /dev/random and urandom problem was a red herring
I had been using a file system mounted with nodev to test loolwsd.
2016-03-15 22:24:58 +02:00
Henry Castro
8a2bd1127b loolwsd: WOPI, handle request discovery 2016-03-15 11:35:59 -04:00
Henry Castro
ac09d89505 loolwsd: add libPocoXML 2016-03-15 11:22:45 -04:00
Andras Timar
213e678193 loolwsd: add DocumentBroker.hpp to dist 2016-03-15 13:25:00 +01:00
Jan Holesovsky
6b15dfd552 loolwsd, loleaflet: Rename 'connectionclose' to 'disconnect'. 2016-03-15 10:32:28 +01:00
Jan Holesovsky
2c1664b9d5 loolwsd, loleaflet: Let the server know when we are closing the session.
This is to distinguish the deliberate close of connection, and timeout,
connection drop, or forced close.

When the last session is closed non-deliberately, force a save so that the
edits are not lost.
2016-03-15 09:46:37 +01:00
Andras Timar
345f136145 loolwsd: fix -Werror,-Wshadow 2016-03-14 10:33:11 +01:00
Ashod Nakashian
981e83ece6 loolwsd: fixed convert-to (POST) tests
Change-Id: I6d48971b9daf0beaa16defa0b5f4dfb94575713c
Reviewed-on: https://gerrit.libreoffice.org/23228
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:18:03 +00:00
Ashod Nakashian
cc0a607185 loolwsd: fix tests to pass URL in GET request
Change-Id: Ia4027bfccca49f48feee52c9e4d86505cae02aa1
Reviewed-on: https://gerrit.libreoffice.org/23227
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:17:46 +00:00
Ashod Nakashian
66cd6cd5c3 loolwsd: improved DocumentBroker lifetime and thread handling
Change-Id: Ic8e16f0ec6b273165f7ba4e9b8d95003503530a6
Reviewed-on: https://gerrit.libreoffice.org/23226
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:17:24 +00:00
Ashod Nakashian
e0b14c0e22 loolwsd: give Broker the docKey, not URL
And reject connections with no doc URL.

Change-Id: I11490be6aaea6a4ca2d66d8d2c8d6b52e1e48a04
Reviewed-on: https://gerrit.libreoffice.org/23225
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:17:04 +00:00
Ashod Nakashian
c42ea2ea13 loolwsd: avoid complaining when killing exited child
Change-Id: If819cc2171d241d9e059f2b563cc8f6b8161d304
Reviewed-on: https://gerrit.libreoffice.org/23224
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:16:07 +00:00
Ashod Nakashian
f2eec85b2a loolwsd: jailId ought be random, but must be PID
Ideally, we will have a randomized path for the jails.

Unfortunately, this will make it harder to cleanup
after an ungraceful exit of a child, including recovery
of docs etc.

Having a PID for the jailId makes this issue easier by
implicitly implying the jail path for a given child.

To prevent security leaks, we should at least randomize
the doc directory within the jail, as such:

/chroot/<pid>/user/docs/<rand>/

For now we use jailId=pid=rand.

Change-Id: I948fba0aaef725c9c059780df0a184a86569d898
Reviewed-on: https://gerrit.libreoffice.org/23223
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:15:04 +00:00
Ashod Nakashian
29e9ba68c3 loolwsd: removed unnecessary childId, which is in the child URL
Change-Id: Ibea2cd73657446ad4660400a0a9a38b376499df5
Reviewed-on: https://gerrit.libreoffice.org/23222
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:14:43 +00:00
Ashod Nakashian
1aa7a6cf05 loolwsd: simplified DocumentBroker::create
Change-Id: Ia97be0861c7c178859d695ae5e2862e88cb3ca77
Reviewed-on: https://gerrit.libreoffice.org/23221
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:14:11 +00:00
Ashod Nakashian
0b18a67da2 loolwsd: DocumentBroker cleanup
Change-Id: Iedf2e0afd3c63d24b96ce1c7923c90d86d82bc13
Reviewed-on: https://gerrit.libreoffice.org/23220
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:13:53 +00:00
Ashod Nakashian
38c4acd5f0 loolwsd: moved document loading outside of MasterProcessSession
Change-Id: I8ecce82abcae6d0f07b86c188c91913ff9ca115a
Reviewed-on: https://gerrit.libreoffice.org/23219
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:13:37 +00:00
Ashod Nakashian
c6b47cc437 loolwsd: removed superfluous getJailPath
Change-Id: Iff11ea791866f31a47cf0d0b1d1fb06d18f5be40
Reviewed-on: https://gerrit.libreoffice.org/23218
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:13:02 +00:00
Ashod Nakashian
c0cf48f5ac loolwsd: jailRoot moved in DocumentBroker
Change-Id: Ic9dfce0cb0f2f87fae9a918df500c89673f15716
Reviewed-on: https://gerrit.libreoffice.org/23217
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:11:47 +00:00
Ashod Nakashian
bb16272e11 loolwsd: DocumentStoreManager -> DocumentBroker
Renamed DocumentStoreManager to DocumentBroker and
restructured the handshake process.

Currently, at first client connection to a given doc
a DocumentBroker is created to serve as the clearing house
of all client-side activities on the document.

Prime goals is loading and saving of the document, but
also to guarantee race-free management of the doc.

Each doc has a unique DocKey based on the URL (the path,
without queries). This DocKey is used as key into a map
of all DocumentBrokers. The latter is shared among
MasterProcessSession instances.

Change-Id: I569f2d235676e88ddc690147f3cb89faa60388c2
Reviewed-on: https://gerrit.libreoffice.org/23216
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:10:08 +00:00
Ashod Nakashian
8ef45a975e loolwsd: child URI now includes docKey
Change-Id: I62b91fee98fd853c84c3c5cbb48e65e5c9788ef0
Reviewed-on: https://gerrit.libreoffice.org/23215
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:09:14 +00:00
Ashod Nakashian
8d108a03b8 loolwsd: childId -> jailId
Change-Id: I56af542e6cf1d9cfd493b5033441d2c6a9edee2f
Reviewed-on: https://gerrit.libreoffice.org/23214
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:07:00 +00:00
Ashod Nakashian
019aed134e loolwsd: using random jailId
Change-Id: Ie9501e4346a124994270ca1fac61869ed04b9b72
Reviewed-on: https://gerrit.libreoffice.org/23213
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:06:29 +00:00
Ashod Nakashian
64d2ff98b8 loolwsd: document saving and restructuring
Change-Id: Ia4c644d07a16ba5284e9cdfaf7b838134fbf640b
Reviewed-on: https://gerrit.libreoffice.org/23212
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:06:13 +00:00
Ashod Nakashian
1268507bf0 loolwsd: child WS URL format changed
The current format is more flexible and standard.

/loolwsd/child?sessionId=xxx&jailId=yyy

The sessionId is the client-specific connection ID (which
 is originally passed to the child via the Broker.

The jailId is the PID of the child.

Change-Id: I69c88e84114f9678addf795896ca2da15ca1221b
Reviewed-on: https://gerrit.libreoffice.org/23211
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:05:38 +00:00
Ashod Nakashian
2a11e1840a loolwsd: improved creating kit sessions
Change-Id: Icc49dc37296fcc87928fc5d4fa4a6a18c3413deb
Reviewed-on: https://gerrit.libreoffice.org/23210
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:04:56 +00:00
Ashod Nakashian
0d8fcf5699 loolwsd: logging
Change-Id: I9a4dc248aca87983e3d7d3ace0071e5bbf92e688
Reviewed-on: https://gerrit.libreoffice.org/23209
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:04:17 +00:00
Ashod Nakashian
52d9e2033c loolwsd: improved WopiStorage with working PutFile
Change-Id: I2bba701ca0c89783851757e91e9336a64f6f6c52
Reviewed-on: https://gerrit.libreoffice.org/23208
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:03:30 +00:00
Ashod Nakashian
e014b0b22f loolwsd: Storage passed to DocumentStoreManager
Change-Id: Ifa7787dea5f558f166d02467c253375df88ae408
Reviewed-on: https://gerrit.libreoffice.org/23207
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:02:23 +00:00
Ashod Nakashian
f1007266e1 loolwsd: DocumentStoreManager shared by MasterProcessSession instances
Change-Id: Id7ada60387cafdf742690dbf345bb1e703b2ca76
Reviewed-on: https://gerrit.libreoffice.org/23206
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:01:48 +00:00
Ashod Nakashian
9bf88691c6 loolwsd: DocumentStoreManager maintains Storage instance
Change-Id: I0c86a7a7a3bb8d52a3f83570ccb4eded42ef4090
Reviewed-on: https://gerrit.libreoffice.org/23205
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:01:07 +00:00
Ashod Nakashian
73bde2b5d2 loolwsd: moved DocumentURI into own file and renamed to DocumentStoreManager
Change-Id: I5948ae532f0fd5917b99369733ec5ea36da2e437
Reviewed-on: https://gerrit.libreoffice.org/23204
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 03:00:35 +00:00
Ashod Nakashian
0ee9119bc7 loolwsd: refactored DocumentURI creation
Change-Id: Icc1043fdc717f057c97d2b00a5cfc399ee15aa79
Reviewed-on: https://gerrit.libreoffice.org/23203
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
2016-03-14 02:59:49 +00:00