Plugin ideas
edufschmidt opened this issue · comments
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 :)
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.
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?
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.
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.
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.