Files
Analyse_Reseaux/CREATE_FIREWALL_TOOL.md
2026-06-01 09:51:24 +02:00

4.5 KiB

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 :

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 :
from scripts.export_OUTIL import export_to_excel as export_OUTIL_to_excel
  1. Ajoutez la condition correspondante dans le bloc de sélection de l'outil :
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])'.

  1. 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.
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 :
OUTIL = tk.BooleanVar()
  • Dans la fonction process(), ajouter :
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 :
ttk.Checkbutton(
        content,
        text="Description courte de l'outil",
        variable=OUTIL
    ).pack(anchor="w", padx=10, pady=(0, 0))
    OUTIL.set(True)
  1. 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 :
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 :
OUTIL.trace_add("write", update_output_label)
  1. 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 :
"\n + possibilité de générer un rapport des OUTIL",