File size: 1,187 Bytes
8754765
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/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")