forked from test2/Amnezia-Web-Panel-main
Fix Internal Server Error after SSH server add (server_info must be a dict).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2273,11 +2273,17 @@ async def api_add_server(request: Request, req: AddServerRequest):
|
||||
ssh = SSHManager(host, req.ssh_port, username, req.password, req.private_key)
|
||||
try:
|
||||
ssh.connect()
|
||||
server_info = ssh.test_connection()
|
||||
raw_info = ssh.test_connection()
|
||||
ssh.disconnect()
|
||||
except Exception as e:
|
||||
return JSONResponse({'error': f'Connection failed: {str(e)}'}, status_code=400)
|
||||
|
||||
# Always store as an object — legacy test_connection() returns a plain string
|
||||
if isinstance(raw_info, dict):
|
||||
server_info = raw_info
|
||||
else:
|
||||
server_info = {'uname': str(raw_info or '').strip()}
|
||||
|
||||
server = {
|
||||
'name': name, 'host': host, 'ssh_port': req.ssh_port,
|
||||
'username': username, 'password': req.password,
|
||||
@@ -2328,11 +2334,16 @@ async def api_edit_server(request: Request, server_id: int, req: EditServerReque
|
||||
ssh = SSHManager(new_host, new_port, new_user, new_pass, new_key)
|
||||
try:
|
||||
ssh.connect()
|
||||
server_info = ssh.test_connection()
|
||||
raw_info = ssh.test_connection()
|
||||
ssh.disconnect()
|
||||
except Exception as e:
|
||||
return JSONResponse({'error': f'Connection failed: {e}'}, status_code=400)
|
||||
|
||||
if isinstance(raw_info, dict):
|
||||
server_info = raw_info
|
||||
else:
|
||||
server_info = {'uname': str(raw_info or '').strip()}
|
||||
|
||||
server['name'] = new_name
|
||||
server['host'] = new_host
|
||||
server['ssh_port'] = new_port
|
||||
|
||||
Reference in New Issue
Block a user