You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The manager is our main entrypoint into connecting and translating protocols into the distant protocol that the client understands. Today, we expose talking to a distant server via distant-core and over ssh via distant-ssh2. As more protocols get implemented, it may not make sense to have all of them live in this repository. This is especially the case if a protocol is private (such as my workplace) and cannot be included directly in this repo.
To that end, we can use libloading to dynamically load DLL and so files from a well-known location (e.g. a plugins directory), but ONLY if a feature flag is enabled on the CLI. That way, the CLI can be built to not support runtime plugins since there is a security concern about enabling new plugins to be loaded.
The idea is that the plugin will have a trait it implements that can trigger functions like on_load and on_unload along with the core initial reason for the plugin register where new launch and connect handlers can be registered, which enables things like google drive or other extensions that may not make sense to include directly.
E.g. we load a plugin distant-gdrive.so which registers gdrive://... as a connect handler. Underneath, the plugin would implement the DistantApi and handle challenges needed to properly connect.
The text was updated successfully, but these errors were encountered:
The manager is our main entrypoint into connecting and translating protocols into the distant protocol that the client understands. Today, we expose talking to a distant server via
distant-core
and over ssh viadistant-ssh2
. As more protocols get implemented, it may not make sense to have all of them live in this repository. This is especially the case if a protocol is private (such as my workplace) and cannot be included directly in this repo.To that end, we can use libloading to dynamically load
DLL
andso
files from a well-known location (e.g. a plugins directory), but ONLY if a feature flag is enabled on the CLI. That way, the CLI can be built to not support runtime plugins since there is a security concern about enabling new plugins to be loaded.The idea is that the plugin will have a trait it implements that can trigger functions like
on_load
andon_unload
along with the core initial reason for the pluginregister
where new launch and connect handlers can be registered, which enables things like google drive or other extensions that may not make sense to include directly.E.g. we load a plugin
distant-gdrive.so
which registersgdrive://...
as a connect handler. Underneath, the plugin would implement theDistantApi
and handle challenges needed to properly connect.The text was updated successfully, but these errors were encountered: