mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
91 lines
No EOL
2.7 KiB
Python
91 lines
No EOL
2.7 KiB
Python
import os
|
|
import json
|
|
from typing import Dict, Any
|
|
from openspace.utils.logging import Logger
|
|
|
|
logger = Logger.get_logger(__name__)
|
|
|
|
def get_local_server_config() -> Dict[str, Any]:
|
|
"""
|
|
Read local server configuration.
|
|
|
|
Priority:
|
|
1. Environment variable LOCAL_SERVER_URL (parsed into host/port)
|
|
2. Config file local_server/config.json
|
|
3. Defaults (127.0.0.1:5000)
|
|
|
|
Returns:
|
|
Dict with 'host' and 'port' from server config
|
|
"""
|
|
# Check environment variable first (for OSWorld/remote VM integration)
|
|
env_url = os.getenv("LOCAL_SERVER_URL")
|
|
if env_url:
|
|
try:
|
|
# Parse URL like "http://localhost:5000"
|
|
from urllib.parse import urlparse
|
|
parsed = urlparse(env_url)
|
|
host = parsed.hostname or '127.0.0.1'
|
|
port = parsed.port or 5000
|
|
logger.debug(f"Using LOCAL_SERVER_URL: {host}:{port}")
|
|
return {
|
|
'host': host,
|
|
'port': port,
|
|
'debug': False,
|
|
}
|
|
except Exception as e:
|
|
logger.warning(f"Failed to parse LOCAL_SERVER_URL: {e}")
|
|
|
|
# Find local_server config file
|
|
try:
|
|
# Try relative path from this file
|
|
current_dir = os.path.dirname(__file__)
|
|
config_path = os.path.join(current_dir, '../local_server/config.json')
|
|
config_path = os.path.abspath(config_path)
|
|
|
|
if os.path.exists(config_path):
|
|
with open(config_path, 'r') as f:
|
|
config = json.load(f)
|
|
server_config = config.get('server', {})
|
|
return {
|
|
'host': server_config.get('host', '127.0.0.1'),
|
|
'port': server_config.get('port', 5000),
|
|
'debug': server_config.get('debug', False),
|
|
}
|
|
except Exception as e:
|
|
logger.debug(f"Failed to read local server config: {e}")
|
|
|
|
# Return defaults
|
|
return {
|
|
'host': '127.0.0.1',
|
|
'port': 5000,
|
|
'debug': False,
|
|
}
|
|
|
|
|
|
def get_client_base_url() -> str:
|
|
"""
|
|
Get base URL for connecting to local server.
|
|
|
|
Priority:
|
|
1. Environment variable LOCAL_SERVER_URL
|
|
2. Read from local_server/config.json
|
|
3. Default http://localhost:5000
|
|
|
|
Returns:
|
|
Base URL string
|
|
"""
|
|
# Check environment variable first
|
|
env_url = os.getenv("LOCAL_SERVER_URL")
|
|
if env_url:
|
|
return env_url
|
|
|
|
# Read from config file
|
|
config = get_local_server_config()
|
|
host = config['host']
|
|
port = config['port']
|
|
|
|
# Convert 0.0.0.0 to localhost for client
|
|
if host == '0.0.0.0':
|
|
host = 'localhost'
|
|
|
|
return f"http://{host}:{port}" |