commit 67220c903106ebc76e9b6eb410c2c727d6c3220c Author: Blackwhitebear8 Date: Sun Jul 6 17:56:50 2025 +0200 Add app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..c917aeb --- /dev/null +++ b/app.py @@ -0,0 +1,48 @@ +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) \ No newline at end of file