ntminer 5 年之前
父節點
當前提交
69b2006f7e

+ 2 - 0
src/NTMinerDataSchemas/Core/MinerServer/ClientData.cs

@@ -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; }

+ 3 - 0
src/NTMinerDataSchemas/NTMinerDataSchemas.csproj

@@ -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>

+ 1 - 0
src/NTMinerDataSchemas/packages.config

@@ -1,4 +1,5 @@
 <?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>

+ 1 - 0
src/NTMinerRpcClient/Services/Official/UserService.cs

@@ -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);
                     }
                 }

+ 1 - 0
src/WebApiServer/Controllers/UserController.cs

@@ -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 {

+ 0 - 5
src/WebApiServer/Core/Impl/ClientDataSetBase.cs

@@ -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;
         }