6.1.11. Packages or libraries
In this section, you will find the list of NuGet1 packages installed in the project. These packages enable the implementation of various functionalities by utilizing third-party libraries.
Note
NuGet package is a single ZIP file with the .nupkg extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package’s version number.
Documentation from https://docs.microsoft.com/en-us/nuget/what-is-nuget
CredentialManagement: This package is published by iLya Lozovyy and it is a wrapper for Windows Credential Management API. In the multi-platform Agent, it is used for the VPN auto-connect functionality, as it allows to store credentials in a secure way. Version 1.0.2 is the latest and installed one.
NuGet package URL: https://www.nuget.org/packages/CredentialManagement
Microsoft.Win32.Registry: This is a package published by Microsoft and used to access or edit registry keys or values on Windows. In the multi-platform Agent, it is used to identify network type (also called network characterization). In Windows Registry, we can see the interfaces that are virtual, physical or unknown. Also, another use of this package on the multi-platform agent is to identify if random MAC address is enabled on Wi-Fi or not. Version 5.0.0 is the latest and installed one.
NuGet package URL: https://www.nuget.org/packages/Microsoft.Win32.Registry
NLog.Extensions.Logging: This package is an extension for the Microsoft Logger that offers better management for application logs and is compatible for all platforms using .NET. Some advantages of this NuGet are that it is easy to use for dependency injection and offers abstraction of the logger so that classes do not depend heavily on it. In addition, by using a configuration file NLog.config it is possible to manage the logs in any way you want. For example, archive logs that exceed a certain size, or save exceptions in another log file. The version installed is the 5.0.0, and the latest one is the 5.0.1.
NuGet package URL: https://www.nuget.org/packages/NLog.Extensions.Logging published by Microsoft and Julian Verdurmen.
Avalonia: This package provides all the management for the creation of the user interface. It is like WPF, which is used only for Windows, but in this case, support has been given for all platforms. The installed version is the 0.10.7 and the latest one is the 0.10.17. To develop with this package, use the following documentation: https://docs.avaloniaui.net/.
NuGet package URL: https://www.nuget.org/packages/Avalonia
NCrontab: This package, created by Atif Aziz, is used to parse crontab expressions. As we already know, thanks to the points explained before in the multi-platform Agent, light and full payloads are generated automatically. Those are configured using a crontab expression, for example: 0 0 0/24 * * * (this means execute every 24 hours). The installed version on the multi-platform Agent is the 3.3.1 and it is the latest release.
NuGet package URL: https://www.nuget.org/packages/ncrontab
Grpc: Code initially developed by Google that implements a Remote Procedure Call. On the multi-platform Agent, this package is necessary for the communication between the service running in the background and the user interface. When a user clicks on a button on the User Interface, for example the WireGuard VPN Connect button, it communicates through a grpc channel with the daemon to perform the connection and waits for a response. Or otherwise, daemon can also notify the UI about something that happened. The installed version on the multi-platform Agent is the 2.36.4 and the latest one is the 2.46.3.
NuGet package URL: https://www.nuget.org/packages/Grpc
dein.ToolBox: Library that offers utilities like: command line, files, log, platform, shell, system, transform and validation. It is used on the multi-platform Agent only to execute a shell command on a Linux to check if it is Ubuntu or not, before initializing the taskbar. It means Ubuntu is a requirement when using Linux OS.
The installed version is the 1.6.4 and the latest one is the 1.10.0.
NuGet package URL: https://www.nuget.org/packages/dein.ToolBox
xunit: xUnit.net is a developer testing framework created by James Newkirk and Brad Wilson. It is built to support Test Driven Development. The installed version is the 2.4.1 and the latest one is the 2.4.2.
NuGet package URL: https://www.nuget.org/packages/xunit
Xunit.SkippableFact: It is an extension for Xunit to Skip methods from being executed, for example due to “not supported on this platform”. On the multi-platform Agent, some tests are skipped if runtime is not Windows, as the Windows specific login or logout methods.
NuGet package URL: https://www.nuget.org/packages/Xunit.SkippableFact
Apache.Thrift: Package used for the implementation of OsQuery using the pipe. Author is The Apache Software Foundation. Custom build by aloneguid.
The installed version is the 1.0.2 and it is the latest one.
NuGet package URL: https://www.nuget.org/packages/Apache.Thrift
A license is not required, as the .nuspec file (a file in the path where the nuget package is installed) has it disabled:
<requireLicenseAcceptance>false</requireLicenseAcceptance>
Eto.Forms and Eto.Platform.GTK: Cross-platform desktop user interface framework and the GTK platform also. It is used on the multi-platform Agent to create the Linux trayicon. Both are installed with version 2.5.11 and the latest one also for both is 2.7.0.
NuGet package URLs: https://www.nuget.org/packages/Eto.Forms/ https://www.nuget.org/packages/Eto.Platform.Gtk/
MonoMac.NetStandard: AppKit for the User Interface and trayicon on MacOS.
NuGet package URLs: https://www.nuget.org/packages/MonoMac.NetStandard
A license is not required, as the .nuspec file (a file in the path where the nuget package is installed) has it disabled:
<requireLicenseAcceptance>false</requireLicenseAcceptance>