using System; using System.IO; using System.Linq; namespace StellaOps.Testing; /// /// Ensures OpenSSL 1.1 native libraries are visible to Mongo2Go on platforms that no longer ship them. /// public static class OpenSslLegacyShim { private const string LinuxLibraryVariable = "LD_LIBRARY_PATH"; public static void EnsureOpenSsl11() { if (!OperatingSystem.IsLinux()) { return; } var nativeDirectory = Path.Combine(AppContext.BaseDirectory, "native", "linux-x64"); if (!Directory.Exists(nativeDirectory)) { return; } var current = Environment.GetEnvironmentVariable(LinuxLibraryVariable); if (string.IsNullOrEmpty(current)) { Environment.SetEnvironmentVariable(LinuxLibraryVariable, nativeDirectory); return; } const char separator = ':'; var segments = current.Split(separator, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); if (segments.Contains(nativeDirectory, StringComparer.Ordinal)) { return; } Environment.SetEnvironmentVariable(LinuxLibraryVariable, string.Concat(nativeDirectory, separator, current)); } }