Add app.py

This commit is contained in:
Blackwhitebear8 2025-07-06 17:56:50 +02:00
commit 67220c9031

48
app.py Normal file
View file

@ -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)