aker-gateway / Aker

SSH bastion/jump host/jumpserver
Other
566 stars 71 forks source link

[RFE] Add categories or tree-like view in TUI #35

Closed Ramshield closed 7 years ago

Ramshield commented 7 years ago

Hi anazmy,

I've been using this project in our organization now, in 40+ hosts, including routers and switches. However it's very unclear. Could you implement some kind of category system or sub-folder which we can use in Aker overview? Thanks!

anazmy commented 7 years ago

Hi @Ramshield appreciate your feedback, what exactly you mean by unclear ?

Do you mean that having long list of hosts ? cuz the list narrows down as you type host names, this doesn't help you ?

Ramshield commented 7 years ago

Hi. The long list is unclear is what I mean. It would be easier to be able to divide it into categories. I now have about 40+ hosts, which isn't even close to all of them. And I can imagine if enterprises even larger than this would use this that it would be even worse. Ofcourse I'm not sure what your target is, but it would certainly help small/medium sized companies already to divide it into categories or subdirectories. Or maybe even some sort of tree that would be very useful.

anazmy commented 7 years ago

I wanna make it suitable for all situations for sure , I thought that narrowing down the list of servers as you type hostnames would help , but maybe I was wrong .

I understand your request to have servers divided in sub categories here , however is it possible to provide some screenshots to show how it is not convenient as of now (considering the type-to-search feature) ?

Ramshield commented 7 years ago

I'm afraid I can't provide a screenshot as this is a live environment and servers of customers, so I can't share that data. But imagine using 40+ hosts in a live environment where we switch a lot between servers, and typing it every time is a bit slow, and you need to remember the hostname in such case as well. Therefor if I can divide it in something like: CustomerA's servers CustomerB's servers Internal servers

So it is easier to scroll through, looking for a hostname. I'm familiar with most hosts, but my colleagues are not.

anazmy commented 7 years ago

No worries, well I need to evaluate this change as it requires considerable modifications in different layers .

I will keep this issue open to consider in future release .

Ramshield commented 7 years ago

Okay, thanks for considering it, hopefully it will be implemented soon :)

faux-eccles commented 7 years ago

Would it be possible to implement a "tagging" like feature, that the filter also checks when you type? Or maybe a switch that cycles what field the filter is registering

anazmy commented 7 years ago

Hey @lankyninja wb :) , not sure if tagging fits here frankly. I was thinking of something like urwid.TreeWidget image

To organize available hosts , it fits various use cases , dev/production is one example , or @Ramshield case is another .

Ramshield commented 7 years ago

That's perfect @anazmy! Exactly what I had in my mind!

Ramshield commented 7 years ago

Have you been able to make any progress in it by chance? I'd really love to start using this feature!

ezpzhosting commented 7 years ago

Been following this project for a while for a potential replacement for EzeeLogin which we currently use. It would be nicer in my opinion to just have a list of categories that you can scroll through, hitting enter would then list all the servers in that category rather than having a long expanding tree.

anazmy commented 7 years ago

@Ramshield have been busy the past period, but I will pick this up soon. I know for fact that @lankyninja - thankfully - has started poking around this feature.

anazmy commented 7 years ago

@ezpzhosting thanks for your interest, does my screenshot above look similar to what you are describing?

anazmy commented 7 years ago

@ezpzhosting also is the shortlist as you type feature helpful, it's available now?

ezpzhosting commented 7 years ago

In functionality it looks similar but after entering one of the groups it removes the rest from view to keep the interface clean. They just use the 'All Servers' category in this video but it shows a couple of seconds of the interface we currently use: https://www.youtube.com/watch?v=PTIUR4oBJxE&feature=youtu.be&t=6s

anazmy commented 7 years ago

@ezpzhosting I see, I think something similar can be doable

Ramshield commented 7 years ago

Good to hear @anazmy, sorry if I seem impatient, I was just curious as we're currently waiting for the feature before we can roll this further out in our environment.

anazmy commented 7 years ago

@Ramshield lots of personal stuff to take care of before attending to this, sorry for the delay.

faux-eccles commented 7 years ago

I have started work on this here https://github.com/lankyninja/Aker/tree/feature/35-add-cataegories.

Next step is to refacter references to the hosts as Host objects rather than the hostnames directly.

I'll create the documentation for usage at a later time

anazmy commented 7 years ago

hey @lankyninja , ur up to something here, many thanks, keep it up.

I'm think I will be clear from the stuff I got now in my hands in 1/2 weeks and will be able to focus again on getting this done.

anazmy commented 7 years ago

Proposed hostgroups structure :

{
 "dbservers": {
  "hosts": [
   "db1.ipa.example", 
   "db2.ipa.example"
  ]
 }, 
 "linuxservers": {
  "hosts": [
   "aker.ipa.example", 
   "web1.ipa.example", 
   "web2.ipa.example", 
   "db1.ipa.example", 
   "db2.ipa.example"
  ]
 }
}

Looking into building a dict of Host() object instead

anazmy commented 7 years ago

@lankyninja back now and looking into your changes, some neat stuff there :+1:

anazmy commented 7 years ago

sample hosts.json (Maybe we need to rename that file):

anazmy commented 7 years ago

Same separation logic applies, hosts.py handles both host and hostgroup dealing from/to cache, while the IdP module - Json.py for example - communicates with the back-end.

Diablo2050 commented 7 years ago

Hi anazmy, Been searching for a SSH jump server solution till i found your project, gonna to start using your solution right away. Any idea when's this feature gonna be added ? Also in a 40+ host environment and with a large team of Sysadmins how can i manage user creation and Private keys for each without using Freeipa (in a web hosting environment) ?

anazmy commented 7 years ago

Hey @Diablo2050 , you caught me working on it, I'm nearly finished with the backend stuff, working on presenting the hostgroups (categories) now to the user TUI, hopefully it will be done soon.

As for user/server management, FreeIPA is the available method right now, its centralized and has a detailed WebUI. I want to write another tool to handle user/server management in a Json setup but that's for later.

May I ask you why you're not considering FreeIPA ?

Diablo2050 commented 7 years ago

@anazmy we haven't tried it and i don't know how feasible it is in a web hosting environment, for example: we have two different Geo locations for our servers and some customers(High Availability) have one in each location in case one falls then other jumps in, i don't know the how Freeipa might impact Nginx and Apache. if you can share your insights i would be grateful.

anazmy commented 7 years ago

All what you mentioned should work nice with FreeIPA, if you're looking for more info kindly join our gitter chat, you can find it in the project landing page here in github, just want to leave this area for issue tracking.

Ramshield commented 7 years ago

Hi @Diablo2050. I personally wrote a script for it. If you'd like, I'd be happy to share it!

Diablo2050 commented 7 years ago

@Ramshield that would be awesome thanks

anazmy commented 7 years ago

@Ramshield this took long time for various reasons, it should be now implemented, please try the new code and let me know how it goes. If you're using Json approach, take a look at the new file syntax.

Ramshield commented 7 years ago

Thanks @anazmy, I'll give it a try soon! And no worries, I'm patient, just glad it has been implemented, thanks!!

Are you already accepting donations? :)

anazmy commented 7 years ago

Hope you like it @Ramshield. And no donations for now, this just for fun so far, thanks for the offer though.

Ramshield commented 6 years ago

Alright, just implemented it. Took a lot longer then expected as it was quite busy.

When entering a host group, the order is 'messed up', it pretty much looks random. Are you/we able to sort it alphabetical, or the as it was before, sorted as appeared in hosts.json?

anazmy commented 6 years ago

hmm, can you please open a new issue to track this point