Skip to content

Commit cb98e63

Browse files
author
尧杰 曾
committed
Fix bug:remove permisson error when key was expired
1 parent 580ec08 commit cb98e63

File tree

7 files changed

+30
-200
lines changed

7 files changed

+30
-200
lines changed

CDK/CDK.csproj

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@
3636
<HintPath>lib\Assembly-CSharp.dll</HintPath>
3737
<Private>False</Private>
3838
</Reference>
39-
<Reference Include="BouncyCastle.Crypto, Version=1.8.9.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
40-
<HintPath>..\packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll</HintPath>
39+
<Reference Include="BouncyCastle.Crypto, Version=1.9.0.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
40+
<HintPath>..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll</HintPath>
4141
</Reference>
4242
<Reference Include="com.rlabrecque.steamworks.net, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
4343
<SpecificVersion>False</SpecificVersion>
4444
<HintPath>lib\com.rlabrecque.steamworks.net.dll</HintPath>
4545
<Private>False</Private>
4646
</Reference>
47-
<Reference Include="Google.Protobuf, Version=3.20.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
48-
<HintPath>..\packages\Google.Protobuf.3.20.1\lib\net45\Google.Protobuf.dll</HintPath>
47+
<Reference Include="Google.Protobuf, Version=3.21.4.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
48+
<HintPath>..\packages\Google.Protobuf.3.21.4\lib\net45\Google.Protobuf.dll</HintPath>
4949
</Reference>
5050
<Reference Include="K4os.Compression.LZ4, Version=1.2.16.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
5151
<HintPath>..\packages\K4os.Compression.LZ4.1.2.16\lib\net46\K4os.Compression.LZ4.dll</HintPath>
@@ -56,8 +56,8 @@
5656
<Reference Include="K4os.Hash.xxHash, Version=1.0.7.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
5757
<HintPath>..\packages\K4os.Hash.xxHash.1.0.7\lib\net46\K4os.Hash.xxHash.dll</HintPath>
5858
</Reference>
59-
<Reference Include="MySql.Data, Version=8.0.29.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
60-
<HintPath>..\packages\MySql.Data.8.0.29\lib\net48\MySql.Data.dll</HintPath>
59+
<Reference Include="MySql.Data, Version=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
60+
<HintPath>..\packages\MySql.Data.8.0.30\lib\net48\MySql.Data.dll</HintPath>
6161
</Reference>
6262
<Reference Include="Rocket.API, Version=4.9.3.4, Culture=neutral, processorArchitecture=MSIL">
6363
<SpecificVersion>False</SpecificVersion>
@@ -84,8 +84,8 @@
8484
<Reference Include="System.Configuration.Install" />
8585
<Reference Include="System.Core" />
8686
<Reference Include="System.Management" />
87-
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
88-
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
87+
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
88+
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
8989
</Reference>
9090
<Reference Include="System.Numerics" />
9191
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@@ -102,7 +102,7 @@
102102
<Reference Include="System.Net.Http" />
103103
<Reference Include="System.Xml" />
104104
<Reference Include="Ubiety.Dns.Core, Version=2.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
105-
<HintPath>..\packages\MySql.Data.8.0.29\lib\net48\Ubiety.Dns.Core.dll</HintPath>
105+
<HintPath>..\packages\MySql.Data.8.0.30\lib\net48\Ubiety.Dns.Core.dll</HintPath>
106106
</Reference>
107107
<Reference Include="Uconomy">
108108
<HintPath>lib\Uconomy.dll</HintPath>
@@ -118,7 +118,7 @@
118118
<Private>False</Private>
119119
</Reference>
120120
<Reference Include="ZstdNet, Version=1.4.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
121-
<HintPath>..\packages\MySql.Data.8.0.29\lib\net48\ZstdNet.dll</HintPath>
121+
<HintPath>..\packages\MySql.Data.8.0.30\lib\net48\ZstdNet.dll</HintPath>
122122
</Reference>
123123
</ItemGroup>
124124
<ItemGroup>

CDK/CDKCommand.cs

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,6 @@ public class CDKCommand : IRocketCommand
2626

