Nested Huawei/ZTE/Cisco jumps keep the hop channel open after quit/exit; detect nested close or hop prompt return and tear down WebCRT so users cannot operate the proxy.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align session credential checks with connectivity test so target password can live only on the bastion.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use raw Telnet reads for ANSI backspace, drop local erase so Tab/completion stays in sync, and make WebSocket attach exclusive so StrictMode remounts cannot drop the first echo.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the complete session_log replay including the final prompt, and stop clearing bootstrap on attach so StrictMode remounts do not blank the CRT.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture Netmiko session_log for login replay, open NE terminals in a fresh tab, tidy the device list UI with reconnect/log/clear/copy, and paint a live prompt after attach so the first keystrokes behave normally.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drain and nudge the device prompt after Netmiko login, replay bootstrap stdout when the WebSocket attaches, and surface connect errors in the terminal pane.
Co-authored-by: Cursor <cursoragent@cursor.com>
Huawei/ZTE/Cisco Telnet often rejects xterm DEL and CSI arrows; rewrite them to BS and emacs Ctrl-B/F/P/N so editing and history work.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow brief WebSocket re-attach after React StrictMode cleanup, ensure terminal pane has layout height, and show connect status in xterm.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ensure fixed managed-ne paths are matched before /{ne_id} so deleting UME-synced NEs no longer triggers managed_ne_not_found, and use UME host_name as the synced display name to align managed NE naming with inventory host identity.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync UME inventory into managed NE with source-aware dedupe and cleanup, add one-click account updates for selected or tagged NEs, and expose the new managed NE actions in the web UI while keeping bulk bastion flows compatible with optional target passwords.
Co-authored-by: Cursor <cursoragent@cursor.com>
Register oclaw_alarm_forwarder in background tasks with pause/resume, emit rt:/ws:/fwd: codes for last_error, and translate them in the UI for English and Chinese.
Co-authored-by: Cursor <cursoragent@cursor.com>
ConnectHandler is a factory function in current Netmiko; subclass the CLASS_MAPPER driver (e.g. ZteZxrosSSH) when wrapping a pre-authenticated Paramiko session.
Co-authored-by: Cursor <cursoragent@cursor.com>
OpenSSH treats the last @ as user/host separator, so the SSH username must be hop@target@ip without duplicating hop_host. Legacy templates with {hop_host} are stripped automatically; connect logs now show bastion_ssh_cli for comparison with manual ssh.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZTE-TSM and similar bastions reject standard SSH password auth and require Vault password via keyboard-interactive; connect over an authenticated Paramiko session instead of re-handshaking with Netmiko.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match key alerts by optional inventory ne_types, add edit dialog to update device types on existing rules, and keep card pager controls on one row.
Co-authored-by: Cursor <cursoragent@cursor.com>
Aggregate push counts per monitor rule, add enabled PATCH and paginated filtered list API/UI so keyword rules show correct stats without deleting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use starts_with() instead of LIKE kw:% and run each DDL step in its own
transaction so match_type/match_value columns are added reliably.
Co-authored-by: Cursor <cursoragent@cursor.com>
Make forward-on-clear a global monitor toggle, run key-alert DDL in an
isolated startup transaction, and fix HelpHint popovers plus API errors
when the server returns non-JSON responses.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add description keyword matching alongside notificationId rules, require
per-rule labels, and improve the AI monitor form layout and clear-on-push UX.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove hop columns from the import template and stop applying hop settings during import; use Batch add proxy instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow creating/importing NEs without target password for bastion-managed workflows, and support optional hop_* columns in bulk import templates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Support composite-username bastion login for automated connect-test and exec, with bastion-managed or manual target credential modes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add a guarded managed-ne exec endpoint for oclaw ops tools to login managed devices and run read-only CLI safely.
Include request schema and unit tests for command guardrails and execution flow.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist full connect test logs (connect_detail) with NE UI detail modal.
Add Huawei/Cisco jump CLI templates and generic CLI hop session path.
Probe Cisco hostname via show configuration | include hostname (60s timeout).
Co-authored-by: Cursor <cursoragent@cursor.com>
Support hop_vendor=linux via Paramiko direct-tcpip tunnel; ZTE CLI hop unchanged. UI hop type selector and distinct list badges.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add POST /v1/managed-ne/batch-hop, shared HopProxyFields form, and toolbar button next to connectivity test.
Co-authored-by: Cursor <cursoragent@cursor.com>