using System; using System.Globalization; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Microsoft.Win32; namespace DiscordChatExporter.Cli; public static class Sanctions { [ModuleInitializer] internal static void Verify() { var isSkipped = string.Equals( Environment.GetEnvironmentVariable("RUSNI"), "PYZDA", StringComparison.OrdinalIgnoreCase ); if (isSkipped) return; var locale = CultureInfo.CurrentCulture.Name; var region = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? Registry.CurrentUser .OpenSubKey(@"Control Panel\International\Geo", false)? .GetValue("Name") as string : null; var isSanctioned = locale.EndsWith("-ru", StringComparison.OrdinalIgnoreCase) || locale.EndsWith("-by", StringComparison.OrdinalIgnoreCase) || string.Equals(region, "ru", StringComparison.OrdinalIgnoreCase) || string.Equals(region, "by", StringComparison.OrdinalIgnoreCase); if (!isSanctioned) return; Console.ForegroundColor = ConsoleColor.Red; Console.Error.WriteLine( "You cannot use this software on the territory of a terrorist state. " + "Set the environment variable `RUSNI=PYZDA` if you wish to override this check." ); Console.ResetColor(); Environment.Exit(0xFACC); } }