sequenceDiagram
participant Client
participant Express
participant SocketIO
participant SSHConnection
participant SSHServer
Client->>Express: HTTP Request
Express->>Client: Send client files
Client->>SocketIO: Establish Socket.IO connection
alt HTTP Basic Auth used
SocketIO->>SSHConnection: Jump to "Connect with credentials"
else No pre-existing credentials
SocketIO->>Client: Emit "authentication" (request_auth)
Client->>SocketIO: Emit "authenticate" (with credentials)
end
SocketIO->>SSHConnection: Connect with credentials
SSHConnection->>SSHServer: Establish SSH connection
alt Keyboard Interactive Auth
SSHServer->>SSHConnection: Request additional auth
SSHConnection->>SocketIO: Emit "authentication" (keyboard-interactive)
SocketIO->>Client: Forward auth request
Client->>SocketIO: Send auth response
SocketIO->>SSHConnection: Forward auth response
SSHConnection->>SSHServer: Complete authentication
end
SSHServer->>SSHConnection: Connection established
SSHConnection->>SocketIO: Connection successful
SocketIO->>Client: Emit "authentication" (success)
Client->>SocketIO: Emit "terminal" (with specs)
SocketIO->>SSHConnection: Create shell with specs
SSHConnection->>SSHServer: Create shell session
SSHConnection->>SocketIO: Shell created
SocketIO->>Client: Ready for input/output
Note over Client,SSHServer: Bidirectional data flow established