48 lines
No EOL
1.4 KiB
Python
48 lines
No EOL
1.4 KiB
Python
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) |