diff options
Diffstat (limited to 'README_IPC.md')
-rw-r--r-- | README_IPC.md | 49 |
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. |