Initial commit v2

This commit is contained in:
Afonso Franco 2024-05-04 11:39:03 +01:00
parent f1e345caf8
commit 77657c7078
Signed by: afonso
SSH key fingerprint: SHA256:PQTRDHPH3yALEGtHXnXBp3Orfcn21pK20t0tS1kHg54
4 changed files with 60 additions and 2 deletions

View file

@ -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

4
src/client.c Normal file
View file

@ -0,0 +1,4 @@
#include <sys/stat.h>
int main(){
}

0
src/djumbai_dequeue.c Normal file
View file

0
src/djumbai_send.c Normal file
View file