Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature request: make a simple protocol / API to allow servers to self report, for indexing #84

Open
elendee opened this issue Mar 17, 2022 · 12 comments
Labels
enhancement New feature or request

Comments

@elendee
Copy link

elendee commented Mar 17, 2022

goal: allow for easy browsing of all devzat active installs, similar to 3rd party server lists for discord (see "disboard.org" and others).

the MUD gaming community has something called "global mud protocol" that allows you to ping servers for current status and general server info, if the server admin has implemented it.

basically this would allow devzat to feel like a single, scaled service even as it potentially scales to lots of disparate hosts.

@quackduck
Copy link
Owner

That’s an interesting idea!

@elendee
Copy link
Author

elendee commented Mar 18, 2022

yea even better.. I was thinking this would be a 3rd party listing, a website etc, but you could build it right into devzat core, as long as there was a registry server online for it to ping.

.. although.. that would imply switching SSH sessions, which is probably out of the scope of one devzat install to do, since devzat lives inside one SSH session.

You could run a "devzat hub server" that listed online servers and tunneled people between them, but that would be a lot of bandwidth for you and defeat the purpose of distributing it.. so yea probably some level of client initiative is needed here, where they browse the "hub" listing by themselves and choose between them

@l3gacyb3ta
Copy link

Woah, sorta like IRC!

@elendee
Copy link
Author

elendee commented Mar 20, 2022

different level of abstraction... IRC is a protocol where devzat is an SSH application

@quackduck
Copy link
Owner

What server info should be included in a reply to such a ping?

@elendee
Copy link
Author

elendee commented Mar 28, 2022

Just self-reported, publicly available info I think.
So I'd think

  • created date
  • number active users (there is no "registered users" in devzat right... although you could track all-time logins?)
  • name
  • description
  • owner handle (I'd make the owner type this explicitly during config so it's not an email etc by accident)
  • sub-channels / topics available

@quackduck
Copy link
Owner

What do you mean by an owner handle? A GitHub/Twitter username?

@elendee
Copy link
Author

elendee commented Mar 30, 2022

I take handle to mean a "URI safe username", similar to a unique key for an asset in a URI often being called a "slug".

I don't think there's a hard definition. But I would call "bob" a username, "bob jones" a name, and "bob#1234" a handle

So yea an email could fall under that category. But since these will likely be public, I'd vote against that

@quackduck
Copy link
Owner

Yeah we can let the owner decide what they'd like to show. I think we can have this work over HTTP as JSON. We'd need to decide a default port for it.

@quackduck
Copy link
Owner

I wonder if we could detect an HTTP client on the SSH port and reply with this message instead of the usual SSH exchange.

@elendee
Copy link
Author

elendee commented Apr 10, 2022

That does seem ideal yea.
I think the next best option would be digging into some server-side language that has an SSH package, so you could expose it via that. That's what I did for MUD servers, using the node telnet package to repackage all the telnet data into a normal node server. I don't know if SSH has good packages for that though

@CodeLongAndProsper90
Copy link
Contributor

You can access argv with an ssh command, correct? Just add an option called '--dump-info' and send the info as json across stdout

@quackduck quackduck added the enhancement New feature or request label Apr 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants