https://github.com/allowexe/safebox
https://github.com/allowexe/safebox
erlang isen-toulon mnesia student-project
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/allowexe/safebox
- Owner: Allowexe
- License: unlicense
- Created: 2025-05-02T14:11:42.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-16T08:26:50.000Z (about 1 year ago)
- Last Synced: 2025-06-14T21:47:32.539Z (about 1 year ago)
- Topics: erlang, isen-toulon, mnesia, student-project
- Language: Erlang
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SafeBox – Projet Erlang TCP avec Mnesia (multi-utilisateur)
**SafeBox** est une application client/serveur écrite en Erlang, permettant à un utilisateur de stocker, récupérer et supprimer des secrets (textes) via une connexion TCP. Chaque secret est encodé en Base64 côté client, et **stocké de manière persistante** sur le serveur grâce à **Mnesia**, avec **gestion multi-utilisateur**.
---
## Objectifs pédagogiques
- Implémenter un modèle client/serveur avec `gen_tcp`
- Gérer des utilisateurs avec login/mot de passe
- Stocker les données de manière persistante avec `Mnesia`
- Appliquer une architecture modulaire et sécurisée
- Comprendre l'encodage Base64 côté client
---
## Technologies utilisées
- **Erlang** (OTP 25+ recommandé)
- **TCP/IP** via `gen_tcp`
- **Mnesia** pour le stockage persistant
- **Encodage Base64** pédagogique côté client
- **Client CLI** interactif
---
## Structure du projet
```
safebox/
├── src/
│ ├── safebox_server.erl # Serveur TCP + Mnesia
│ ├── safebox_cli.erl # Client CLI TCP (multi-utilisateur)
│ └── safebox_crypto.erl # Encodage Base64
├── ebin/ # Fichiers compilés
├── Makefile # Compilation
└── README.md # Ce fichier
```
---
## Compilation
```bash
make
```
---
## Lancement
### Serveur
```bash
erl -pa ebin -sname server -setcookie safebox
```
Puis :
```erlang
c(safebox_server).
safebox_server:start().
```
### Client
```bash
erl -pa ebin -sname client -setcookie safebox
```
Puis :
```erlang
c(safebox_cli).
safebox_cli:start("IP_DU_SERVEUR").
```
---
## Commandes disponibles (client CLI)
```
> register # Créer un nouvel utilisateur
> login # Se connecter avec mot de passe
> add # Ajouter un secret (login requis)
> get # Lire un secret
> del # Supprimer un secret
> quit # Quitter le client
```
Le **login actif est automatiquement transmis au serveur** dans toutes les commandes `add`, `get`, `del`.
---
## Sécurité & encodage
- Le secret est **encodé en Base64** côté client.
- Le serveur ne voit pas les données en clair.
---
## Stockage côté serveur
- Données **persistantes** dans Mnesia avec tables `user` et `secret`.
- Chaque secret est lié à un utilisateur.
- Les données survivent aux redémarrages du serveur.
---
## Limites et pistes d'amélioration
- Ajouter un vrai chiffrement (AES)
- Interface Web
---
## Auteurs
- Clément Veith
- Valentin Scias
- Lucas Ribeiro
- Jean-Baptiste Mattei
- Paul François
---