libreoffice-online/loolwsd
Tor Lillqvist eade187ebb Bin pointless logging
We logged effectively the same information a few lines earlier.
2015-04-22 21:50:04 +03:00
..
.gitignore Work in progress: "pre-forking", chroot, etc. Non-working state 2015-04-22 21:42:17 +03:00
AUTHORS
ChangeLog
configure.ac Work in progress: "pre-forking", chroot, etc. Non-working state 2015-04-22 21:42:17 +03:00
Connect.cpp Now the chroot etc re-work is getting closer to working 2015-04-22 21:44:17 +03:00
COPYING
INSTALL
LoadTest.cpp Tweak temporary timing parameters a bit while hacking 2015-04-22 21:47:53 +03:00
LoadTest.hpp
LOKitClient.cpp Bump Emacs fill-column to 100 2015-04-22 21:43:11 +03:00
LOKitHelper.hpp Bump Emacs fill-column to 100 2015-04-22 21:43:11 +03:00
LOOLProtocol.cpp Now the chroot etc re-work is getting closer to working 2015-04-22 21:44:17 +03:00
LOOLProtocol.hpp Now the chroot etc re-work is getting closer to working 2015-04-22 21:44:17 +03:00
LOOLSession.cpp Bin pointless logging 2015-04-22 21:50:04 +03:00
LOOLSession.hpp _childId is used only in MasterProcessSession 2015-04-22 21:49:53 +03:00
LOOLWSD.cpp _childId is used only in MasterProcessSession 2015-04-22 21:49:53 +03:00
LOOLWSD.hpp Use separate classes derived from LOOLSession for parent and child processes 2015-04-22 21:48:04 +03:00
Makefile.am Now the chroot etc re-work is getting closer to working 2015-04-22 21:44:17 +03:00
NEWS
protocol.txt
README Mention that sudo is used 2015-04-22 21:49:23 +03:00
setup-sys-chroot Work in progress: "pre-forking", chroot, etc. Non-working state 2015-04-22 21:42:17 +03:00
TileCache.cpp Bump Emacs fill-column to 100 2015-04-22 21:43:11 +03:00
TileCache.hpp
TODO This is done 2015-04-22 21:46:50 +03:00
Util.cpp Factor out WebSocket::shutdown() ignoring IOException 2015-04-22 21:48:42 +03:00
Util.hpp Factor out WebSocket::shutdown() ignoring IOException 2015-04-22 21:48:42 +03:00

LibreOffice On-Line WebSocket server
====================================

Installation
------------

LibreOffice On-Line WebSocket server has the following dependencies:

* libpng
* Poco library: http://pocoproject.org/index.html.

Poco can be built with ./configure --prefix=/opt/poco && make install, but
distro packages exist too.

On openSUSE, you can use:

    zypper ar http://download.opensuse.org/repositories/devel:/libraries:/c_c++/openSUSE_13.2/devel:libraries:c_c++.repo
    zypper in poco

Building
--------

loolwsd uses autoconf/automake, so build using the usual:

    autoreconf
    automake --add-missing
    ./configure --enable-silent-rules --with-lokit-path=<MASTER>/include
    make

where <MASTER> is the location of the LibreOffice source tree.

Note that the loolwsd program needs the CAP_SYS_CHROOT capability,
thus you will be asked the root password when running make as it
invokes sudo to run /sbin/setcap.

If you have self-built Poco, add the following to ./configure:

    --with-poco-includes=<MASTER>/include --with-poco-libs=<...>/lib

If you have the Poco debugging libraries (eg. you have a self-built
Poco), you can add --enable-debug to the configure options for
additional debugging.

For Windows, a proper VS2013 project is needed.

There is still unconditional debugging output etc. This is a work in
progress.

Running
-------

Run loolwsd for instance like this, to run it the way it is supposed
to eventually be run "for real":

    ./loolwsd --systemplate=<SYSTEMPLATE> --lotemplate=<MASTER>/instdir --childroot=<ROOTFORJAILS>

and connect loleaflet to that (see loleaflet/README for more info).

Again, <MASTER> is location of the LibreOffice source tree with a built
LibreOffice.  This is work in progress, and consequently needs the latest
LibreOffice master.

The <SYSTEMPLATE> is a directory tree set up using the
setup-sys-chroot script here. It is intended to contain the runtime
environment needed by the LibreOffice dynamic libraries used through
LibreOfficeKit. Improvements to that script are very likely needed on
various distros.

The <ROOTFORJAILS> directory above is a presumably initially empty
directory under which loolwsd will create chroot jails for editing
each specific document.

As loolwsd uses hardlinks to "copy" the contents of both <SYSTEMPLATE>
and the <MASTER>/instdir directories into each chroot jail,
<SYSTEMPLATE> and <ROOTFORJAILS> need to be on the same file system as
<MASTER>/instdir.

If you plan to hack on loolwsd, you probably want to familiarize
yourself with loolwsd's --test and --numprespawns switches, and the
'connect' test program.

For interactive testing, you can use the loolwsd --test switch, or you
can use the 'connect' program. Both accept "commands" from the
protocol on standard input. You can either used them tuly
interactively, or edit input lines into a file, or use shell
scripting, etc. For instance:

    (echo load /some/where/foo.odt; echo tile width=500 height=500 tileposx=0 tileposy=0 tilewidth=10000 tileheight=10000; sleep 10) |
    ./loolwsd --systemplate=/home/tml/lo/master/lool-sys-template --lotemplate=/home/tml/lo/master/instdir --childroot=/home/tml/lo/master/lool-child-root


Protocol description
--------------------

See protocol.txt for a description of the protocol to be used over the
websocket.