Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit f5c1409

Browse files
committed
fix: Config bypass service
1 parent c6d24b7 commit f5c1409

File tree

2 files changed

+64
-19
lines changed

2 files changed

+64
-19
lines changed

src/KitsuneSteamRestrict.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -240,22 +240,23 @@ private bool IsRestrictionViolated(CCSPlayerController player, SteamUserInfo use
240240
return false;
241241

242242
BypassConfig bypassConfig = _bypassConfig ?? new BypassConfig();
243+
PlayerBypassConfig? playerBypassConfig = bypassConfig.GetPlayerConfig(player.AuthorizedSteamID?.SteamId64 ?? 0);
243244

244245
bool isPrime = userInfo.HasPrime;
245246
var configChecks = new[]
246247
{
247-
(isPrime && !bypassConfig.BypassMinimumCS2Level, Config.MinimumCS2LevelPrime, userInfo.CS2Level),
248-
(!isPrime && !bypassConfig.BypassMinimumCS2Level, Config.MinimumCS2LevelNonPrime, userInfo.CS2Level),
249-
(isPrime && !bypassConfig.BypassMinimumHours, Config.MinimumHourPrime, userInfo.CS2Playtime),
250-
(!isPrime && !bypassConfig.BypassMinimumHours, Config.MinimumHourNonPrime, userInfo.CS2Playtime),
251-
(isPrime && !bypassConfig.BypassMinimumLevel, Config.MinimumLevelPrime, userInfo.SteamLevel),
252-
(!isPrime && !bypassConfig.BypassMinimumLevel, Config.MinimumLevelNonPrime, userInfo.SteamLevel),
253-
(!bypassConfig.BypassMinimumSteamAccountAge, Config.MinimumSteamAccountAgeInDays, (DateTime.Now - userInfo.SteamAccountAge).TotalDays),
254-
(Config.BlockPrivateProfile && !bypassConfig.BypassPrivateProfile, 1, userInfo.IsPrivate ? 0 : 1),
255-
(Config.BlockTradeBanned && !bypassConfig.BypassTradeBanned, 1, userInfo.IsTradeBanned ? 0 : 1),
256-
(Config.BlockGameBanned && !bypassConfig.BypassGameBanned, 1, userInfo.IsGameBanned ? 0 : 1),
257-
(!string.IsNullOrEmpty(Config.SteamGroupID) && !bypassConfig.BypassSteamGroupCheck, 1, userInfo.IsInSteamGroup ? 1 : 0),
258-
(Config.BlockVACBanned && !bypassConfig.BypassVACBanned, 1, userInfo.IsVACBanned ? 0 : 1),
248+
(isPrime && (playerBypassConfig?.BypassMinimumCS2Level ?? false), Config.MinimumCS2LevelPrime, userInfo.CS2Level),
249+
(!isPrime && (playerBypassConfig?.BypassMinimumCS2Level ?? false), Config.MinimumCS2LevelNonPrime, userInfo.CS2Level),
250+
(isPrime && (playerBypassConfig?.BypassMinimumHours ?? false), Config.MinimumHourPrime, userInfo.CS2Playtime),
251+
(!isPrime && (playerBypassConfig?.BypassMinimumHours ?? false), Config.MinimumHourNonPrime, userInfo.CS2Playtime),
252+
(isPrime && (playerBypassConfig?.BypassMinimumLevel ?? false), Config.MinimumLevelPrime, userInfo.SteamLevel),
253+
(!isPrime && (playerBypassConfig?.BypassMinimumLevel ?? false), Config.MinimumLevelNonPrime, userInfo.SteamLevel),
254+
(playerBypassConfig?.BypassMinimumSteamAccountAge ?? false, Config.MinimumSteamAccountAgeInDays, (DateTime.Now - userInfo.SteamAccountAge).TotalDays),
255+
(Config.BlockPrivateProfile && (playerBypassConfig?.BypassPrivateProfile ?? false), 1, userInfo.IsPrivate ? 0 : 1),
256+
(Config.BlockTradeBanned && (playerBypassConfig?.BypassTradeBanned ?? false), 1, userInfo.IsTradeBanned ? 0 : 1),
257+
(Config.BlockGameBanned && (playerBypassConfig?.BypassGameBanned ?? false), 1, userInfo.IsGameBanned ? 0 : 1),
258+
(!string.IsNullOrEmpty(Config.SteamGroupID) && (playerBypassConfig?.BypassSteamGroupCheck ?? false), 1, userInfo.IsInSteamGroup ? 1 : 0),
259+
(Config.BlockVACBanned && (playerBypassConfig?.BypassVACBanned ?? false), 1, userInfo.IsVACBanned ? 0 : 1),
259260
};
260261

261262
return configChecks.Any(check => check.Item1 && check.Item2 != -1 && check.Item3 < check.Item2);

src/Models/BypassConfigService.cs

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
namespace KitsuneSteamRestrict
44
{
5-
public class BypassConfig
5+
public class PlayerBypassConfig
66
{
7-
public ulong SteamID { get; set; }
87
public bool BypassMinimumCS2Level { get; set; } = false;
98
public bool BypassMinimumHours { get; set; } = false;
109
public bool BypassMinimumLevel { get; set; } = false;
@@ -16,6 +15,29 @@ public class BypassConfig
1615
public bool BypassGameBanned { get; set; } = false;
1716
}
1817

18+
public class BypassConfig
19+
{
20+
private Dictionary<ulong, PlayerBypassConfig> _playerConfigs = new Dictionary<ulong, PlayerBypassConfig>();
21+
22+
public PlayerBypassConfig? GetPlayerConfig(ulong steamID)
23+
{
24+
if (_playerConfigs.TryGetValue(steamID, out var playerConfig))
25+
return playerConfig;
26+
27+
return null;
28+
}
29+
30+
public void AddPlayerConfig(ulong steamID, PlayerBypassConfig playerConfig)
31+
{
32+
_playerConfigs[steamID] = playerConfig;
33+
}
34+
35+
public Dictionary<ulong, PlayerBypassConfig> GetAllPlayerConfigs()
36+
{
37+
return _playerConfigs;
38+
}
39+
}
40+
1941
public class BypassConfigService
2042
{
2143
private readonly string _configFilePath;
@@ -30,13 +52,22 @@ public BypassConfig LoadConfig()
3052
if (File.Exists(_configFilePath))
3153
{
3254
string json = File.ReadAllText(_configFilePath);
33-
return JsonSerializer.Deserialize<BypassConfig>(json)!;
55+
var playerConfigs = JsonSerializer.Deserialize<Dictionary<ulong, PlayerBypassConfig>>(json)!;
56+
var bypassConfig = new BypassConfig();
57+
58+
foreach (var kvp in playerConfigs)
59+
{
60+
bypassConfig.AddPlayerConfig(kvp.Key, kvp.Value);
61+
}
62+
63+
return bypassConfig;
3464
}
3565
else
3666
{
37-
BypassConfig defaultConfig = new BypassConfig
67+
var defaultConfig = new BypassConfig();
68+
69+
defaultConfig.AddPlayerConfig(76561198345583467, new PlayerBypassConfig
3870
{
39-
SteamID = 76561198345583467,
4071
BypassMinimumCS2Level = true,
4172
BypassMinimumHours = false,
4273
BypassMinimumLevel = true,
@@ -46,9 +77,22 @@ public BypassConfig LoadConfig()
4677
BypassVACBanned = true,
4778
BypassSteamGroupCheck = false,
4879
BypassGameBanned = true
49-
};
80+
});
81+
82+
defaultConfig.AddPlayerConfig(76561198132924835, new PlayerBypassConfig
83+
{
84+
BypassMinimumCS2Level = false,
85+
BypassMinimumHours = true,
86+
BypassMinimumLevel = false,
87+
BypassMinimumSteamAccountAge = true,
88+
BypassPrivateProfile = false,
89+
BypassTradeBanned = true,
90+
BypassVACBanned = false,
91+
BypassSteamGroupCheck = true,
92+
BypassGameBanned = false
93+
});
5094

51-
string json = JsonSerializer.Serialize(defaultConfig, new JsonSerializerOptions { WriteIndented = true });
95+
string json = JsonSerializer.Serialize(defaultConfig.GetAllPlayerConfigs(), new JsonSerializerOptions { WriteIndented = true });
5296
File.WriteAllText(_configFilePath, json);
5397

5498
return defaultConfig;

0 commit comments

Comments
 (0)