119 lines
4.5 KiB
Markdown
119 lines
4.5 KiB
Markdown
|
|
# Guide de Développement : Créer son propre outil Firewall
|
||
|
|
|
||
|
|
Ce guide explique comment étendre l'outil d'analyse réseau en ajoutant un nouveau outil pour les firewalls.
|
||
|
|
|
||
|
|
> **Note :** Tout au long de ce guide, remplacez **`OUTIL`** (en majuscule ou minuscule) par le nom de l'outil que vous souhaitez développer'.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Étape 1 : Création du script de l'outil
|
||
|
|
|
||
|
|
Dans le dossier `Parseurs_config_Firewall/src/scripts/` (ou `script/` selon votre arborescence), créez un nouveau fichier Python nommé **`export_OUTIL.py`**.
|
||
|
|
|
||
|
|
*Il est fortement recommandé de s'inspirer des parseurs existants comme `export_matrice_routage.py`, `export_matrice_flux.py` ou `export_interfaces.py`.*
|
||
|
|
|
||
|
|
Voici le squelette de code à utiliser :
|
||
|
|
|
||
|
|
```python
|
||
|
|
def export_to_excel(json_file_path, output_file_excel):
|
||
|
|
"""
|
||
|
|
Export firewall data from JSON to Excel
|
||
|
|
Args:
|
||
|
|
json_file_path: Path to the JSON file to process
|
||
|
|
output_file_excel: Path to the output Excel file
|
||
|
|
"""
|
||
|
|
|
||
|
|
# Votre code
|
||
|
|
```
|
||
|
|
|
||
|
|
## Étape 2 : Intégration dans le moteur principal (`main.py`)
|
||
|
|
|
||
|
|
Pour que le script global prenne en charge le nouveau modèle, ouvrez le fichier `Parseurs_config_Firewall/src/main.py` :
|
||
|
|
|
||
|
|
1. Importez votre nouvelle fonction en haut du fichier :
|
||
|
|
```python
|
||
|
|
from scripts.export_OUTIL import export_to_excel as export_OUTIL_to_excel
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Ajoutez la condition correspondante dans le bloc de sélection de l'outil :
|
||
|
|
```python
|
||
|
|
if "-X" in sys.argv:
|
||
|
|
print(f"\nGénération de l'export les OUTIL...")
|
||
|
|
if "-o" in sys.argv:
|
||
|
|
o_index = sys.argv.index("-o")
|
||
|
|
if o_index + 1 < len(sys.argv):
|
||
|
|
output_file_excel = os.path.join(f"{output_path}OUTIL_{firewall_type}_{sys.argv[o_index + 1]}.xlsx")
|
||
|
|
else:
|
||
|
|
print("Erreur: nom de fichier de sortie manquant après '-o'.")
|
||
|
|
sys.exit(1)
|
||
|
|
else:
|
||
|
|
timestamp = time.strftime("%Y%m%d")
|
||
|
|
output_file_excel = f"{output_path}OUTIL_{firewall_type}_{timestamp}.xlsx"
|
||
|
|
output_file_excel = verify_if_file_exists(output_file_excel)
|
||
|
|
excel_file = export_OUTIL_to_excel(output_file_json, output_file_excel)
|
||
|
|
print(f"✓ Processus terminé. Fichiers générés:\n - JSON: {output_file_json}\n - Excel: {excel_file}")
|
||
|
|
```
|
||
|
|
> **Note :** Remplacez **`X`** de la première ligne par la lettre souhaitez (en dehors de celles déjà existante [o,f,r,i])'.
|
||
|
|
|
||
|
|
3. Mettez à jour les instructions textuelles d'usage affichées dans la console si le paramètre saisi est incorrect afin d'inclure `"OUTIL"` dans la liste des choix valides.
|
||
|
|
```python
|
||
|
|
print(" -X Generate OUTIL report (optional)")
|
||
|
|
```
|
||
|
|
> **Note :** Remplacez **`X`** par la lettre précédemmment choisi'.
|
||
|
|
|
||
|
|
|
||
|
|
## Étape 3 : Adaptation de l'Interface Graphique (GUI)
|
||
|
|
|
||
|
|
Afin que le nouveau modèle apparaisse dans l'interface graphique unifiée :
|
||
|
|
|
||
|
|
1. Ouvrez le fichier de gestion de la GUI (`gui_firewall.py` racine ou script GUI dédié).
|
||
|
|
2. Dans la fonction `open_firewall_gui_multi` :
|
||
|
|
|
||
|
|
- Ajouter la variable :
|
||
|
|
```python
|
||
|
|
OUTIL = tk.BooleanVar()
|
||
|
|
```
|
||
|
|
|
||
|
|
- Dans la fonction `process()`, ajouter :
|
||
|
|
```python
|
||
|
|
if OUTIL.get():
|
||
|
|
cmd.append("-X")
|
||
|
|
```
|
||
|
|
|
||
|
|
- Ajouter égalemment dans la fonction `open_firewall_gui_multi`, le bouton de sélection de l'outil avec les autres existant :
|
||
|
|
```python
|
||
|
|
ttk.Checkbutton(
|
||
|
|
content,
|
||
|
|
text="Description courte de l'outil",
|
||
|
|
variable=OUTIL
|
||
|
|
).pack(anchor="w", padx=10, pady=(0, 0))
|
||
|
|
OUTIL.set(True)
|
||
|
|
```
|
||
|
|
|
||
|
|
3. Dans la fonction `open_firewall_gui` :
|
||
|
|
|
||
|
|
- Répéter les mêmes opérations que pour `open_firewall_gui_multi`
|
||
|
|
- Dans la fonction `update_output_label(*args)` ajouter et modifier les éléments suivants :
|
||
|
|
```python
|
||
|
|
def update_output_label(*args):
|
||
|
|
...
|
||
|
|
if output_var.get(): #ligne déjà existante
|
||
|
|
f_OUTIL = os.path.join(OUTPUT_DIR, f"OUTIL_{fw}_{output_var.get()}.xlsx")
|
||
|
|
...
|
||
|
|
else :
|
||
|
|
f_OUTIL = os.path.join(OUTPUT_DIR, f"OUTIL_{fw}_{dt}.xlsx")
|
||
|
|
...
|
||
|
|
|
||
|
|
output_label_var.set("Fichier de sortie :\n" + f_json + ("\n" + f_flux if matrice_flux.get() else "") + ("\n" + f_routage if matrice_routage.get() else "") + ("\n" + f_interfaces if interfaces.get() else "") + ("\n" + f_OUTIL if OUTIL.get() else "")) #ligne déjà existante a modifier
|
||
|
|
```
|
||
|
|
- Ajouter vers la fin de la fonction `open_firewall_gui` avec les autres existant :
|
||
|
|
```python
|
||
|
|
OUTIL.trace_add("write", update_output_label)
|
||
|
|
```
|
||
|
|
|
||
|
|
4. Ouvrez le fichier de gestion principale de la GUI (`main.py` racine ou script GUI dédié).
|
||
|
|
|
||
|
|
- Dans la fonction `open_main_gui()` ajouter dans le Label du Firewall :
|
||
|
|
```python
|
||
|
|
"\n + possibilité de générer un rapport des OUTIL",
|
||
|
|
```
|