2727
public void Execute(IRocketPlayer caller,string[] args)
2828
{
29-
//if (!Main.Instance.Configuration.Instance.MySQLSupport)
30-
//{
31-
// if (args.Length == 1)
32-
// {
33-
// Main.Instance.CDKRedeem(UnturnedPlayer.FromName(caller.DisplayName), args[0]);
34-
// }
35-
// else if (args.Length == 2 && args[0].ToLower() == "reset")
36-
// {
37-
// if (caller.HasPermission("cdk.reset"))
38-
// {
39-
// if (Main.Instance.ResetKeyCount(args[1]))
40-
// {
41-
// UnturnedChat.Say(caller, Main.Instance.Translate("reset_count"));
42-
// }
43-
// else
44-
// {
45-
// UnturnedChat.Say(caller, Main.Instance.Translate("key_dones't_exist"), UnityEngine.Color.red);
46-
// }
47-
// }
48-
// }
49-
// else
50-
// {
51-
// UnturnedChat.Say(caller, Main.Instance.Translate("invaild_param"), UnityEngine.Color.red);
52-
// }
53-
//}
54-
//else if(Main.Instance.Configuration.Instance.MySQLSupport)
55-
//{
5629
if(args.Length == 1)
5730
{
5831
if (!Main.Instance.Database.IsPurchased(UnturnedPlayer.FromName(caller.DisplayName), args[0]))
@@ -89,7 +62,7 @@ public void Execute(IRocketPlayer caller,string[] args)
8962
}
9063
else
9164
{
92-
UnturnedChat.Say(caller, Main.Instance.Translate("invaild_param"), UnityEngine.Color.red);
65+
UnturnedChat.Say(caller, Main.Instance.Translate("invaild_param",Syntax), UnityEngine.Color.red);
9366
}
9467
}
9568
}

CDK/DatabaseManager.cs

