Skip to content

Commit eea05f7

Browse files
committed
Update HWID Store
1 parent 8010da1 commit eea05f7

File tree

7 files changed

+53
-57
lines changed

7 files changed

+53
-57
lines changed

DatabaseManager.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
using MySql.Data.MySqlClient;
1+
using Google.Protobuf;
2+
using MySql.Data.MySqlClient;
23
using Rocket.Core.Logging;
34
using SDG.Unturned;
45
using Steamworks;
56
using System;
67
using System.Collections.Generic;
78
using System.Linq;
9+
using System.Text.Json;
810

911
namespace PlayerInfoLibrary
1012
{
@@ -278,6 +280,16 @@ private void CheckVersion(ushort version, MySqlCommand command)
278280
"UPDATE `" + TableConfig + "` SET `value` = '5' WHERE `key` = 'version';";
279281
command.ExecuteNonQuery();
280282
}
283+
284+
if(version < 6)
285+
{
286+
updatingVersion = 6;
287+
Logger.LogWarning("Updating Playerinfo DB to version: " + updatingVersion);
288+
command.CommandText = "ALTER TABLE `" + Table + "` MODIFY COLUMN `HWID` json NOT NULL AFTER `IP`;" +
289+
$"UPDATE `{Table}` SET `HWID` = NULL;" +
290+
"UPDATE `" + TableConfig + "` SET `value` = '6' WHERE `key` = 'version';";
291+
command.ExecuteNonQuery();
292+
}
281293
}
282294
catch (MySqlException ex)
283295
{
@@ -597,7 +609,7 @@ private string ParseOption(OptionType optionType)
597609

598610
private PlayerData BuildPlayerData(MySqlDataReader reader)
599611
{
600-
return new PlayerData((CSteamID)reader.GetUInt64("SteamID"), reader.GetString("SteamName"), reader.GetString("CharName"), Parser.getIPFromUInt32(reader.GetUInt32("IP")),reader.GetString("HWID") ,reader.GetInt64("LastLoginGlobal").FromTimeStamp(), reader.GetUInt16("LastServerID"), !reader.IsDBNull("LastServerName") ? reader.GetString("LastServerName") : string.Empty, !reader.IsDBNull("ServerID") ? reader.GetUInt16("ServerID") : (ushort)0, !reader.IsDBNull("LastLoginLocal") ? reader.GetInt64("LastLoginLocal").FromTimeStamp() : (0L).FromTimeStamp(), !reader.IsDBNull("CleanedBuildables") ? reader.GetBoolean("CleanedBuildables") : false, !reader.IsDBNull("CleanedPlayerData") ? reader.GetBoolean("CleanedPlayerData") : false, reader.GetInt32("TotalPlayTime"));
612+
return new PlayerData((CSteamID)reader.GetUInt64("SteamID"), reader.GetString("SteamName"), reader.GetString("CharName"), Parser.getIPFromUInt32(reader.GetUInt32("IP")), JsonSerializer.Deserialize<List<string>>(reader.GetString("HWID")), reader.GetInt64("LastLoginGlobal").FromTimeStamp(), reader.GetUInt16("LastServerID"), !reader.IsDBNull("LastServerName") ? reader.GetString("LastServerName") : string.Empty, !reader.IsDBNull("ServerID") ? reader.GetUInt16("ServerID") : (ushort)0, !reader.IsDBNull("LastLoginLocal") ? reader.GetInt64("LastLoginLocal").FromTimeStamp() : (0L).FromTimeStamp(), !reader.IsDBNull("CleanedBuildables") ? reader.GetBoolean("CleanedBuildables") : false, !reader.IsDBNull("CleanedPlayerData") ? reader.GetBoolean("CleanedPlayerData") : false, reader.GetInt32("TotalPlayTime"));
601613
}
602614

603615
// Cleanup section.
@@ -775,7 +787,7 @@ internal void SaveToDB(PlayerData pdata, bool retry = false)
775787
command.Parameters.AddWithValue("@steamname", pdata.SteamName.Truncate(200));
776788
command.Parameters.AddWithValue("@charname", pdata.CharacterName.Truncate(200));
777789
command.Parameters.AddWithValue("@ip", Parser.getUInt32FromIP(pdata.IP));
778-
command.Parameters.AddWithValue("@hwid", pdata.HWID);
790+
command.Parameters.AddWithValue("@hwid", JsonSerializer.Serialize(pdata.HWID));
779791
command.Parameters.AddWithValue("@instanceid", pdata.ServerID);
780792
command.Parameters.AddWithValue("@lastinstanceid", pdata.LastServerID);
781793
command.Parameters.AddWithValue("@lastloginglobal", pdata.LastLoginGlobal.ToTimeStamp());

Extensions.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
using System;
55
//using SDG.NetTransport;
66
using Rocket.Unturned.Player;
7+
using System.Text;
8+
using System.Collections.Generic;
79

810
namespace PlayerInfoLibrary
911
{
@@ -35,12 +37,17 @@ public static string GetIP(this CSteamID cSteamID)
3537
var IP = player.Player.channel.owner.getIPv4AddressOrZero();
3638
return Parser.getIPFromUInt32(IP);
3739
}
38-
public static string GetHWID(this CSteamID cSteamID)
40+
public static List<string> GetHWID(this CSteamID cSteamID)
3941
{
42+
List<string> hwidList = new List<string>();
4043
var player = UnturnedPlayer.FromCSteamID(cSteamID);
4144
var hwid = player.Player.channel.owner.playerID.GetHwids().GetEnumerator();
42-
hwid.MoveNext();
43-
return string.Join("", hwid.Current);
45+
while (hwid.MoveNext())
46+
{
47+
hwidList.Add(Convert.ToBase64String(hwid.Current));
48+
}
49+
50+
return hwidList;
4451
}
4552

4653
// Returns a Steamworks.CSteamID on out from a string, and returns true if it is a CSteamID.

PlayerData.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Rocket.Core;
33
using Steamworks;
44
using System;
5+
using System.Collections.Generic;
56
using System.Linq;
67

78
namespace PlayerInfoLibrary
@@ -12,7 +13,7 @@ public class PlayerData
1213
public string SteamName { get; internal set; }
1314
public string CharacterName { get; internal set; }
1415
public string IP { get; internal set; }
15-
public string HWID { get; internal set; }
16+
public List<string> HWID { get; internal set; }
1617
public DateTime LastLoginGlobal { get; internal set; }
1718
public int TotalPlayime { get; internal set; }
1819
public ushort LastServerID { get; internal set; }
@@ -70,7 +71,7 @@ internal PlayerData()
7071
SteamID = CSteamID.Nil;
7172
TotalPlayime = 0;
7273
}
73-
internal PlayerData(CSteamID steamID, string steamName, string characterName, string ip,string Hwid, DateTime lastLoginGlobal, ushort lastServerID, string lastServerName, ushort serverID, DateTime lastLoginLocal, bool cleanedBuildables, bool cleanedPlayerData, int totalPlayTime)
74+
internal PlayerData(CSteamID steamID, string steamName, string characterName, string ip, List<string> Hwid, DateTime lastLoginGlobal, ushort lastServerID, string lastServerName, ushort serverID, DateTime lastLoginLocal, bool cleanedBuildables, bool cleanedPlayerData, int totalPlayTime)
7475
{
7576
SteamID = steamID;
7677
SteamName = steamName;

PlayerInfoLib.cs

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using System.Collections.Generic;
99
using Rocket.API.Collections;
1010
using Rocket.API;
11-
using GlobalBan;
1211

1312
namespace PlayerInfoLibrary
1413
{
@@ -24,9 +23,8 @@ protected override void Load()
2423
{
2524
Instance = this;
2625
Database = new DatabaseManager();
27-
U.Events.OnPlayerConnected += Events_OnPlayerConnected;
2826
U.Events.OnPlayerDisconnected += Events_OnPlayerDisconnected;
29-
//U.Events.OnBeforePlayerConnected += Events_OnBeforePlayerConnected;
27+
U.Events.OnBeforePlayerConnected += Events_OnBeforePlayerConnected;
3028
if (Instance.Configuration.Instance.KeepaliveInterval <= 0)
3129
{
3230
Logger.LogWarning("Error: Keep alive config option must be above 0.");
@@ -48,9 +46,8 @@ protected override void Load()
4846

4947
protected override void Unload()
5048
{
51-
U.Events.OnPlayerConnected -= Events_OnPlayerConnected;
5249
U.Events.OnPlayerDisconnected -= Events_OnPlayerDisconnected;
53-
//U.Events.OnBeforePlayerConnected -= Events_OnBeforePlayerConnected;
50+
U.Events.OnBeforePlayerConnected -= Events_OnBeforePlayerConnected;
5451

5552
Database.Unload();
5653
Database = null;
@@ -81,40 +78,6 @@ private void Events_OnBeforePlayerConnected(UnturnedPlayer player)
8178
}
8279
}
8380

84-
private void Events_OnPlayerConnected(UnturnedPlayer player)
85-
{
86-
if (player != null)
87-
{
88-
if (LoginTime.ContainsKey(player.CSteamID))
89-
LoginTime.Remove(player.CSteamID);
90-
LoginTime.Add(player.CSteamID, DateTime.Now);
91-
PlayerData pData = Database.QueryById(player.CSteamID, false);
92-
int totalTime = pData.TotalPlayime;
93-
DateTime loginTime = PlayerInfoLib.LoginTime[player.CSteamID];
94-
pData = new PlayerData(player.CSteamID, player.SteamName, player.CharacterName, player.CSteamID.GetIP(), player.CSteamID.GetHWID(), loginTime, Database.InstanceID, Provider.serverName, Database.InstanceID, loginTime, false, false, totalTime);
95-
Database.SaveToDB(pData);
96-
// Recheck the ip address in the component, the ip isn't always fully set by the time this event is called.
97-
PlayerInfoLibPComponent pc = player.GetComponent<PlayerInfoLibPComponent>();
98-
pc.Start(pData);
99-
}
100-
101-
PlayerInfoLib.ExecuteDependencyCode("GlobalBan", (IRocketPlugin plugin) =>
102-
{
103-
if (GlobalBan.GlobalBan.Instance.State == PluginState.Loaded)
104-
{
105-
if (GlobalBan.GlobalBan.CheckIfBanned(player))
106-
{
107-
if (GlobalBan.GlobalBan.Instance.BannedReason.TryGetValue(player, out string reason))
108-
{
109-
Provider.kick(player.CSteamID, reason);
110-
GlobalBan.GlobalBan.Instance.BannedReason.Remove(player);
111-
112-
}
113-
}
114-
}
115-
});
116-
}
117-
11881
private void Events_OnPlayerDisconnected(UnturnedPlayer player)
11982
{
12083
if (player != null)

PlayerInfoLib.csproj

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,15 @@
3333
<Prefer32Bit>false</Prefer32Bit>
3434
</PropertyGroup>
3535
<ItemGroup>
36-
<Reference Include="Assembly-CSharp">
37-
<HintPath>lib\Assembly-CSharp.dll</HintPath>
38-
<Private>False</Private>
36+
<Reference Include="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
37+
<SpecificVersion>False</SpecificVersion>
38+
<HintPath>D:\Program Files (x86)\Steam\steamapps\common\U3DS\Unturned_Data\Managed\Assembly-CSharp.dll</HintPath>
3939
</Reference>
40-
<Reference Include="BouncyCastle.Crypto, Version=1.8.5.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
41-
<HintPath>packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll</HintPath>
40+
<Reference Include="BouncyCastle.Crypto, Version=1.8.9.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
41+
<HintPath>packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll</HintPath>
4242
</Reference>
4343
<Reference Include="com.rlabrecque.steamworks.net">
44-
<HintPath>lib\com.rlabrecque.steamworks.net.dll</HintPath>
45-
</Reference>
46-
<Reference Include="GlobalBan">
47-
<HintPath>lib\GlobalBan.dll</HintPath>
44+
<HintPath>D:\Program Files (x86)\Steam\steamapps\common\U3DS\Unturned_Data\Managed\com.rlabrecque.steamworks.net.dll</HintPath>
4845
</Reference>
4946
<Reference Include="Google.Protobuf, Version=3.14.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
5047
<HintPath>packages\Google.Protobuf.3.14.0\lib\net45\Google.Protobuf.dll</HintPath>
@@ -102,6 +99,7 @@
10299
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
103100
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
104101
</Reference>
102+
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" />
105103
<Reference Include="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
106104
<Reference Include="System.Xml.Linq" />
107105
<Reference Include="System.Data.DataSetExtensions" />

app.config

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<runtime>
4+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
5+
<dependentAssembly>
6+
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
7+
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
8+
</dependentAssembly>
9+
<dependentAssembly>
10+
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
11+
<bindingRedirect oldVersion="0.0.0.0-1.8.9.0" newVersion="1.8.9.0" />
12+
</dependentAssembly>
13+
</assemblyBinding>
14+
</runtime>
15+
</configuration>

packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="BouncyCastle" version="1.8.5" targetFramework="net48" />
3+
<package id="BouncyCastle" version="1.8.9" targetFramework="net48" />
44
<package id="Google.Protobuf" version="3.14.0" targetFramework="net48" />
55
<package id="K4os.Compression.LZ4" version="1.2.6" targetFramework="net48" />
66
<package id="K4os.Compression.LZ4.Streams" version="1.2.6" targetFramework="net48" />

0 commit comments

Comments
 (0)