[Networkmanager] Implementing a NetworkManager VPN Plugin in Rust

amidamaru rookie ardtimeit at gmail.com
Wed Dec 6 07:46:50 UTC 2023


Thanks for your detailed guideline. I really appreciate it.
I'd like to implement it in Rust and I know it would be much more work.

Cheers,
Thao.

Vào Th 4, 6 thg 12, 2023 vào lúc 01:17 Thomas Haller <thaller at redhat.com>
đã viết:

> On Tue, 2023-12-05 at 23:56 +0700, amidamaru rookie wrote:
> > Thanks for your advice. I will play some code first based on
> > your suggestion and check networkmanager code for adding new type
> > before submitting a MR.
> >
> > Cheers,
>
> to have a working VPN plugin, you need at least a file
>
>   /usr/lib/NetworkManager/VPN/*.name
>
> and a executable
>
>   [VPN Connection]
>   program=/usr/libexec/nm-*-service
>
> And that executable is spawned by NetworkManager, and is expected to
> service the D-Bus interface for VPN plugins.
>
> Also, there is a client library that can provide meta-data (information
> about the plugin) to client applications (nmcli, nm-connection-editor).
> Those are
>
>   [libnm]
>   plugin=libnm-*.so
>
> These provide a nm_vpn_editor_plugin_factory() function, to load a
> NMVpnEditorPlugin. That API is in libnm (and implemented by the
> plugin).
>
> There is also a helper tool for requesting secrets
>
>   [GNOME]
>   auth-dialog=/usr/libexec/nm-openvpn-auth-dialog
>
> which again implements some API (being forked by nm-applet, and
> communicating via stdin/stdout).
>
>
> The legacy library you can ignore. It's no longer relevant:
>
>   [GNOME]
>   properties=libnm-*
>
>
> You at least need the first part.
>
> All these pieces can be implemented in any language. However, since all
> existing plugins are in C+glib, it's much easier to look at
> NetworkManager-openvpn and just duplicate that. If you need to
> implement that all in a new language, it's much more work.
>
>
> Good luck,
> Thomas
>
>
> >
> > Vào Th 3, 5 thg 12, 2023 vào lúc 23:38 Frédéric Martinsons
> > <frederic.martinsons at gmail.com> đã viết:
> > > I don't think it is possible without patching the networkmanager
> > > code itself. You should look at how these kind of type are defined
> > > in nmcli/libnm code base and possibly submit a merge request to add
> > > a new rosenpass one.
> > >
> > > Le mar. 5 déc. 2023, 17:33, amidamaru rookie <ardtimeit at gmail.com>
> > > a écrit :
> > > > Thanks for your reference links, I will check them out.
> > > > For nmcli integration, the only thing I have no idea is the value
> > > > of type must be known.
> > > > So as my example above:
> > > > nmcli con import type rosenpass file /data/rp.conf
> > > > the value of type is "rosenpass".
> > > > Is there any way to add this new value ?
> > > >
> > > > Thank you,
> > > >
> > > > Vào Th 3, 5 thg 12, 2023 vào lúc 23:16 Frédéric Martinsons
> > > > <frederic.martinsons at gmail.com> đã viết:
> > > > > Maybe you can take a look
> > > > > at https://crates.io/crates/networkmanager which uses nm dbus
> > > > > api.
> > > > >
> > > > > You may also want to look at gtk-rs project
> > > > > (https://gtk-rs.org/) to find inspiration.
> > > > >
> > > > >
> > > > >
> > > > > On Tue, 5 Dec 2023 at 17:12, amidamaru rookie
> > > > > <ardtimeit at gmail.com> wrote:
> > > > > > Hi team,
> > > > > >
> > > > > > Currently I'm implementing a Rosenpass NM Plugin in Rust.
> > > > > > I cannot find much information about this except the VPN
> > > > > > support page - but most of the projects there were written in
> > > > > > C.
> > > > > > The only reference I can find is this repository.
> > > > > > But after all these years, the NetworkManager codebase won't
> > > > > > have this shared directory anymore.
> > > > > > So now, my question is where can I collect these files from
> > > > > > the current NM codebase? Also,
> > > > > > Besides the GUI (editor dialog) part, I want to integrate
> > > > > > Rosenpass into nmcli also.
> > > > > > For example, after integration, I can do something like this:
> > > > > > nmcli con import type rosenpass file /data/rp.conf
> > > > > >
> > > > > > Could you please give some advice on this?
> > > > > >
> > > > > > Thank you,
> > > > > > --
> > > > > > Đinh Thảo_PTIT's student - ardtimeit at gmail.com
> > > >
> > > >
> > > > --
> > > > Đinh Thảo_PTIT's student - ardtimeit at gmail.com
> >
> >
> > --
> > Đinh Thảo_PTIT's student - ardtimeit at gmail.com
>
>

-- 
Đinh Thảo_PTIT's student - *ardtimeit at gmail.com <ardtimeit at gmail.com>*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/networkmanager/attachments/20231206/240673f7/attachment-0001.htm>


More information about the Networkmanager mailing list