import os import sys # DON\'T CHANGE THIS !!! sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from flask import Flask, send_from_directory from src.models.user import db from src.routes.user import user_bp from src.routes.isp_api import init_engines, isp_api app = Flask(__name__, static_folder=os.path.join(os.path.dirname(__file__), 'static')) app.config['SECRET_KEY'] = 'asdf#FGSgvasgf$5$WGT' app.register_blueprint(user_bp, url_prefix='/api') app.register_blueprint(isp_api, url_prefix='/api') # uncomment if you need to use database app.config['SQLALCHEMY_DATABASE_URI'] = f"sqlite:///{os.path.join(os.path.dirname(__file__), 'database', 'app.db')}" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) with app.app_context(): db.create_all() # Default configuration for engines app.config["dhcp"] = { "network": "10.0.0.0/24", "range_start": "10.0.0.10", "range_end": "10.0.0.100", "lease_time": 3600, "gateway": "10.0.0.1", "dns_servers": ["8.8.8.8", "8.8.4.4"] } # Initialize engines only once, when the Flask app is not in debug mode's reloader process if not app.debug or os.environ.get('WERKZEUG_RUN_MAIN') == 'true': init_engines(app.config) @app.route('/') def serve_root(): return serve('') @app.route('/') def serve(path): static_folder_path = app.static_folder if static_folder_path is None: return "Static folder not configured", 404 if path != "" and os.path.exists(os.path.join(static_folder_path, path)): return send_from_directory(static_folder_path, path) else: index_path = os.path.join(static_folder_path, 'index.html') if os.path.exists(index_path): return send_from_directory(static_folder_path, 'index.html') else: return "index.html not found", 404 if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=False)