from flask import Flask, request, redirect, url_for, render_template_string import sqlite3 import threading import webbrowser app = Flask(__name__) DB_NAME = "risk_system.db" # ---------- DATABASE SETUP ---------- def init_db(): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS risk_list ( number TEXT PRIMARY KEY, risk_level TEXT, reviews TEXT ) """) cursor.execute(""" CREATE TABLE IF NOT EXISTS aadhar_mapping ( number TEXT PRIMARY KEY, aadhar TEXT ) """) cursor.execute(""" CREATE TABLE IF NOT EXISTS aadhar_numbers ( aadhar TEXT, number TEXT ) """) conn.commit() conn.close() init_db() # ---------- HELPER FUNCTIONS ---------- def get_db(): return sqlite3.connect(DB_NAME) def check_and_flag(number): conn = get_db() cursor = conn.cursor() result = {"number": number, "risk": None, "reviews": None, "aadhar": None, "linked_numbers": []} # Step 1: Risk List lookup cursor.execute("SELECT risk_level, reviews FROM risk_list WHERE number=?", (number,)) row = cursor.fetchone() if row: result["risk"] = row[0] result["reviews"] = row[1] # Step 2: Aadhaar mapping cursor.execute("SELECT aadhar FROM aadhar_mapping WHERE number=?", (number,)) aadhar_row = cursor.fetchone() if aadhar_row: aadhar = aadhar_row[0] result["aadhar"] = aadhar cursor.execute("SELECT number FROM aadhar_numbers WHERE aadhar=?", (aadhar,)) linked_numbers = [n[0] for n in cursor.fetchall()] result["linked_numbers"] = linked_numbers # Step 3: If risky, flag all linked numbers if row: for n in linked_numbers: cursor.execute("INSERT OR IGNORE INTO risk_list VALUES (?, ?, ?)", (n, row[0], "Auto-flagged via Aadhaar link")) conn.commit() conn.close() return result def add_review(number, review, risk_level="Medium"): conn = get_db() cursor = conn.cursor() cursor.execute("SELECT reviews FROM risk_list WHERE number=?", (number,)) row = cursor.fetchone() if row: updated_reviews = row[0] + " | " + review cursor.execute("UPDATE risk_list SET reviews=?, risk_level=? WHERE number=?", (updated_reviews, risk_level, number)) else: cursor.execute("INSERT INTO risk_list VALUES (?, ?, ?)", (number, risk_level, review)) conn.commit() conn.close() def get_all_risks(): conn = get_db() cursor = conn.cursor() cursor.execute("SELECT * FROM risk_list") rows = cursor.fetchall() conn.close() return rows # ---------- HTML TEMPLATES ---------- INDEX_HTML = """ Risk Checker

📞fraud Risk Checker

{% if result %}

Result for {{ result.number }}

Risk: {{ result.risk if result.risk else "Not in Risk List" }}

Reviews: {{ result.reviews if result.reviews else "None" }}

Aadhaar: {{ result.aadhar if result.aadhar else "Not linked" }}

Linked Numbers: {{ result.linked_numbers if result.linked_numbers else "None" }}

{% endif %}

Add Review

Seed demo data | View all risks

""" ALL_RISKS_HTML = """ All Risky Numbers

âš  All Risky Numbers

{% for row in risks %} {% endfor %}
Number Risk Level Reviews
{{ row[0] }} {{ row[1] }} {{ row[2] }}

Back

""" # ---------- FLASK ROUTES ---------- @app.route("/", methods=["GET", "POST"]) def home(): result = None if request.method == "POST": number = request.form.get("number") result = check_and_flag(number) return render_template_string(INDEX_HTML, result=result) @app.route("/review", methods=["POST"]) def review_number(): number = request.form.get("number") review = request.form.get("review") risk_level = request.form.get("risk_level", "Medium") if number and review: add_review(number, review, risk_level) return redirect(url_for("home")) @app.route("/all") def all_risks(): risks = get_all_risks() return render_template_string(ALL_RISKS_HTML, risks=risks) @app.route("/seed") def seed_data(): conn = get_db() cursor = conn.cursor() cursor.execute("INSERT OR IGNORE INTO risk_list VALUES (?, ?, ?)", ("9999999999", "High", "Fraudulent calls reported")) cursor.execute("INSERT OR IGNORE INTO aadhar_mapping VALUES (?, ?)", ("9999999999", "AADHAR123")) cursor.execute("INSERT OR IGNORE INTO aadhar_mapping VALUES (?, ?)", ("8888888888", "AADHAR123")) cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "9999999999")) cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "8888888888")) cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "7777777777")) conn.commit() conn.close() return redirect(url_for("home")) def open_browser(): webbrowser.open_new("http://127.0.0.1:7860/") # ---------- RUN ---------- if __name__ == "__main__": threading.Timer(1, open_browser).start() app.run(debug=False, port=7860, use_reloader=False)