@@ -1,4 +1,5 @@
using LiteDB;
+using Newtonsoft.Json;
using NTMiner.Core.MinerClient;
using System;
@@ -615,6 +616,7 @@ namespace NTMiner.Core.MinerServer {
public string OuterUserId { get; set; }
+ [JsonIgnore]
public string AESPassword { get; set; }
public DateTime AESPasswordOn { get; set; }
@@ -34,6 +34,9 @@
<Reference Include="LiteDB, Version=4.1.4.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27, processorArchitecture=MSIL">
<HintPath>..\..\packages\LiteDB.4.1.4\lib\net40\LiteDB.dll</HintPath>
</Reference>
+ <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
+ </Reference>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="LiteDB" version="4.1.4" targetFramework="net40" />
+ <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
</packages>
@@ -28,6 +28,7 @@ namespace NTMiner.Services.Official {
RpcRoot.SignPostAsync(RpcRoot.OfficialServerHost, RpcRoot.OfficialServerPort, _controllerName, nameof(IUserController.QueryUsers), data: request, callback: (QueryUsersResponse response, Exception e) => {
if (response != null && response.Data != null && response.Data.Count != 0) {
foreach (var user in response.Data) {
+ user.Password = Cryptography.QuickUtil.TextDecrypt(Convert.FromBase64String(user.Password), RpcRoot.RpcUser.Password);
user.PrivateKey = Cryptography.QuickUtil.TextDecrypt(Convert.FromBase64String(user.PrivateKey), RpcRoot.RpcUser.Password);
}
@@ -21,6 +21,7 @@ namespace NTMiner.Controllers {
var datas = WebApiRoot.UserSet.QueryUsers(request, out int total).Select(a => a.Clone()).ToList();
foreach (var data in datas) {
// 不在网络上传输私钥原文,传输的是密文
+ data.Password = Convert.ToBase64String(Cryptography.QuickUtil.TextEncrypt(data.Password, user.Password));
data.PrivateKey = Convert.ToBase64String(Cryptography.QuickUtil.TextEncrypt(data.PrivateKey, user.Password));
return new QueryUsersResponse {
@@ -143,11 +143,6 @@ namespace NTMiner.Core.Impl {
coinSnapshots = VirtualRoot.CreateCoinSnapshots(_isPull, DateTime.Now, list, out onlineCount, out miningCount).ToList();
var results = list.Skip((query.PageIndex - 1) * query.PageSize).Take(query.PageSize).ToList();
- foreach (var item in results) {
- // 去除AESPassword避免在网络上传输
- // TODO:这个操作改变了内存中的数据,因为数据不是复制后返回的,所以应想办法使ClientData模型上不带AESPassword参数
- item.AESPassword = string.Empty;
- }
DoCheckIsOnline(results);
return results;