webserver-galiouris

Crates.iowebserver-galiouris
lib.rswebserver-galiouris
version0.5.3
created_at2025-03-24 16:43:45.762395+00
updated_at2025-04-28 11:26:54.121511+00
descriptionAPI Webserver
homepage
repository
max_upload_size
id1603978
size1,909,109
Florentin Galiouris (SiRouLaG)

documentation

README

Webserver Galiouris

Description

Webserver Galiouris est un serveur HTTP léger et personnalisable écrit en Rust. Il permet de servir des fichiers statiques, de journaliser les requêtes et de suivre les statistiques du serveur. La configuration se fait via un fichier config.toml.

Fonctionnalités

  • Serveur de fichiers statiques : Sert des fichiers depuis un répertoire configurable.
  • Types MIME personnalisés : Définit les types MIME pour les extensions de fichiers dans la configuration.
  • Pages d'erreur : Pages d'erreur personnalisables pour les erreurs 404.
  • Journalisation : Journalise les requêtes avec un répertoire et un préfixe configurables.
  • Statistiques : Suit les requêtes totales, les codes de statut et le temps de fonctionnement. Les statistiques sont accessibles via l'endpoint /stats.
  • Méthodes HTTP : Supporte les méthodes GET et HEAD.
  • Pipeline CI/CD : Intégration avec GitLab pour la construction, les tests et le déploiement.

Structure du projet

  • src/ : Contient le code source du serveur.
    • main.rs : Point d'entrée de l'application.
    • server/ : Logique principale du serveur, y compris la gestion des requêtes.
    • config.rs : Chargeur de configuration pour config.toml.
    • logger/ : Gestion des journaux de requêtes.
    • utils/ : Fonctions utilitaires pour la détection des types MIME et des fichiers binaires.
    • stats/ : Suivi des statistiques du serveur.
    • http_responses/ : Génération des réponses HTTP.
  • config.toml : Fichier de configuration pour les paramètres du serveur.
  • .gitlab-ci.yml : Configuration du pipeline CI/CD pour GitLab.

Versionnement

Le projet suit le versionnement sémantique. La version actuelle est 0.5.2. Le pipeline CI/CD garantit :

  1. Étape de construction : Compile le projet avec la dernière version de Rust.
  2. Étape de test : Exécute les tests unitaires pour garantir la qualité du code.
  3. Étape de déploiement : Déploie l'application sur crates.io lorsque des modifications sont poussées sur la branche main.

Configuration

Le serveur est configuré via le fichier config.toml. Exemple de configuration :

[server]
static_root = "ressources"
host = "localhost"
port = 8080

[logging]
directory = "logs"
prefix = "access_"

[error_pages]
not_found = "notFound.html"

[mime_types]
html = "text/html"
css = "text/css"
js = "text/javascript"
png = "image/png"
jpg = "image/jpeg"
jpeg = "image/jpeg"
gif = "image/gif"
svg = "image/svg+xml"
json = "application/json"
txt = "text/plain"

Exécution du projet

Prérequis

  • Installer Rust.
  • S'assurer que cargo est disponible dans le PATH.

Commandes

  1. Construire le projet :
    cargo build
    
  2. Lancer le serveur :
    cargo run
    
  3. Exécuter les tests :
    cargo test
    

Accéder au serveur

  • Par défaut, le serveur est accessible sur http://localhost:8080.
  • Placez vos fichiers statiques dans le répertoire ressources (ou celui spécifié dans config.toml).
  • Les statistiques du serveur sont accessibles sur http://localhost:8080/stats.

Pipeline CI/CD

Le fichier .gitlab-ci.yml définit le pipeline :

  • Job de construction : Compile le projet avec l'image Rust la plus récente.
  • Job de test : Exécute tous les tests pour garantir le bon fonctionnement.
  • Job de déploiement : Publie le projet sur crates.io lorsque des modifications sont poussées sur la branche main.
Commit count: 0

cargo fmt