{"id":28418559,"url":"https://github.com/allowexe/safebox","last_synced_at":"2025-06-28T04:31:44.069Z","repository":{"id":296624385,"uuid":"976661748","full_name":"Allowexe/SafeBox","owner":"Allowexe","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-16T08:26:50.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T21:47:32.539Z","etag":null,"topics":["erlang","isen-toulon","mnesia","student-project"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Allowexe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-02T14:11:42.000Z","updated_at":"2025-05-31T18:56:59.000Z","dependencies_parsed_at":"2025-06-01T10:47:57.407Z","dependency_job_id":"073022b7-3e00-4a67-89f2-8780d0811469","html_url":"https://github.com/Allowexe/SafeBox","commit_stats":null,"previous_names":["allowexe/safebox"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Allowexe/SafeBox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allowexe%2FSafeBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allowexe%2FSafeBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allowexe%2FSafeBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allowexe%2FSafeBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Allowexe","download_url":"https://codeload.github.com/Allowexe/SafeBox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allowexe%2FSafeBox/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262375691,"owners_count":23301338,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erlang","isen-toulon","mnesia","student-project"],"created_at":"2025-06-04T11:39:02.208Z","updated_at":"2025-06-28T04:31:44.060Z","avatar_url":"https://github.com/Allowexe.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SafeBox – Projet Erlang TCP avec Mnesia (multi-utilisateur)\n\n**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**.\n\n---\n\n## Objectifs pédagogiques\n\n- Implémenter un modèle client/serveur avec `gen_tcp`\n- Gérer des utilisateurs avec login/mot de passe\n- Stocker les données de manière persistante avec `Mnesia`\n- Appliquer une architecture modulaire et sécurisée\n- Comprendre l'encodage Base64 côté client\n\n---\n\n## Technologies utilisées\n\n- **Erlang** (OTP 25+ recommandé)\n- **TCP/IP** via `gen_tcp`\n- **Mnesia** pour le stockage persistant\n- **Encodage Base64** pédagogique côté client\n- **Client CLI** interactif\n\n---\n\n## Structure du projet\n\n```\nsafebox/\n├── src/\n│   ├── safebox_server.erl       # Serveur TCP + Mnesia\n│   ├── safebox_cli.erl          # Client CLI TCP (multi-utilisateur)\n│   └── safebox_crypto.erl       # Encodage Base64\n├── ebin/                        # Fichiers compilés\n├── Makefile                     # Compilation\n└── README.md                    # Ce fichier\n```\n\n---\n\n## Compilation\n\n```bash\nmake\n```\n\n---\n\n## Lancement\n\n### Serveur\n\n```bash\nerl -pa ebin -sname server -setcookie safebox\n```\n\nPuis :\n\n```erlang\nc(safebox_server).\nsafebox_server:start().\n```\n\n### Client\n\n```bash\nerl -pa ebin -sname client -setcookie safebox\n```\n\nPuis :\n\n```erlang\nc(safebox_cli).\nsafebox_cli:start(\"IP_DU_SERVEUR\").\n```\n\n---\n\n## Commandes disponibles (client CLI)\n\n```\n\u003e register \u003cutilisateur\u003e     # Créer un nouvel utilisateur\n\u003e login \u003cutilisateur\u003e        # Se connecter avec mot de passe\n\u003e add \u003cclé\u003e                  # Ajouter un secret (login requis)\n\u003e get \u003cclé\u003e                  # Lire un secret\n\u003e del \u003cclé\u003e                  # Supprimer un secret\n\u003e quit                       # Quitter le client\n```\n\nLe **login actif est automatiquement transmis au serveur** dans toutes les commandes `add`, `get`, `del`.\n\n---\n\n## Sécurité \u0026 encodage\n\n- Le secret est **encodé en Base64** côté client.\n- Le serveur ne voit pas les données en clair.\n\n---\n\n## Stockage côté serveur\n\n- Données **persistantes** dans Mnesia avec tables `user` et `secret`.\n- Chaque secret est lié à un utilisateur.\n- Les données survivent aux redémarrages du serveur.\n\n---\n\n## Limites et pistes d'amélioration\n\n- Ajouter un vrai chiffrement (AES)\n- Interface Web\n\n---\n\n## Auteurs\n\n- Clément Veith\n- Valentin Scias\n- Lucas Ribeiro\n- Jean-Baptiste Mattei\n- Paul François\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallowexe%2Fsafebox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallowexe%2Fsafebox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallowexe%2Fsafebox/lists"}