I'd bet many people would like to see REST here

2016-08-31 23:55 GMT+05:00 David Sommerseth <
open...@sf.lists.topphemmelig.net>:

>
> Hi,
>
> I have for a long time pondered on how we can make the management API
> more suitable for more modern tools and tasks.  So I am just giving an
> extremely early heads-up on on what I'm poking at ... and hopefully
> receive some feedbacks on what you think.
>
> One of the things which have struck me is that D-Bus is adopted a lot
> of places, and its internal API have been considered stable for about
> 10 years or more.  Even though there are areas where D-Bus seems a bit
> over-engineered, it has proved to be a very useful IPC mechanism for a
> lot of software.
>
> Currently, each tool and application who wants to integrate with the
> management API today, needs to write their own TCP connect code and
> implement various methods to send, receive and parse the data to and
> from the management interface.  And the management interface doesn't
> scale well if you want to add support for more advanced management.
>
> Yes, the current interface solves most of today's challenges
> reasonably well.  But I believe it can be improved so that it can be
> even more flexible and more easily integrable with various set of
> management tools.
>
>
> * Why D-Bus?
> It provides a standardised API with integrations to most programming
> and scripting languages.  It is asynchronous and it you can both send
> messages but also have management tools act upon signals the
> application sends.  The way messages are sent are standardised, and
> all the connectivity and data exchange is covered by the D-Bus
> libraries.  Even data types are standardised and there is type safety
> on all data exchanged in a D-Bus message.
>
> D-Bus is also pretty much installed by default on any modern Linux
> distribution today.  And as far as I have seen, it exists on most
> POSIX based platforms.  I am somewhat uncertain on the Windows and
> macOS side, though.  More on that towards the end.
>
>
> * How will a D-Bus improve OpenVPN?
>
> With D-Bus we can provide a better integration towards GUIs as well as
> other management tools.  OpenVPN can much more easy alert D-Bus
> listeners about things which requires attention.  And we can more
> easily extend the management interface to also cover more areas of
> OpenVPN more easily, as D-Bus will describe the API through its
> built-in introspection.
>
> This can also enable us to provide plug-ins to be managed via the
> management interface, where each plug-in can individually provide it's
> own API without requiring any changes to the OpenVPN core.  The
> plug-in just needs to provide an init call which tells the OpenVPN
> server it has D-Bus support, and introspection takes care of providing
> the proper message passing from a management client down to the
> plug-in itself.
>
> And it can enabled more modern and advanced management tools to be
> integrated more easily with OpenVPN.  For example the Cockpit
> project[1] is a a web based management interface for Linux systems
> with systemd.  Cockpit depends entirely on D-Bus to do the management.
>  Writing a new module in Cockpit requires only to write a module
> covering the D-Bus methods defined in OpenVPN, the presentation and
> interaction is covered by the Cockpit framework.  A demo how to
> implement setting the time zone as a Cockpit module can be seen here[2].
>
> [1] <http://cockpit-project.org/>
> [2] <https://www.youtube.com/watch?v=97l1qf2sZtk&feature=youtu.be&t=1754>
>
> Other features where this can be useful is to provide D-Bus signals
> when users log in and out for audit purposes.  It is possible to add
> methods where you can set thresholds on bytes sent/received or how
> long a session have been running, and then send a signal when those
> thresholds are reached; then a management tool can decide what to do
> when these signals happens.  As a Cockpit feature, could be to list
> all connected VPN clients on a Cockpit enabled OpenVPN server, and
> have a button kick them out or otherwise manage these VPN clients.
>
> Many of these things requires today a poll mechanism which doesn't
> scale too well as only one instance can be connected to the management
> API today.  With D-Bus you can have many instances connected to the
> interfaces OpenVPN would provide at the same time - which again
> simplifies implementing new management tools for OpenVPN.
>
> Similar D-Bus interfaces will also be added to the OpenVPN 3 codebase
> when that arrives, which should help migration between OpenVPN 2 and
> OpenVPN 3 setups as well.
>
>
> * What comes next?
>
> Right now I am digging into the whole feature set of the management
> interface and wrapping my head around how this could look like through
> a D-Bus interface.
>
> The next thing I am will do is to provide some proof-of-concept code,
> which first will just connect to today's management API and be a
> broker between OpenVPN and D-Bus.  This won't scale well, but it will
> at least give something we can play with.
>
> Then comes the job of implementing D-Bus natively into OpenVPN and
> then start to provide more advanced features over D-Bus which today is
> be harder to achieve.  This will be an iterative process.
>
> But ... It would be very useful to get some input from especially
> macOS and Windows developers on how the state of D-Bus are on those
> platforms.  AFAIK, D-Bus is available on most *BSD platforms, so that
> shouldn't be an issue.
>
> It is not being planned to remove the management interface.  If D-Bus
> works well for everyone on all platforms, then we can discuss what to
> do next.  But as of now, I have no plans to remove this part of the code.
>
> And of course ... plenty of discussions along the road :)  But I chose
> to start this discussion in the public before actually starting to
> coding and submitting patches - just as a heads up and to get feedback
> before moving on further.
>
>
> --
> kind regards,
>
> David Sommerseth
> OpenVPN Technologies, Inc
>
>
>
> ------------------------------------------------------------
> ------------------
>
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
>
>
------------------------------------------------------------------------------
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to