Files
Nebula-Auth/SteamLibForked/Utility/EnvironmentUtility.cs
T
achiez 8ff960189e 1.5.6 Bug fixes and code clean-ups
- Update: Added "Copy Password" to Mafile context menu (if available)
- Update: "Save Password" now pre-fills the current password in the "Login Again" dialog when encryption is enabled
- Fix: Prevented overlapping confirmation cycles in AutoConfirmer
- Fix: Added a Snackbar notification when a confirmation cycle is skipped due to a too frequent timer interval
- Fix: Fixed a rare bug where the previous proxy was used instead of the current one during session refresh
- Fix: Corrected "Session Permanently Expired" message showing on unrelated errors (e.g. network issues)
- UI-Fix: Fixed visual glitch where proxy input appeared non-empty when switching to a mafile-specific proxy
- Cleanup: Refactored and cleaned up codebase, improved styling and formatting via ReSharper
2025-05-02 23:29:24 +03:00

224 lines
6.5 KiB
C#

using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
namespace SteamLib.Utility;
public static class EnvironmentUtility
{
// ReSharper disable once InconsistentNaming
public static EOSType GetOSType()
{
var osVer = Environment.OSVersion;
var ver = osVer.Version;
return osVer.Platform switch
{
PlatformID.Win32Windows => ver.Minor switch
{
0 => EOSType.Win95,
10 => EOSType.Win98,
90 => EOSType.WinME,
_ => EOSType.WinUnknown
},
PlatformID.Win32NT => ver.Major switch
{
4 => EOSType.WinNT,
5 => ver.Minor switch
{
0 => EOSType.Win2000,
1 => EOSType.WinXP,
// Assume nobody runs Windows XP Professional x64 Edition
// It's an edition of Windows Server 2003 anyway.
2 => EOSType.Win2003,
_ => EOSType.WinUnknown
},
6 => ver.Minor switch
{
0 => EOSType.WinVista, // Also Server 2008
1 => EOSType.Windows7, // Also Server 2008 R2
2 => EOSType.Windows8, // Also Server 2012
// Note: The OSVersion property reports the same version number (6.2.0.0) for both Windows 8 and Windows 8.1.- http://msdn.microsoft.com/en-us/library/system.environment.osversion(v=vs.110).aspx
// In practice, this will only get hit if the application targets Windows 8.1 in the app manifest.
// See http://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v=vs.85).aspx for more info.
3 => EOSType.Windows81, // Also Server 2012 R2
_ => EOSType.WinUnknown
},
10 when ver.Build >= 22000 => EOSType.Win11,
10 => EOSType.Windows10, // Also Server 2016, Server 2019, Server 2022
_ => EOSType.WinUnknown
},
// The specific minor versions only exist in Valve's enum for LTS versions
PlatformID.Unix when RuntimeInformation.IsOSPlatform(OSPlatform.Linux) => ver.Major switch
{
2 => ver.Minor switch
{
2 => EOSType.Linux22,
4 => EOSType.Linux24,
6 => EOSType.Linux26,
_ => EOSType.LinuxUnknown
},
3 => ver.Minor switch
{
2 => EOSType.Linux32,
5 => EOSType.Linux35,
6 => EOSType.Linux36,
10 => EOSType.Linux310,
16 => EOSType.Linux316,
18 => EOSType.Linux318,
_ => EOSType.Linux3x
},
4 => ver.Minor switch
{
1 => EOSType.Linux41,
4 => EOSType.Linux44,
9 => EOSType.Linux49,
14 => EOSType.Linux414,
19 => EOSType.Linux419,
_ => EOSType.Linux4x
},
5 => ver.Minor switch
{
4 => EOSType.Linux54,
10 => EOSType.Linux510,
_ => EOSType.Linux5x
},
6 => EOSType.Linux6x,
7 => EOSType.Linux7x,
_ => EOSType.LinuxUnknown
},
PlatformID.Unix when RuntimeInformation.IsOSPlatform(OSPlatform.OSX) => ver.Major switch
{
11 => EOSType.MacOS107, // "Lion"
12 => EOSType.MacOS108, // "Mountain Lion"
13 => EOSType.MacOS109, // "Mavericks"
14 => EOSType.MacOS1010, // "Yosemite"
15 => EOSType.MacOS1011, // El Capitan
16 => EOSType.MacOS1012, // Sierra
17 => EOSType.Macos1013, // High Sierra
18 => EOSType.Macos1014, // Mojave
19 => EOSType.Macos1015, // Catalina
20 => EOSType.MacOS11, // Big Sur
21 => EOSType.MacOS12, // Monterey
_ => EOSType.MacOSUnknown
},
_ => EOSType.Unknown
};
}
}
[SuppressMessage("ReSharper", "InconsistentNaming")]
public enum EOSType
{
Unknown = -1,
Web = -700,
IOSUnknown = -600,
IOS1 = -599,
IOS2 = -598,
IOS3 = -597,
IOS4 = -596,
IOS5 = -595,
IOS6 = -594,
IOS6_1 = -593,
IOS7 = -592,
IOS7_1 = -591,
IOS8 = -590,
IOS8_1 = -589,
IOS8_2 = -588,
IOS8_3 = -587,
IOS8_4 = -586,
IOS9 = -585,
IOS9_1 = -584,
IOS9_2 = -583,
IOS9_3 = -582,
IOS10 = -581,
IOS10_1 = -580,
IOS10_2 = -579,
IOS10_3 = -578,
IOS11 = -577,
IOS11_1 = -576,
IOS11_2 = -575,
IOS11_3 = -574,
IOS11_4 = -573,
IOS12 = -572,
IOS12_1 = -571,
AndroidUnknown = -500,
Android6 = -499,
Android7 = -498,
Android8 = -497,
Android9 = -496,
UMQ = -400,
PS3 = -300,
MacOSUnknown = -102,
MacOS104 = -101,
MacOS105 = -100,
MacOS1058 = -99,
MacOS106 = -95,
MacOS1063 = -94,
MacOS1064_slgu = -93,
MacOS1067 = -92,
MacOS107 = -90,
MacOS108 = -89,
MacOS109 = -88,
MacOS1010 = -87,
MacOS1011 = -86,
MacOS1012 = -85,
Macos1013 = -84,
Macos1014 = -83,
Macos1015 = -82,
MacOS1016 = -81,
MacOS11 = -80,
MacOS111 = -79,
MacOS1017 = -78,
MacOS12 = -77,
MacOS13 = -76,
MacOSMax = -1,
LinuxUnknown = -203,
Linux22 = -202,
Linux24 = -201,
Linux26 = -200,
Linux32 = -199,
Linux35 = -198,
Linux36 = -197,
Linux310 = -196,
Linux316 = -195,
Linux318 = -194,
Linux3x = -193,
Linux4x = -192,
Linux41 = -191,
Linux44 = -190,
Linux49 = -189,
Linux414 = -188,
Linux419 = -187,
Linux5x = -186,
Linux54 = -185,
Linux6x = -184,
Linux7x = -183,
Linux510 = -182,
LinuxMax = -101,
WinUnknown = 0,
Win311 = 1,
Win95 = 2,
Win98 = 3,
WinME = 4,
WinNT = 5,
Win2000 = 6,
WinXP = 7,
Win2003 = 8,
WinVista = 9,
Windows7 = 10,
Win2008 = 11,
Win2012 = 12,
Windows8 = 13,
Windows81 = 14,
Win2012R2 = 15,
Windows10 = 16,
Win2016 = 17,
Win2019 = 18,
Win2022 = 19,
Win11 = 20,
WinMAX = 21
}