[Libreoffice-commits] online.git: loolwsd/protocol.txt loolwsd/README
Pranav Kant
pranavk at collabora.com
Wed May 11 10:09:11 UTC 2016
loolwsd/README | 17 ++++++-
loolwsd/protocol.txt | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+), 2 deletions(-)
New commits:
commit 2b01bdc7ada1b61a40ad528f19a8b13a579ded77
Author: Pranav Kant <pranavk at collabora.com>
Date: Wed May 11 15:37:27 2016 +0530
Document admin console commands and its scope
Change-Id: I5504a8350d6383e64e85b46454586c1e5c8eed87
diff --git a/loolwsd/README b/loolwsd/README
index 995cb35..4b508fe 100644
--- a/loolwsd/README
+++ b/loolwsd/README
@@ -158,8 +158,21 @@ For interactive testing, you can use the 'connect' program. It accepts
Admin Panel
-----------
-You can access the admin panel by directly accessing the admin.html file from loleaflet directory.
-See loleaflet/README for more details.
+You can access the admin panel by directly accessing the admin.html file
+from loleaflet directory. See loleaflet/README for more details.
+
+Websocket connections to admin console can be made at path: /adminws/ on the
+same url and port as loolwsd is running on. However, one needs a JWT token to
+authenticate to the admin console websocket. This is stored as a cookie with
+`Path: /adminws/` when user successfully authenticates when trying to access
+/loleaflet/dist/admin/admin*html files (HTTP Basic authentication). Token
+is expired after every half an hour, so websocket connection to admin console
+must be established within this period.
+
+It should also be possible to do various sorts of tasks such as killing
+documents that are open for more than last 10 hours etc. See protocol.txt for
+various commands. Only tricky thing here is getting the JWT token which can
+be obtained as described above.
Debugging
---------
diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt
index 4aa4a97..25ea3f5 100644
--- a/loolwsd/protocol.txt
+++ b/loolwsd/protocol.txt
@@ -328,3 +328,125 @@ saveas: url=<url>
<url> is a URL of the destination, encoded. Sent from the child to the
parent after a saveAs() completed.
+
+Admin console
+===============
+
+Client can query admin console to get information about currently opened
+documents. Following information about the document is exposed:
+
+* PID of the process hosting the document
+* Number of client views opening this document
+* Name of the document (URL encoded)
+* Memory consumed by the process (in kilobytes)
+* Elapsed time since first view of document was opened (in seconds)
+
+Admin console can also opt to get notified of various events on the server. For
+example, getting notified when a new document is opened or closed. Notifications
+are commands sent from server to the client over established websocket.
+
+client -> admin
+==============
+
+subscribe <space seperated list of commands>
+
+ Where list of commands are the ones that client wants to get notified
+ about. For eg. 'subscribe adddoc rmdoc'
+
+documents
+
+ Queries the server for list of opened documents. See `documents` command
+ in admin -> client section for format of the response message
+
+total_mem
+
+ Queries for total memory being consumed by the server in kilobytes.
+ This includes processes - loolwsd, loolforkit, and child processes
+ hosting various documents
+
+active_docs_count
+
+ Returns total number of documents opened
+
+active_users_count
+
+ Returns total number of users connected. This is a summation of number
+ of views opened of each document.
+
+settings
+
+ Queries the server for configurable settings from admin console.
+
+set <setting1=value1> <setting2=value2> ...
+
+ Sets a particular setting (must be one returned as response to
+ `settings` command) to value.
+
+ There are only 4 configurable settings as of now.
+
+ mem_stats_size: Number of memory consumed values that server caches
+ atmost.
+ mem_stats_interval: Time after which server calculates its total memory
+ consumption
+ cpu_stats_size: Number of cpu usage values that server caches atmost.
+ cpu_stats_interval: Time after which server calculates its total cpu
+ usage.
+
+ Note: cpu stats gathering is a TODO, so not functional as of now.
+
+kill <pid>
+
+ <pid> process id of the document to kill. All sessions of document would be
+ killed. There is no way yet to kill individual sessions.
+
+admin -> client
+===============
+
+Commands marked with [*] are notifications that are delivered only if client is
+subscribed to these commands using `subscribe` (see client->admin
+section). Others are just response messages to some client command.
+
+[*] adddoc <pid> <filename> <viewid> <memory consumed>
+
+ <pid> process id hosting the document
+ <filename> URL encoded name of the file
+ <viewid> string identifying the view of this document
+ <memory consumed> RSS of <pid> in kilobytes
+
+[*] rmdoc <pid> <viewid>
+
+ <pid> process id hosting the document
+ <viewid> view which was closed
+
+[*] mem_stats <memory consumed>
+
+ <memory consumed> in kilobytes sent from admin -> client after every
+ mem_stats_interval (see `set` command for list of settings)
+
+
+documents <pid> <filename> <number of views> <memory consumed> <elapsed time>
+<pid> <filename> ....
+...
+
+ <elapsed time> is in seconds since the first view of the document was opened
+ <number of views> Number of users/views opening this(<pid>) document
+ Other parameters are same as mentioned in `adddoc`
+
+ Each set document attributes is separated by a newline.
+
+total_mem <memory>
+
+ <memory> in kilobytes
+
+active_docs_count <count>
+
+active_users_count <count>
+
+settings <setting1=value1> <setting2=value2> ...
+
+ Current value of each configurable setting.
+
+mem_stats <comma separated list of memory consumed values>
+
+ The length of the list is equal to the value of setting
+ mem_stats_size`
More information about the Libreoffice-commits
mailing list