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