Lines changed: 4 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public RedeemCDKResult RedeemCDK(UnturnedPlayer player, string CDK)
136136
public void CheckValid(UnturnedPlayer player)
137137
{
138138
LogData logData = GetLogData(player.CSteamID,ELogQueryType.ByTime);
139-
if (logData != null)
139+
if (logData != null && logData.GrantPermissionGroup != string.Empty)
140140
{
141141
do
142142
{
@@ -161,7 +161,7 @@ private CDKData BuildCDKData(MySqlDataReader reader)
161161
private LogData BuildLogData(MySqlDataReader reader)
162162
{
163163
//Logger.LogWarning("Start Building LogData");
164-
return new LogData(reader.GetString("CDK"), (CSteamID)reader.GetUInt64("SteamID"), reader.GetDateTime("Redeemed Time"), reader.GetDateTime("ValidUntil"),reader.GetString("GrantPermissionGroup"));
164+
return new LogData(reader.GetString(0), (CSteamID)reader.GetUInt64(1), reader.GetDateTime(2), reader.GetDateTime(3),reader.GetString(4));
165165
}
166166

167167
public CDKData GetCDKData(string cdk)
@@ -214,7 +214,7 @@ public LogData GetLogData(CSteamID steamID,ELogQueryType type,string parameter =
214214
break;
215215
case ELogQueryType.ByTime:
216216
command.Parameters.AddWithValue("@steamid", steamID);
217-
command.CommandText = $"select 1 from `{ Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` where `SteamID` = @steamid and `ValidUntil` < now();";
217+
command.CommandText = $"select * from `{ Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` where `SteamID` = @steamid and `ValidUntil` < now() LIMIT 1;";
218218
break;
219219
}
220220
connection.Open();
@@ -300,74 +300,6 @@ internal void CheckSchema() // intial mysql table
300300
ExecuteQuery(false,
301301
$"CREATE TABLE `{Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` (`CDK` varchar(32) NOT NULL, `SteamID` varchar(32) NOT NULL, `Redeemed Time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `ValidUntil` datetime(6) NOT NULL, `GrantPermissionGroup` VARCHAR(32) NOT NULL DEFAULT '{string.Empty}')");
302302

303-
//if (Main.Instance.Configuration.Instance.MySQLTableVer == 1)
304-
//{
305-
// Logger.Log("Updating database table version to 2.");
306-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` ADD `ValidUntil` timestamp;");
307-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` ADD `EnableRenew` int(1) DEFAULT '0';");
308-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` ADD `ValidUntil` timestamp DEFAULT NULL;");
309-
// Main.Instance.Configuration.Instance.MySQLTableVer = 2;
310-
// Main.Instance.Configuration.Save();
311-
//}
312-
//if (Main.Instance.Configuration.Instance.MySQLTableVer == 2)
313-
//{
314-
// Logger.Log("Updating database table version to 3.");
315-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` ADD `Owner` varchar(32);");
316-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` ADD `Reputation` int(32) AFTER `Experience`;");
317-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Items` varchar(32);");
318-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `GrantPermissionGroup` varchar(32);");
319-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Vehicle` int(16);");
320-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Experience` int(32);");
321-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Money` decimal(15,2);");
322-
// ExecuteQuery(false, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `MaxRedeem` int(32);");
323-
// Main.Instance.Configuration.Instance.MySQLTableVer = 3;
324-
// Main.Instance.Configuration.Save();
325-
//}
326-
//if (Main.Instance.Configuration.Instance.MySQLTableVer == 3)
327-
//{
328-
// Logger.Log("Updating database table version to 4");
329-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `EnableRenew` BOOLEAN DEFALT '0'");
330-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` ADD `Amount` varchar(32) AFTER `Items`");
331-
// Main.Instance.Configuration.Instance.MySQLTableVer = 4;
332-
// Main.Instance.Configuration.Save();
333-
//}
334-
//if (Main.Instance.Configuration.Instance.MySQLTableVer == 4)
335-
//{
336-
// Logger.Log("Updating database table version to 5");
337-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` DROP PRIMARY KEY ");
338-
// Main.Instance.Configuration.Instance.MySQLTableVer = 5;
339-
// Main.Instance.Configuration.Save();
340-
//}
341-
//if(Main.Instance.Configuration.Instance.MySQLTableVer == 5)
342-
//{
343-
// Logger.Log("Updating database table version to 6");
344-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseRedeemLogTableName}` ADD `GrantPermissionGroup` VARCHAR(32)");
345-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `EnableRenew` BOOLEAN NOT NULL DEFAULT '0'");
346-
// Main.Instance.Configuration.Instance.MySQLTableVer = 6;
347-
// Main.Instance.Configuration.Save();
348-
//}
349-
//if(Main.Instance.Configuration.Instance.MySQLTableVer == 6)
350-
//{
351-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `EnableRenew` BOOLEAN NOT NULL DEFAULT '0'");
352-
// Main.Instance.Configuration.Instance.MySQLTableVer = 7;
353-
// Main.Instance.Configuration.Save();
354-
//}
355-
//if(Main.Instance.Configuration.Instance.MySQLTableVer == 6)
356-
//{
357-
// Logger.Log("Updating database table version to 7");
358-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Items` VARCHAR(32) NOT NULL DEFAULT '';") ;
359-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Amount` VARCHAR(32) NOT NULL DEFAULT '';");
360-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Vehicle` INT NOT NULL DEFAULT '0';");
361-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Experience` INT NOT NULL DEFAULT '0';");
362-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Money` DECIMAL(15,2) NOT NULL DEFAULT '0';");
363-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `GrantPermissionGroup` VARCHAR(32) NOT NULL DEFAULT '';");
364-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `MaxRedeem` INT NOT NULL DEFAULT '1';");
365-
// //ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `ValidUntil` DATETIME NOT NULL DEFAULT '{DateTime.MaxValue}';");
366-
// ExecuteQuery(true, $"ALTER TABLE `{Main.Instance.Configuration.Instance.DatabaseCDKTableName}` MODIFY `Owner` VARCHAR(32) NOT NULL DEFAULT '';");
367-
// Main.Instance.Configuration.Instance.MySQLTableVer = 7;
368-
// Main.Instance.Configuration.Save();
369-
//}
370-
371303
}
372304

373305
private MySqlConnection CreateConnection()
@@ -429,70 +361,4 @@ public object ExecuteQuery(bool isScalar, string query)
429361
return result;
430362
}
431363
}
432-
}
433-
434-
435-
//CSteamID init = CSteamID.Nil;
436-
//if(ulong.TryParse(reader.GetString("Owner"),out ulong SteamID))
437-
//{
438-
// init = new CSteamID(SteamID);
439-
// //reader.GetValue()
440-
//}
441-
//Logger.LogWarning("Start Building CDKData");
442-
//return new CDKData(reader.GetString("CDK"), reader.GetString("Items"), reader.GetString("Amount"), reader.GetUInt16("Vehicle"), reader.GetUInt16("Experience"), reader.GetDecimal("Money"), reader.GetInt32("Reputation"), reader.GetString("GrantPermissionGroup"), reader.GetInt32("RedeemedTimes"), reader.GetInt32("MaxRedeem"),reader.GetDateTime("ValidUntil"),init, reader.GetBoolean("EnableRenew"));
443-
//var CDK = reader.GetValue(0);
444-
445-
////string cdk_v = string.Empty;
446-
//string items_v = string.Empty;
447-
//string amount_v = string.Empty;
448-
//decimal? money_v = null;
449-
//ushort? vehicle_v = null;
450-
//ushort? exp_v = null;
451-
//int? reputation_v = null;
452-
//string permissionstring = string.Empty;
453-
//int? maxredeem_v = null;
454-
//CSteamID cSteam = CSteamID.Nil;
455-
////int redeemedtimes_v =0
456-
//DateTime validuntil_v = DateTime.MaxValue;
457-
//if (!Convert.IsDBNull(Items))
458-
//{
459-
// items_v = Convert.ToString(Items);
460-
//}
461-
//if (!Convert.IsDBNull(Amount))
462-
//{
463-
// amount_v = Convert.ToString(Amount);
464-
//}
465-
//if (!Convert.IsDBNull(Experience))
466-
//{
467-
// exp_v = Convert.ToUInt16(Experience);
468-
//}
469-
//if (!Convert.IsDBNull(Reputation))
470-
//{
471-
// reputation_v = Convert.ToInt32(Reputation);
472-
//}
473-
//if (!Convert.IsDBNull(Vehicle))
474-
//{
475-
// vehicle_v = Convert.ToUInt16(Vehicle);
476-
//}
477-
//if (!Convert.IsDBNull(Money))
478-
//{
479-
// money_v = Convert.ToDecimal(Money);
480-
//}
481-
//if (!Convert.IsDBNull(GrantPermissionGroup))
482-
//{
483-
// permissionstring = Convert.ToString(GrantPermissionGroup);
484-
//}
485-
//if (!Convert.IsDBNull(MaxRedeem))
486-
//{
487-
// maxredeem_v = Convert.ToInt32(MaxRedeem);
488-
//}
489-
//if (!Convert.IsDBNull(ValidUntil))
490-
//{
491-
// validuntil_v = Convert.ToDateTime(ValidUntil);
492-
//}
493-
//if (!Convert.IsDBNull(Owner))
494-
//{
495-
// cSteam = new CSteamID(Convert.ToUInt64(Owner));
496-
//}
497-
498-
//return new CDKData(reader.GetString("CDK"), items_v, amount_v, vehicle_v, exp_v, money_v, reputation_v, permissionstring, reader.GetInt32("RedeemedTimes"), maxredeem_v, validuntil_v, cSteam, reader.GetBoolean("EnableRenew"));
364+
}

CDK/Main.cs

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,9 @@ public class Main : RocketPlugin<Config>
2525
protected override void Load()
2626
{
2727
Instance = this;
28-
//if(!Configuration.Instance.MySQLSupport)
29-
//{
30-
// DirectoryInfo info = new DirectoryInfo(Assembly.Location);
31-
// if (!File.Exists(info.Parent + "\\CDK\\Redeem.log"))
32-
// {
33-
// File.CreateText(info.Parent + "\\CDK\\Redeem.log");
34-
// }
35-
//}
36-
//else
37-
//{
28+
3829
Database = new DatabaseManager();
3930
U.Events.OnPlayerConnected += PlayerConnect;
40-
//}
41-
4231
Rocket.Core.Logging.Logger.Log("CDK Plugin loaded");
4332
}
4433

@@ -354,17 +343,14 @@ private void PlayerConnect(UnturnedPlayer player)
354343
{"permission_duplicate_entry","You already in permission group:{0}." },
355344
{"permission_granted","You are added permission group: {0}" },
356345
{"permission_grant_error","Failed to add permission group" },
357-
//{"reset_count","reset key {0}'s maxcount!" },
358346
{"uconomy_gain","You got {0} {1}" },
359347
{"error","error!" },
360-
//{"cdk_created","You created CDK: {0}" },
361-
//{"create_cdk_exist","This CDK already created! " },
362-
//{"cdk_create_failure","Failed to create cdk.please check command syntax!" },
363348
{"invaild_parameter","out of patamter! correct syntax:{0}"},
364349
{"key_renewed","Your key has been renewed!" },
365350
{"key_expired","Your key has been expired:{0}" },
366351
{"already_purchased","You already purchased this permission group" },
367-
{"invaild_param",""}
352+
{"invaild_param","Wrong usage.usage:{0}"},
353+
{"player_not_match","This CDK not belong to you!" }
368354
};
369355
}
370356
}

CDK/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
3333
//通过使用 "*",如下所示:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("3.0.0.0")]
36-
[assembly: AssemblyFileVersion("3.0.0.0")]
35+
[assembly: AssemblyVersion("3.1.0.0")]
36+
[assembly: AssemblyFileVersion("3.1.0.0")]

0 commit comments

Comments
 (0)