#!/usr/bin/env python3 import os import socket import uvicorn from blackbox_server import app try: from config import SERVER_CONFIG except Exception: SERVER_CONFIG = {"host": "0.0.0.0", "port": 8090} def find_free_port(start_port: int, max_tries: int = 50) -> int: """Find an available TCP port starting from start_port.""" for port in range(start_port, start_port + max_tries): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: s.bind(("0.0.0.0", port)) return port except OSError: continue return start_port if __name__ == "__main__": host = SERVER_CONFIG.get("host", "0.0.0.0") base_port = int(os.getenv("PORT") or SERVER_CONFIG.get("port", 8090)) port = find_free_port(base_port) if port != base_port: print(f"⚠️ Port {base_port} in use. Switching to free port {port}.") print(f"🚀 Starting Blackbox Reverse OpenAI API Server on {host}:{port} ...") uvicorn.run(app, host=host, port=port, reload=False, log_level="info")