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

Plugin ideas #43

Open
edufschmidt opened this issue Feb 14, 2021 · 5 comments
Open

Plugin ideas #43

edufschmidt opened this issue Feb 14, 2021 · 5 comments
Labels
idea Ideas for discussion

Comments

@edufschmidt
Copy link
Contributor

This issue is meant for discussing and specifying plugin ideas for Drago. As of now, we are working with the following possibilities:

  • Leasing plugin: plugin capable of automatically assigning IP addresses to nodes when they join a network;
  • Meshing plugin: plugin responsible for automatically creating connections between nodes in a network in order to establish a mesh;
  • Admission plugin: plugin responsible for handling node registration requests, possibly delegating the responsibility to a third-party;
  • Notification plugin: plugin for notifying users via email/Telegram/Slack (?) whenever an important event occurs (e.g., when a node joins/leaves a network, when a node goes online/offline).

Feel free to add any plugins you think would be useful to the list :)

@mikkel1156
Copy link

What about a routing plugin?

Unsure if it's already planned, but it would be cool to use one client as a "gateway" to other networks. Say for instance when we have a edge device that's exposed to the internet, and we have networks behind it (devices with their own Drago clients maybe). That way your clients don't need a direct line to the internal network but instead go through one device to reach the other network and/or clients.

@edufschmidt
Copy link
Contributor Author

This sounds interesting indeed. Can we specify it further? Like, where would this plugin run (in the gateway client or on the server)? What benefits would this provide compared to having the gateway node act as a Drago server in the same cluster as the "main" server?

@prigotti
Copy link
Contributor

What about a routing plugin?

Unsure if it's already planned, but it would be cool to use one client as a "gateway" to other networks. Say for instance when we have a edge device that's exposed to the internet, and we have networks behind it (devices with their own Drago clients maybe). That way your clients don't need a direct line to the internal network but instead go through one device to reach the other network and/or clients.

If I understand you correctly, this is actually just core Drago functionality.

Although the Network resource might get remodelled a bit in the future and there are some quality of life features that we plan on adding. you are supposed to define the network topology that suits your needs.

Plugins should be used to add reactive functionality, side-effects and the like, when there's interaction with a given resource.

@mikkel1156
Copy link

I was thinking of it being in line with the Drago concept of the clients keeping "in-sync" with the state that Drago defines, for routing it would be routing rules. Personally think it's fine to just have it on the server, and I think it provides functionality that Drago already doesn't have. Even if the gateway acted as a Drago server I don't see it changing anything, other than have an extra place to get configuration information from.

As far as I know you can only access the network of the client that it's already on and has access to. But what of cases where you only want them connect to a single internal network? But then it might become more of a firewall type of thing and out-of-scope for Drago.

@0x1a8510f2
Copy link

I'm not sure whether this is like what @mikkel1156 is describing or not, but I would personally love to see a port-forwarding plugin. That is, you can configure a node, be it the Drago server or just a regular node, to forward connections on a specific port to another node within the VPN. My usecase is using a VPS as a TCP reverse proxy for a server behind NAT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
idea Ideas for discussion
Projects
None yet
Development

No branches or pull requests

4 participants