This merge is rather large, so it needs some explaining. Most of it was
a straightforward merge, but there were a few markdown edits i made that
had to manually be resolved.
There were also a few path changes to be made in the userinput.tsx file.
* split settings modals
* init
* init
* remove styles not related to checkbox
* remove styles not related to CmdStrCode
* renderCmdText doesn't need styles
* remove styles not related to dropdown
* IconButton doesn't need styles because it extends Button
* remove old connections
* InfoMessage conmponent no longer needed
* fix import error
* remove styles not related to InlineSettingsTextEdit
* remove styles not related to InputDecoration
* LinkButton doesn't need styles cos it's extends Button component
* remove styles not related to markdown
* remove styles not related to modal
* NumberField doesn't need styles cos it extends TextField
* remove styles not related to PasswordField
* RemoteStatusLight no longer used. It's replaced by Status component.
* remove styles not related to ResizableSidebar
* SettingsError doesn't need styles cos it uses classnames in app.less
* remove styles not related to Status
* remove styles not related to TextField
* remove styles not related to Toggle
* remove styles not related to Tooltip
* init
* cleanup bookmarks model
* cleanup clientsettingsview model
* cleanup cmd model
* remove dayjs import from bookmarks model
* cleanup commandrunner model
* cleanup historyview model
* cleanup input model
* cleanup linecontainer model
* cleanup mainsidebar model
* cleanup main model
* cleanup plugins model
* cleanup remote model
* cleanup screen model
* cleanup screenlines model
* cleanup session model
* cleanup screenlinecontainer model
* cleanup connectionsview model
* add index.ts inside model dir
* replace /model_old imports with /model
* rename model to models
* move model_old to models
* fix ptyDataSource errors
* split models/model
* first pass of copy file
* first pass fixing up function
* fleshed out copy function, still working on display and parameters
* implemented scp like syntax
* finished implemententation of copy file - there are still issues
* more bug fixes, still running into error
* pushing waveshell concurrency and channel fixes - still need to do some qol fixes before merge
* aesthetic fixes and removed logs
* fixed bug in GetRemoteRuntimeState
* formatting small fix
* fixed pretty print bytes
* added local to local command
* small fix removing workaround
* added workaround back
* added some logs for debug
* added some more logs
* quick bug fix for update cmd race condition
* added fix for race condition
* added some more logs for debugging
* fixed up logs
* added proper fe state for dest parameter
* implemented setting status indicator output
* first pass at updating status indicators
* removed logs and small fix ups
* removed whitespace
* addressed review comments
This isn't quite as reactive as the other methods, but it does attempt
to use publickey without a passphrase, then attempt to use the password
as the passphrase, and finally prompting the user for a passphrase. The
problem with this approach is that if multiple keys are used and they
all have passphrases, they need to all be checked up front. In practice,
this will not happen often, but it is something to be aware of.
I was wrong in my previous analysis. The number given is the total
number of tries. This is confusing when keyboard authentication and
password authentication are both available which usually doesn't happen.
Previously, it was impossible to use to separate methods of the same
type to try ssh authentication. This made it impossible to make an auto
attempt before a manual one. This change restricts that by combining
them into one method where the auto attempt is tried once first and
cannot be tried again. Following that, interactive authentication can be
tried separately.
It also lowers the time limit on kbd interactive authentication to 15
seconds due to limitations on the library we are using.
This makes the ssh password authentication interactive with its own user
input modal. Unfortunately, this method does not allow trying a default
first. This will need to be expanded in the future to accomodate that.
* split settings modals
* init
* init
* remove styles not related to checkbox
* remove styles not related to CmdStrCode
* renderCmdText doesn't need styles
* remove styles not related to dropdown
* IconButton doesn't need styles because it extends Button
* remove old connections
* InfoMessage conmponent no longer needed
* fix import error
* remove styles not related to InlineSettingsTextEdit
* remove styles not related to InputDecoration
* LinkButton doesn't need styles cos it's extends Button component
* remove styles not related to markdown
* remove styles not related to modal
* NumberField doesn't need styles cos it extends TextField
* remove styles not related to PasswordField
* RemoteStatusLight no longer used. It's replaced by Status component.
* remove styles not related to ResizableSidebar
* SettingsError doesn't need styles cos it uses classnames in app.less
* remove styles not related to Status
* remove styles not related to TextField
* remove styles not related to Toggle
* remove styles not related to Tooltip
As a follow-up to the previous change, we now allow the user to respond
to interactive queries in order to determine if an unknown known hosts
key can be added to a known_hosts file if it is missing. This needs to
be refined further, but it gets the basic functionality there.
Manually integrating with golang's ssh library means that the code must
authenticate known_hosts on its own. This is a first pass at creating a
system that parses the known hosts files and denys a connection if there
is a mismatch. This needs to be updated with a means to add keys to the
known-hosts file if the user requests it.
This rounds out the most immediate concerns for the new user input
modal. The frontend now includes a timer to show how much time is left
and will close itself once it reaches zero. Css
formatting has been cleaned up to be more reasonable.
There is still some test code present on the back end. This will be
removed once actuall examples of the new modal are in place.
This updates the user input backend to fix a few potential bugs. It also
refactors the user input request and response types to better handle
markdown and errors while making it more convenient to work with.
A couple frontend changes were made to keep everything compatible.