Git Product home page Git Product logo

wishlistlite's People

Contributors

usrme avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

wishlistlite's Issues

Don't show duplicate hosts

While SSH itself doesn't care if its configuration has duplicate hosts defined, it makes sense for me to not present potential duplicates (most likely to creep up through Include keywords).

[ QoL ] - Wishlistlite should remain "open" even if it fails to connect

Issue : [ Quality of life improvement ] - 2023/07

Wishlistlite closes or exits to the terminal prompt if it fails to connect or ping a host, it would be better if it remained "open" to address the problem or remove the bad host.

Behavior

Add a dummy unreachable host to the config , and attempt to connect to it. The application exits.

Make sure program exits earlier when error occurs

The main program does not exit early if the parent connection fails to initiate, nor does the standard error channel logic introduced in commit 07ed441 actually work. Previously I had no output being shown before the final syscall.Exec was being made and that didn't bring to light that if the parent connection fails for whatever reason (e.g. no private keys have been loaded to the OpenSSH authentication agent), then the main program still continues to run and the failure only arises when the aforementioned syscall.Exec runs, and any errors that were shown were not from the standard error channel that I had set up.

Add ability to copy highlighted host's 'HostName' to clipboard

On several occasions I've wanted to just quickly copy the HostName value of an entry for reference elsewhere (be it from the main list comprised of the SSH configuration entries or from the recently-connected-to list, which can contain manually input hosts).

There are existing examples of how the Charm folks are doing this, so it shouldn't be too hard.

Could a visualization be done for how the connections work?

With the somewhat convoluted logic of starting the main program (i.e. Wishlist Lite), which starts a goroutine for the parent SSH connection and once that's done the main program is replaced with a child SSH connection to the control socket from the parent SSH connection, I'm wondering whether this seeming flow can somehow be visualized by observing system resources.

Investigate showing spinner up until the point of a connection/failure

It feels like this could be a nice feature to show a loading spinner in the main screen without immediately jumping to the SSH process, though this will definitely require a refactor to how the SSH process is handled. If a pseudoterminal is allocated or the connection fails entirely, then the user should immediately just see that and the wishlistlite process should finish. Everything up until either of those should "just" be a visible spinner to indicate that something is happening.

Add ability to sort by recently connected

For me, personally, opening up and having the most recently connected hosts at the top would be a nice improvement in the usability. A minor speed improvement already exists with the custom input option as I can just press i and then the alias of the host, but still...

Add ability to ping individual hosts

I'm really stretching the definition of "enhancement", but for whatever reason I thought this would be cool to implement now that it seems I have enough pieces in place and knowledge gained with the work I did in issue #20.

Make sure ad hoc connections are recorded as well

Just as selections made from the existing SSH configuration or from the created recent.json, so too should ad hoc connections made through i be recorded in recent.json. If what was put in to the prompt matches one of the aliases defined in the SSH configuration, then the accompanying HostName value, if one exists, should be recorded as well. Otherwise, the HostName value should just match whatever was put in.

Add additional information in case of identical 'HostName' values

This stems from #22 (comment) and aims to alleviate the following:

image

Since this is legal in terms of an SSH configuration as each Host can have additional options that separate one from another even if HostName values are identical, it presents a problem visually as without a descriptive Host value it's not possible to easily tell the target hosts apart.

Add timestamps to view when sorting

This would give an indication as to when the previous connection to a host was made. When no connection has been made then the regular FQDN should be shown instead.

Add support for INI files

I, personally, would love to be able to pass in an Ansible inventory file and have at the very least a list of hosts I can connect to. At the very least meaning that I probably don't need to know what group(s) they belong to or need to see any hierarchies as the ability to filter is at my fingertips anyway.

At first I thought I'd write my own INI parser, but that just seems like a fraught endeavour, so I'll just leverage prior work by others.

Test methods of having the MOTD shown for the child SSH connection

At the moment when the parent SSH connection gets created in the background it swallows up the entirety of the standard output, which means that when the child SSH connection gets created any MOTD is not shown. Ideally it should be shown then as well as it seemingly is the only SSH connection that gets made as far as the end user is concerned.

I'm thinking that as soon as something is detected on the parent connection's standard output one of the following should be done to preserve the MOTD for when the child connection happens:

  1. terminate the parent SSH connection immediately in the hopes that the child connection will go through any re-initialization logic
  2. store all of the standard output from the parent SSH connection, remove the very last line (the part of the prompt), print the stored output just before syscall.Exec is done
    • this should seemingly look as if everything was done normally

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.