diff --git a/.gitignore b/.gitignore index 022f496..607f345 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ /config.yml /admin-key.json /.bouncer-token -/data \ No newline at end of file +/data +/out \ No newline at end of file diff --git a/doc/README.md b/doc/README.md index e738980..2e96eb7 100644 --- a/doc/README.md +++ b/doc/README.md @@ -5,6 +5,7 @@ ## Référence +- [(FR) - Layers](./fr/references/layers/README.md) - [Fichier de configuration](../misc/packaging/common/config.yml) ## Tutoriels diff --git a/doc/fr/general-architecture.md b/doc/fr/general-architecture.md index 0d495a1..2ddb23a 100644 --- a/doc/fr/general-architecture.md +++ b/doc/fr/general-architecture.md @@ -1,3 +1,30 @@ -## Architecture générale +# Architecture générale -> TODO \ No newline at end of file +## Modèles de déploiement + +### Déploiement mono-noeud + +![](../resources/deployment_fr.png) +## Terminologie + +Voici une liste des termes utilisés dans le lexique Bouncer. +### Proxy + +Un "proxy" est une entité logique définissant le relation suivante: + +- Un ou plusieurs patrons de filtrage sous la forme `:`. Ceux ci identifient le ou les domaines associés à l'entité; +- Une URL cible qui servira de base pour la réécriture des requêtes. + +Un "proxy" peut avoir zéro ou plusieurs "layers" associés. + +Un "proxy" peut être activé ou désactivé. + +Un "proxy" a un poids qui définit son niveau de priorité dans la pile de traitement (plus son poids est élevé plus il est prioritaire). + +### Layer + +Un "layer" (calque) est une entité logique définissant un traitement à appliquer aux requêtes et/ou aux réponses transitant par un proxy. + +Un "layer" peut être activé ou désactivé. + +Un "layer" a un poids qui définit son niveau de priorité dans la pile de traitement (plus son poids est élevé plus il est prioritaire). \ No newline at end of file diff --git a/doc/fr/references/layers/README.md b/doc/fr/references/layers/README.md new file mode 100644 index 0000000..ff66e21 --- /dev/null +++ b/doc/fr/references/layers/README.md @@ -0,0 +1,5 @@ +# Layers + +Vous trouverez ci-dessous la liste des entités "Layer" activables sur vos entité "Proxy": + +- [Queue](./queue) - File d'attente dynamique \ No newline at end of file diff --git a/doc/fr/references/layers/queue.md b/doc/fr/references/layers/queue.md new file mode 100644 index 0000000..e9715b3 --- /dev/null +++ b/doc/fr/references/layers/queue.md @@ -0,0 +1,27 @@ +# Layer "Queue" + +## Description + +Ce layer permet d'ajouter un mécanisme de file d'attente dynamique au proxy associé. + +## Type + +`queue` + +## Options + +### `capacity` + +- **Type:** `number` +- **Valeur par défaut:** `1000` +- **Description:** Capacité maximum de la file d'attente. + +### `keepAlive` + +- **Type:** `string` (Voir [`time.ParseDuration()`](https://pkg.go.dev/time#ParseDuration) pour plus d'informations sur le format) +- **Valeur par défaut:** `1m` +- **Description:** Durée de vie d'une session dans la file d'attente sans activité avant expiration. + +### Schéma + +Voir le [schéma JSON](../../../../internal/queue/schema/layer-options.json). \ No newline at end of file diff --git a/doc/resources/deployment_fr.plantuml b/doc/resources/deployment_fr.plantuml new file mode 100644 index 0000000..974c62d --- /dev/null +++ b/doc/resources/deployment_fr.plantuml @@ -0,0 +1,37 @@ +@startuml +skinparam linetype ortho +skinparam ranksep 150 +skinparam nodesep 50 +top to bottom direction + +frame "Exemple de déploiement mono-noeud" as ExampleSimpleNode { + + actor "Navigateur Web" as WebNavigator + + node "Serveur Bouncer" as BouncerServer { + actor "CLI d'administration" as AdminCLI + + database "Redis" as RedisDatabase + + component "bouncer-proxy" as BouncerProxyService + component "bouncer-admin" as BouncerAdminService + + folder "/etc/bouncer" as BouncerConfigFolder + } + + node "Serveur distant" as RemoteServer { + component "Site Web" as RemoteWebsite + } + + WebNavigator --down0)- BouncerProxyService: "TCP/80 (HTTP)" + AdminCLI -0)- BouncerAdminService: "TCP/8081 (HTTP)" + + BouncerProxyService -down0)-- RemoteWebsite: "TCP/80 (HTTP)\nTCP/443 (HTTPS)" + + BouncerAdminService .down.> RedisDatabase: reads/writes + BouncerProxyService .down.> RedisDatabase: reads + + BouncerAdminService ..> BouncerConfigFolder: uses + BouncerProxyService ..> BouncerConfigFolder: uses + +@enduml \ No newline at end of file diff --git a/doc/resources/deployment_fr.png b/doc/resources/deployment_fr.png new file mode 100644 index 0000000..7dfd64e Binary files /dev/null and b/doc/resources/deployment_fr.png differ diff --git a/internal/queue/schema/layer-options.json b/internal/queue/schema/layer-options.json index 5f20bf7..7cfd568 100644 --- a/internal/queue/schema/layer-options.json +++ b/internal/queue/schema/layer-options.json @@ -7,12 +7,6 @@ "type": "number", "minimum": 0 }, - "matchers": { - "type": "array", - "items": { - "type": "string" - } - }, "keepAlive": { "type": "string" }