Add configurable TCP ports and hosts for web interface and inter-process communication

- Add network configuration settings: web_host, web_port, backend_host, backend_web_port, backend_worker_port
- Update web.py to use configurable host and port for Flask app
- Update backend.py to use configurable ports for socket servers
- Update worker processes to use configurable backend worker port
- Add network configuration section to admin panel
- Update command line arguments to accept network settings
- Maintain backward compatibility with default values
parent 53c252b3
Pipeline #189 canceled with stages
......@@ -37,7 +37,10 @@ from vidai.config import (
get_optimize, set_optimize, get_ffmpeg, set_ffmpeg, get_flash, set_flash,
get_host, set_host, get_port, set_port, get_debug, set_debug, get_allowed_dir, set_allowed_dir,
get_comm_type, set_comm_type, get_cluster_host, set_cluster_host, get_cluster_port,
set_cluster_port, get_cluster_token, set_cluster_token, is_cluster_client, set_cluster_client
set_cluster_port, get_cluster_token, set_cluster_token, is_cluster_client, set_cluster_client,
get_web_host, set_web_host, get_web_port, set_web_port,
get_backend_host, set_backend_host, get_backend_web_port, set_backend_web_port,
get_backend_worker_port, set_backend_worker_port
)
def main():
......@@ -63,6 +66,11 @@ Examples:
default_host = get_host()
default_port = get_port()
default_debug = get_debug()
default_web_host = get_web_host()
default_web_port = get_web_port()
default_backend_host = get_backend_host()
default_backend_web_port = get_backend_web_port()
default_backend_worker_port = get_backend_worker_port()
parser.add_argument(
'--model',
......@@ -131,6 +139,39 @@ Examples:
help=f'Port to bind the server to (default: {default_port})'
)
parser.add_argument(
'--web-host',
default=default_web_host,
help=f'Web interface host (default: {default_web_host})'
)
parser.add_argument(
'--web-port',
type=int,
default=default_web_port,
help=f'Web interface port (default: {default_web_port})'
)
parser.add_argument(
'--backend-host',
default=default_backend_host,
help=f'Backend host (default: {default_backend_host})'
)
parser.add_argument(
'--backend-web-port',
type=int,
default=default_backend_web_port,
help=f'Backend web communication port (default: {default_backend_web_port})'
)
parser.add_argument(
'--backend-worker-port',
type=int,
default=default_backend_worker_port,
help=f'Backend worker communication port (default: {default_backend_worker_port})'
)
parser.add_argument(
'--debug',
action='store_true',
......@@ -178,6 +219,11 @@ Examples:
set_comm_type(args.comm_type)
set_host(args.host)
set_port(args.port)
set_web_host(args.web_host)
set_web_port(args.web_port)
set_backend_host(args.backend_host)
set_backend_web_port(args.backend_web_port)
set_backend_worker_port(args.backend_worker_port)
set_debug(args.debug)
set_cluster_host(args.cluster_host)
set_cluster_port(args.cluster_port)
......
......@@ -167,7 +167,8 @@ def backend_process() -> None:
web_server.start(handle_web_message)
else:
# Start web server on TCP
web_server = SocketServer(host='localhost', port=5001, comm_type='tcp')
from .config import get_backend_web_port
web_server = SocketServer(host='localhost', port=get_backend_web_port(), comm_type='tcp')
web_server.start(handle_web_message)
try:
......
......@@ -272,7 +272,13 @@ def get_all_settings() -> dict:
'db_mysql_user': config.get('db_mysql_user', 'vidai'),
'db_mysql_password': config.get('db_mysql_password', ''),
'db_mysql_database': config.get('db_mysql_database', 'vidai'),
'db_mysql_charset': config.get('db_mysql_charset', 'utf8mb4')
'db_mysql_charset': config.get('db_mysql_charset', 'utf8mb4'),
# Network settings
'web_host': config.get('web_host', '0.0.0.0'),
'web_port': int(config.get('web_port', '5000')),
'backend_host': config.get('backend_host', 'localhost'),
'backend_web_port': int(config.get('backend_web_port', '5001')),
'backend_worker_port': int(config.get('backend_worker_port', '5002'))
}
......@@ -372,4 +378,30 @@ def set_db_mysql_config(host: str, port: int, user: str, password: str, database
set_config('db_mysql_user', user)
set_config('db_mysql_password', password)
set_config('db_mysql_database', database)
set_config('db_mysql_charset', charset)
\ No newline at end of file
set_config('db_mysql_charset', charset)
# Network settings
def set_web_host(host: str) -> None:
"""Set web interface host."""
set_config('web_host', host)
def set_web_port(port: int) -> None:
"""Set web interface port."""
set_config('web_port', str(port))
def set_backend_host(host: str) -> None:
"""Set backend host."""
set_config('backend_host', host)
def set_backend_web_port(port: int) -> None:
"""Set backend web communication port."""
set_config('backend_web_port', str(port))
def set_backend_worker_port(port: int) -> None:
"""Set backend worker communication port."""
set_config('backend_worker_port', str(port))
\ No newline at end of file
......@@ -50,11 +50,12 @@ os.makedirs('static', exist_ok=True)
SESSION_COOKIE = 'vidai_session'
# Communicator to backend
from .config import get_backend_host, get_backend_web_port
comm_type = get_comm_type()
if comm_type == 'unix':
comm = SocketCommunicator(socket_path='/tmp/vidai_web.sock', comm_type='unix')
else:
comm = SocketCommunicator(host='localhost', port=5001, comm_type='tcp')
comm = SocketCommunicator(host=get_backend_host(), port=get_backend_web_port(), comm_type='tcp')
comm.connect()
def get_session_id() -> Optional[str]:
......@@ -806,6 +807,14 @@ def admin_config():
charset=request.form.get('db_mysql_charset', 'utf8mb4')
)
# Network configuration
from .config import set_web_host, set_web_port, set_backend_host, set_backend_web_port, set_backend_worker_port
set_web_host(request.form.get('web_host', '0.0.0.0'))
set_web_port(int(request.form.get('web_port', '5000')))
set_backend_host(request.form.get('backend_host', 'localhost'))
set_backend_web_port(int(request.form.get('backend_web_port', '5001')))
set_backend_worker_port(int(request.form.get('backend_worker_port', '5002')))
settings = get_all_settings()
html = '''
<!DOCTYPE html>
......@@ -1030,6 +1039,28 @@ def admin_config():
});
</script>
</div>
<div class="section">
<h3>Network Configuration</h3>
<form method="post">
<label>Web Interface Host:</label>
<input type="text" name="web_host" value="{{ settings.get('web_host', '0.0.0.0') }}">
<label>Web Interface Port:</label>
<input type="number" name="web_port" value="{{ settings.get('web_port', 5000) }}" min="1" max="65535">
<label>Backend Host:</label>
<input type="text" name="backend_host" value="{{ settings.get('backend_host', 'localhost') }}">
<label>Backend Web Port:</label>
<input type="number" name="backend_web_port" value="{{ settings.get('backend_web_port', 5001) }}" min="1" max="65535">
<label>Backend Worker Port:</label>
<input type="number" name="backend_worker_port" value="{{ settings.get('backend_worker_port', 5002) }}" min="1" max="65535">
<button type="submit">Save Network Configuration</button>
</form>
</div>
</div>
</body>
</html>
......@@ -1452,7 +1483,8 @@ def serve_static(filename):
return send_from_directory('static', filename)
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
from .config import get_web_host, get_web_port, get_debug
app.run(host=get_web_host(), port=get_web_port(), debug=get_debug())
@app.route('/', methods=['GET', 'POST'])
def index():
......
......@@ -178,7 +178,8 @@ def worker_process(backend_type: str):
if comm_type == 'unix':
comm = SocketCommunicator(socket_path='/tmp/vidai_workers.sock', comm_type='unix')
else:
comm = SocketCommunicator(host='localhost', port=5002, comm_type='tcp')
from .config import get_backend_worker_port
comm = SocketCommunicator(host='localhost', port=get_backend_worker_port(), comm_type='tcp')
comm.connect()
# Register with backend
......
......@@ -51,7 +51,8 @@ def worker_process(backend_type: str):
if comm_type == 'unix':
comm = SocketCommunicator(socket_path='/tmp/vidai_workers.sock', comm_type='unix')
else:
comm = SocketCommunicator(host='localhost', port=5002, comm_type='tcp')
from .config import get_backend_worker_port
comm = SocketCommunicator(host='localhost', port=get_backend_worker_port(), comm_type='tcp')
comm.connect()
# Register with backend
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment