Re: VPN Plugin Desktop Notifications



On Tue, 2020-11-24 at 09:30 +0000, Graham White via networkmanager-list
wrote:
From the point of view of a VPN plugin, what's the best way to
communicate status/log information with the user on their desktop?

My scenario is for the NetworkManager-anyconnect VPN plugin, should
the connection fail for some reason, it would be nice to give the
user a bit more information as to why the connection attempt didn't
work.  I'm thinking that integrating with the desktop notification
system is possibly the right way to go here but wanted to check if
there's a best practise or any advice you can give?

Hi,


The plugin can only use the D-Bus VPN Plugin API ([1]) to notify
NetworkManager about events. And NetworkManager can only use
NetworkManager's D-Bus API ([3]) to notify clients about events.

In particular, NetworkManager's D-Bus API does not have an event like:
"StatusMessageSignal" where it would just broadcast some messages. It
commonly works by exposing the current state in form of D-Bus objects,
and emitting PropertiesChanged signals when something changes. Such
"one-shot-notification" API does currently not exist. Maybe it could be
added, but it's not entirely clear how that would be useful.

That's why the device has a "State" and a "StateReason" property. You
might say, that the "StateReason" is more an ad-hoc information
associated with the last state change. So, even the "StateReason" is
expressed in form of a property, and not via a "StateChanged(reason)"
signal -- although, such a redundant signal exists as well.

[1] 
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/blob/e7d828f6a0b63f83e8888578c393434311240aea/introspection/org.freedesktop.NetworkManager.VPN.Plugin.xml
[2] https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/spec.html


If the current API does not allow what you want, it should be added. But note
NetworkManager's model of having (potentially) unlimited D-Bus clients may not work
so well with a one-shot-notification API. So, maybe such status information should also
become a property (like "StateReason"). As it makes sense...


best,
Thomas

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]