import json import subprocess import os import requests from jinja2 import Template from flask import Flask, render_template_string, jsonify, url_for, redirect, render_template, request, abort 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 from modules.bgp import parse_bgp_data, generate_bgp_json from modules.visual_route import generate_visual_route_graph @app.route("/ping") def ping(): return "pong" @app.route('/') def visual_route_page(): return render_template("visual-route.html") @app.route('/bgp-route/lookup', methods=['POST']) def bgp_route_lookup(): data = request.json ip_version = data.get('ip_version') bgprouteprefix = data.get('bgprouteprefix') if not ip_version or not bgprouteprefix: return jsonify({"error": "ip_version and bgprouteprefix are required"}), 400 try: result = run_bgp_route_curl_command(ip_version, bgprouteprefix) return jsonify(result) except Exception as e: return jsonify({"error": str(e)}), 500 @app.route('/graph', methods=['POST']) def visual_route_graph(): ip_address_str = request.json.get('ip_address') graph_data = generate_visual_route_graph(ip_address_str) if "error" in graph_data: return jsonify(graph_data), 400 return jsonify(graph_data)