diff --git a/README.md b/README.md index a6bbb8c..61771d5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,57 @@ -# djumbai +# Djumbai + +A UNIX local messaging service + +## Components + +1. **Initiation of Message Sending:** + - A Unix user initiates a message sending process using a Command Line Interface (CLI) tool. + +2. **Creation of Processes:** + - The CLI tool spawns a process called `djumbai-client-send`. This process runs under the context of the initiating Unix user. + - `djumbai-client-send` spawns another process called `djumbai-enqueue`, which operates under the `djumbaiq` user context. + +3. **Message Queuing:** + - `djumbai-enqueue` process writes the message to a message queue, which functions as a named pipe. This queue acts as an intermediary storage for the message. + +4. **Message Retrieval:** + - The `djumbai-dequeue` process, functioning as a daemon, runs under the `djumbaid` user context. Its purpose is to retrieve messages from the message queue. + +5. **Message Transmission:** + - Once messages are retrieved, `djumbai-dequeue` sends them to the `djumbai-send` process. This process operates with root privileges. + +6. **Receiving and Delivery:** + - `djumbai-send` spawns a process named `djumbai-client-receive`, which operates under the context of the user intended to receive the message. + - `djumbai-client-receive` writes the received message to the recipient's message-box. + +7. **Message Retrieval by User:** + - The recipient Unix user can utilize the CLI tool at any time to read messages stored in their inbox. + +This structured breakdown elucidates the sequential steps involved in the Unix message sending process, including process spawning, message queuing, retrieval, transmission, and eventual delivery to the intended recipient. + + +## Cenas concretas + +Mail queue - FIFO em /opt/djumbai/mailqueue e so pode ser acedida por users do grupo djumbai-queue, que contem djumbai-enqueue e djumbai-dequeue + +Mailbox pessoal - Diretoria em /opt/djumbai/mailbox/user/$uid, que so pode ser acedida pelo user com UID $uid + +Mailbox grupo - Diretoria em /opt/djumbai/mailbox/group/$gid, que so pode ser acedida pelo grupo com GID $gid + +SentBox pessoal - Diretoria em /opt/djumbai/sentbox/user/$uid, que so pode ser acedida pelo user com UID $uid + +SentBox grupo - Diretoria em /opt/djumbai/sentbox/grupo/$gid, que so pode ser acedida pelo grupo com GID $gid + +Repositorio de chaves publicas de utilizadores - Diretoria em /opt/djumbai/pub_keys/user/$uid que contem as chaves publicas de cada utilizador. Apenas o proprio user tem acesso de escrita no ficheiro da sua chave publica + +Repositorio de chaves publicas de grupos - Diretoria em /opt/djumbai/pub_keys/group/$gid que contem as chaves publicas de cada grupo. Apenas membros do proprio grupo tem acesso de escrita no ficheiro da sua chave publica + +Repositorio de chaves privadas de utilizadores - Diretoria em /opt/djumbai/priv_keys/user/$uid que contem as chaves privadas de cada utilizador. Apenas o proprio user tem acesso de leitura e escrita no ficheiro da sua chave publica + +Repositorio de chaves privadas de grupos - Diretoria em /opt/djumbai/priv_keys/group/$gid que contem as chaves privadas de cada grupo. Apenas membros do proprio grupo tem acesso de leitura e escrita no ficheiro da sua chave privada + +Envio de mensagem para utilizador - Mensagem assinada com chave privada do remetente e cifrada com a chave publica do destinatario. + +Envio de mensagem para grupo - Mensagem assinada com chave privada do remetente e cifrada com a chave publica do grupo. + -A UNIX local messaging service \ No newline at end of file diff --git a/src/client.c b/src/client.c new file mode 100644 index 0000000..70f9af9 --- /dev/null +++ b/src/client.c @@ -0,0 +1,4 @@ +#include + +int main(){ +} diff --git a/src/djumbai_dequeue.c b/src/djumbai_dequeue.c new file mode 100644 index 0000000..e69de29 diff --git a/src/djumbai_send.c b/src/djumbai_send.c new file mode 100644 index 0000000..e69de29