mirror of
https://github.com/hansjone/netx.git
synced 2026-10-12 16:30:47 +08:00
Improve WebCRT new-session flow for SecureCRT-like SSH/Telnet use.
Add quick-connect sessions with credential retry, raw interactive drivers, bootstrap banner replay, Huawei telnet prompt cleanup, and session rename/delete in the tree. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
accd28c9a1
commit
f6b399e03e
23 changed files with 3682 additions and 225 deletions
|
|
@ -905,7 +905,7 @@ const en = {
|
|||
sessionManager: "Device list",
|
||||
connect: "Connect",
|
||||
hint: "Pick an NE and open an interactive terminal in the browser. Credentials stay on the server.",
|
||||
hintCrt: "Click an NE on the left to open a terminal. Includes managed and UME inventory; search + paging for large fleets.",
|
||||
hintCrt: "Click an NE on the left to open a terminal. Includes managed, Sessions, and UME; or use New Session for a quick login.",
|
||||
filterKeyword: "Filter",
|
||||
filterKeywordPh: "Filter by name / IP / tag",
|
||||
empty: "No matching NEs. Switch source or refine the search.",
|
||||
|
|
@ -919,8 +919,25 @@ const en = {
|
|||
source: {
|
||||
all: "All",
|
||||
managed: "Managed",
|
||||
webcrt: "Sessions",
|
||||
ume: "UME",
|
||||
},
|
||||
newSession: {
|
||||
title: "New Session",
|
||||
hint: "Enter host and protocol. SSH prompts for username/password (editable on retry); Telnet logs in interactively. Duplicate names become (1), (2)…; same IP is allowed.",
|
||||
connect: "Connect",
|
||||
connecting: "Connecting…",
|
||||
protocol: "Protocol",
|
||||
host: "Hostname",
|
||||
port: "Port",
|
||||
sessionName: "Session name",
|
||||
sessionNamePh: "Optional; defaults to IP",
|
||||
authTitle: "SSH Authentication",
|
||||
savePassword: "Save password",
|
||||
ipRequired: "Hostname is required",
|
||||
userRequired: "Username is required",
|
||||
passwordRequired: "Password is required",
|
||||
},
|
||||
status: {
|
||||
idle: "Idle",
|
||||
connecting: "Connecting",
|
||||
|
|
@ -928,6 +945,47 @@ const en = {
|
|||
error: "Error",
|
||||
closed: "Closed",
|
||||
},
|
||||
phase: {
|
||||
creating: "Creating session",
|
||||
authenticating: "Authenticating",
|
||||
waitingPrompt: "Waiting for device prompt",
|
||||
hint: "Slow devices may take more than 10 seconds",
|
||||
},
|
||||
tabMenu: {
|
||||
close: "Close",
|
||||
closeOthers: "Close others",
|
||||
closeAll: "Close all",
|
||||
copyIp: "Copy IP",
|
||||
copyIpOk: "Copied {{ip}}",
|
||||
copyIpEmpty: "No IP on this tab",
|
||||
},
|
||||
treeMenu: {
|
||||
rename: "Rename",
|
||||
renameLabel: "Session name",
|
||||
renameSave: "Save",
|
||||
renameRequired: "Session name is required",
|
||||
renamed: "Session renamed",
|
||||
delete: "Delete session",
|
||||
deleteConfirm: "Delete session \"{{name}}\"? This cannot be undone.",
|
||||
deleted: "Session deleted",
|
||||
},
|
||||
keywordHl: {
|
||||
title: "Keyword Highlighting",
|
||||
enabled: "Enabled",
|
||||
newKeyword: "New keyword",
|
||||
newKeywordPh: "Keyword or regex",
|
||||
regex: "Regular expression",
|
||||
add: "Add",
|
||||
colKeyword: "Keyword",
|
||||
colRegex: "Regex",
|
||||
empty: "No keywords yet",
|
||||
moveUp: "Move up",
|
||||
moveDown: "Move down",
|
||||
remove: "Remove",
|
||||
caseSensitive: "Case sensitive",
|
||||
color: "Text color",
|
||||
saved: "Keyword highlighting saved",
|
||||
},
|
||||
actions: {
|
||||
reconnect: "Reconnect",
|
||||
recordLog: "Record log",
|
||||
|
|
@ -949,7 +1007,34 @@ const en = {
|
|||
recent: "Recent",
|
||||
favorite: "Toggle favorite",
|
||||
encoding: "Encoding",
|
||||
fontSize: "Font",
|
||||
fontSize: "Font size",
|
||||
theme: "Theme",
|
||||
themeDark: "Dark",
|
||||
themeLight: "Light",
|
||||
colorScheme: "Color scheme",
|
||||
backgroundColor: "Background",
|
||||
foregroundColor: "Font color",
|
||||
scheme: {
|
||||
dark: "Deep blue (default)",
|
||||
blackWhite: "Black on white",
|
||||
whiteBlack: "White on black",
|
||||
greenBlack: "Green on black",
|
||||
amberBlack: "Amber on black",
|
||||
custom: "Custom",
|
||||
},
|
||||
copyOnSelect: "Copy on select",
|
||||
pasteDelay: "Paste max line wait",
|
||||
pasteDelayOff: "No delay (bulk send)",
|
||||
keepalive: "SSH keepalive",
|
||||
keepaliveOff: "Off",
|
||||
keepaliveSec: "{{n}} sec",
|
||||
options: "Options",
|
||||
globalSessionOptions: "Global Session Options",
|
||||
sessionOptionsSave: "Save",
|
||||
sessionOptionsCancel: "Cancel",
|
||||
sessionOptionsSaved: "Global session options saved",
|
||||
disconnectBanner: "Session disconnected",
|
||||
disconnectBannerError: "Session error or connection lost",
|
||||
broadcastPh: "Send to all tabs…",
|
||||
buttonBarHint: "One per line: label|command",
|
||||
postLoginPrompt: "Post-login commands (one per line, this device)",
|
||||
|
|
@ -960,9 +1045,12 @@ const en = {
|
|||
uploaded: "Upload complete",
|
||||
},
|
||||
err: {
|
||||
deviceType: "Unsupported device type",
|
||||
ipConflictRestart: "Database still enforces unique IP; restart the netx API and retry",
|
||||
sessionLimit: "Session limit reached; close other terminals first",
|
||||
neNotFound: "Network element not found",
|
||||
credsIncomplete: "Incomplete username/password on this NE",
|
||||
authRejected: "Wrong username or password. Please try again.",
|
||||
cliProfile: "UME NEs require a CLI connect profile (default account / hop)",
|
||||
connectFailed: "Device login failed: {{detail}}",
|
||||
sftpHop: "SFTP does not support hop devices yet (direct SSH only)",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue