summaryrefslogtreecommitdiff
path: root/README_IPC.md
diff options
context:
space:
mode:
Diffstat (limited to 'README_IPC.md')
-rw-r--r--README_IPC.md49
1 files changed, 12 insertions, 37 deletions
diff --git a/README_IPC.md b/README_IPC.md
index b9d754a..26100d0 100644
--- a/README_IPC.md
+++ b/README_IPC.md
@@ -2,25 +2,25 @@ About the Inter Process Communication Protocol
==============================================
JWebmail needs to read a users mail box in maildir format.
-JWebmail runs under its own user also called jwebmail.
-The mailbox has rights of its own user or there is
-a special user for all mailboxes. To gain access there is a setuid program
-called qmail-authuser that checks acces rights and starts another program.
+JWebmail runs under its own user commonly called jwebmail.
+The mailbox has rights of its own user or there is a special user for all
+mailboxes under a domain. To gain access there is a setuid program called
+qmail-authuser that checks acces rights and starts another program.
This program is called `extractor`.
Version 1
---------
-Previously all arguments where passed by command line arguments and json
-was returned.
+In this version all arguments where passed by command line arguments and
+json was returned.
Binary data was sent after a json header and a newline.
Version 2
---------
-Now protobuf is used for message interchange.
+Here protobuf is used for message interchange.
-Currently a process in spawned for every command.
+A process in spawned for every command.
The method is given as a process argument and the arguments are a single
message on stdin which is close afterwards. The response is a single protobuf
message on stdout after which the process exits.
@@ -28,32 +28,7 @@ message on stdout after which the process exits.
Version 3
---------
-In the future one process is spawned for every jwebmail request.
-For this the method name must be dynamic.
-
-I propose the following protocol:
-
- request
- 32 bit big endian unsigned integer
- ascii string (method name)
- 32 bit big endian unsigned integer
- protobuf message
-
- response
- 32 bit big endian unsigned integer
- protobuf message
-
-On end the request file descriptor is closed.
-An error may close stdout early.
-
-Exit codes
-----------
-
-- 1 qma
-- 2 qma
-- 3 err response
-- 4 user error
-- 5 issue switching to user
-- 6 operation not supported
-- 110 qma
-- 111 qma
+In this version one process is spawned for every jwebmail request.
+This is done by switching to varlink a json based rpc protocol.
+A small disadvantage is that all binary data needs to be base64 encoded
+and passed inside of a json string.