From 0c473e034dde84940b0f2b8e13bd7d7828c85b1f Mon Sep 17 00:00:00 2001 From: Blackwhitebear8 Date: Tue, 5 Aug 2025 19:13:43 +0200 Subject: [PATCH] Update app.py --- app.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 4d2d5e1..3669ec8 100644 --- a/app.py +++ b/app.py @@ -8,7 +8,7 @@ from flask import Flask, render_template_string, jsonify, url_for, redirect, ren app = Flask(__name__) -from modules.parse import run_bgp_curl_command, run_arp_curl_command, run_neighbors_curl_command, run_interfaces_curl_command, run_bgp_route_curl_command, run_rpki_cache_connection_curl_command, run_rpki_lookup_curl_command +from modules.parse import run_bgp_curl_command, run_arp_curl_command, run_neighbors_curl_command, run_interfaces_curl_command, run_bgp_route_curl_command, run_rpki_cache_connection_curl_command, run_rpki_lookup_curl_command, run_bgp_neighbor_detail_curl_command, run_bfd_peers_curl_command, run_bfd_peer_detail_curl_command from modules.bgp import parse_bgp_data, generate_bgp_json @@ -24,6 +24,8 @@ from modules.librenms import get_port_id, fetch_graph_base64 from modules.rpki import parse_rpki_cache_data, parse_rpki_lookup_data +from modules.bfd import parse_bfd_peers_data + from modules.visual_route import generate_visual_route_graph @app.context_processor @@ -53,7 +55,21 @@ def bgp(): def bgp_json(): bgp_data = run_bgp_curl_command() ipv4_info, ipv4_peers, ipv6_info, ipv6_peers = parse_bgp_data(bgp_data) - return jsonify(generate_bgp_json(ipv4_info, ipv4_peers, ipv6_info, ipv6_peers)) + + bfd_data = run_bfd_peers_curl_command() + bfd_peers = parse_bfd_peers_data(bfd_data) + + return jsonify(generate_bgp_json(ipv4_info, ipv4_peers, ipv6_info, ipv6_peers, bfd_peers)) + +@app.route('/bfd/peer/') +def bfd_peer_detail(peer_ip): + try: + raw_data = run_bfd_peer_detail_curl_command(peer_ip) + bfd_details = raw_data.get('data', 'Geen data gevonden voor deze BFD peer.') + return render_template('bfd_peer_detail.html', peer_ip=peer_ip, bfd_data=bfd_details) + except Exception as e: + error_message = f"Kon de BFD-details niet ophalen: {e}" + return render_template('bfd_peer_detail.html', peer_ip=peer_ip, error=error_message) @app.route("/arp") def arp(): @@ -75,6 +91,22 @@ def neighborsp_json(): neighbors_table = parse_neighbors_data(neighbors_data) return jsonify(generate_neighbors_json(neighbors_table)) +@app.route('/bgp/neighbor//') +def bgp_neighbor_detail(ip_version, neighbor_ip): + if ip_version not in ['ipv4', 'ipv6']: + abort(404) + + try: + raw_data = run_bgp_neighbor_detail_curl_command(ip_version, neighbor_ip) + + neighbor_details = raw_data.get('data', 'No data found for this neighbor.') + + return render_template('bgp_neighbor_detail.html', neighbor_ip=neighbor_ip, neighbor_data=neighbor_details) + except Exception as e: + error_message = f"Unable to retrieve details: {e}" + return render_template('bgp_neighbor_detail.html', neighbor_ip=neighbor_ip, error=error_message) + + @app.route('/interfaces') def interface_table_page(): return render_template("interfaces.html")