123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776 |
- using LiteDB;
- using Newtonsoft.Json;
- using NTMiner.Gpus;
- using NTMiner.Report;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- namespace NTMiner.Core.MinerServer {
- public class ClientData : SpeedDto, IClientData {
- private static readonly Dictionary<string, PropertyInfo> _reflectionUpdateProperties = new Dictionary<string, PropertyInfo>();
- public static bool TryGetReflectionUpdateProperty(string propertyName, out PropertyInfo propertyInfo) {
- return _reflectionUpdateProperties.TryGetValue(propertyName, out propertyInfo);
- }
- static ClientData() {
- Type type = typeof(ClientData);
- // 这算是一个安全措施,因为propertyName是来自客户端传入的,所以需要白名单。
- HashSet<string> propertyNames = new HashSet<string> {
- nameof(WorkerName),
- nameof(GroupId),
- nameof(WorkId),
- nameof(WindowsLoginName),
- nameof(WindowsPassword)
- };
- foreach (var propertyName in propertyNames) {
- _reflectionUpdateProperties.Add(propertyName, type.GetProperty(propertyName));
- }
- }
- public ClientData() : base() {
- }
- public static ClientData Create(IMinerData data) {
- return new ClientData() {
- #region
- Id = data.Id,
- CpuId = data.CpuId,
- ClientId = data.ClientId,
- MACAddress = data.MACAddress,
- LocalIp = data.LocalIp,
- MinerIp = data.MinerIp,
- MinerName = data.MinerName,
- WorkerName = data.WorkerName,
- CreatedOn = data.CreatedOn,
- GroupId = data.GroupId,
- WorkId = data.WorkId,
- WindowsLoginName = data.WindowsLoginName,
- WindowsPassword = data.WindowsPassword,
- AESPassword = data.AESPassword,
- AESPasswordOn = data.AESPasswordOn,
- LoginName = data.LoginName,
- IsOuterUserEnabled = data.IsOuterUserEnabled,
- OuterUserId = data.OuterUserId,
- ReportOuterUserId = data.OuterUserId,
- MineContextId = Guid.Empty,
- DiskSpaceMb = 0,
- MineWorkId = Guid.Empty,
- MineWorkName = string.Empty,
- IsAutoBoot = false,
- IsAutoStart = false,
- AutoStartDelaySeconds = 15,
- IsAutoRestartKernel = false,
- AutoRestartKernelTimes = 10,
- IsNoShareRestartKernel = false,
- NoShareRestartKernelMinutes = 0,
- IsNoShareRestartComputer = false,
- NoShareRestartComputerMinutes = 0,
- IsPeriodicRestartKernel = false,
- PeriodicRestartKernelHours = 0,
- IsPeriodicRestartComputer = false,
- PeriodicRestartComputerHours = 0,
- PeriodicRestartKernelMinutes = 10,
- PeriodicRestartComputerMinutes = 10,
- IsAutoStartByCpu = false,
- IsAutoStopByCpu = false,
- CpuGETemperatureSeconds = 60,
- CpuLETemperatureSeconds = 60,
- CpuStartTemperature = 40,
- CpuStopTemperature = 65,
- CpuPerformance = 0,
- CpuTemperature = 0,
- IsRaiseHighCpuEvent = false,
- HighCpuPercent = 80,
- HighCpuSeconds = 10,
- GpuDriver = string.Empty,
- GpuType = GpuType.Empty,
- OSName = string.Empty,
- OSVirtualMemoryMb = 0,
- GpuInfo = string.Empty,
- Version = string.Empty,
- IsMining = false,
- BootOn = DateTime.MinValue,
- MineStartedOn = DateTime.MinValue,
- MinerActiveOn = DateTime.Now,
- MainCoinCode = string.Empty,
- MainCoinTotalShare = 0,
- MainCoinRejectShare = 0,
- MainCoinSpeed = 0,
- MainCoinPool = string.Empty,
- MainCoinWallet = string.Empty,
- Kernel = string.Empty,
- IsDualCoinEnabled = false,
- DualCoinPool = string.Empty,
- DualCoinWallet = string.Empty,
- DualCoinCode = string.Empty,
- DualCoinTotalShare = 0,
- DualCoinRejectShare = 0,
- DualCoinSpeed = 0,
- KernelCommandLine = string.Empty,
- MainCoinPoolDelay = string.Empty,
- DualCoinPoolDelay = string.Empty,
- DiskSpace = string.Empty,
- IsFoundOneGpuShare = false,
- IsRejectOneGpuShare = false,
- IsGotOneIncorrectGpuShare = false,
- KernelSelfRestartCount = 0,
- TotalPhysicalMemoryMb = 0,
- LocalServerMessageTimestamp = Timestamp.UnixBaseTime,
- NetActiveOn = DateTime.MinValue,
- IsOnline = false,
- IsAutoDisableWindowsFirewall = true,
- IsDisableAntiSpyware = true,
- IsDisableUAC = true,
- IsDisableWAU = true,
- MainCoinSpeedOn = DateTime.MinValue,
- DualCoinSpeedOn = DateTime.MinValue,
- GpuTable = new GpuSpeedData[0],
- DualCoinPoolDelayNumber = 0,
- MainCoinPoolDelayNumber = 0,
- MainCoinRejectPercent = 0,
- DualCoinRejectPercent = 0
- #endregion
- };
- }
- public static ClientData Clone(ClientData data) {
- return new ClientData() {
- #region
- Id = data.Id,
- CpuId = data.CpuId,
- DiskSpaceMb = data.DiskSpaceMb,
- MineContextId = data.MineContextId,
- MinerName = data.MinerName,
- MinerIp = data.MinerIp,
- CreatedOn = data.CreatedOn,
- MinerActiveOn = data.MinerActiveOn,
- GroupId = data.GroupId,
- WorkId = data.WorkId,
- WindowsLoginName = data.WindowsLoginName,
- WindowsPassword = data.WindowsPassword,
- MACAddress = data.MACAddress,
- LocalIp = data.LocalIp,
- ClientId = data.ClientId,
- IsAutoBoot = data.IsAutoBoot,
- IsAutoStart = data.IsAutoStart,
- AutoStartDelaySeconds = data.AutoStartDelaySeconds,
- IsAutoRestartKernel = data.IsAutoRestartKernel,
- AutoRestartKernelTimes = data.AutoRestartKernelTimes,
- IsNoShareRestartKernel = data.IsNoShareRestartKernel,
- NoShareRestartKernelMinutes = data.NoShareRestartKernelMinutes,
- IsNoShareRestartComputer = data.IsNoShareRestartComputer,
- NoShareRestartComputerMinutes = data.NoShareRestartComputerMinutes,
- IsPeriodicRestartKernel = data.IsPeriodicRestartKernel,
- PeriodicRestartKernelHours = data.PeriodicRestartKernelHours,
- IsPeriodicRestartComputer = data.IsPeriodicRestartComputer,
- PeriodicRestartComputerHours = data.PeriodicRestartComputerHours,
- PeriodicRestartComputerMinutes = data.PeriodicRestartComputerMinutes,
- PeriodicRestartKernelMinutes = data.PeriodicRestartKernelMinutes,
- IsAutoStopByCpu = data.IsAutoStopByCpu,
- IsAutoStartByCpu = data.IsAutoStartByCpu,
- CpuStopTemperature = data.CpuStopTemperature,
- CpuStartTemperature = data.CpuStartTemperature,
- CpuLETemperatureSeconds = data.CpuLETemperatureSeconds,
- CpuGETemperatureSeconds = data.CpuGETemperatureSeconds,
- CpuTemperature = data.CpuTemperature,
- CpuPerformance = data.CpuPerformance,
- IsRaiseHighCpuEvent = data.IsRaiseHighCpuEvent,
- HighCpuPercent = data.HighCpuPercent,
- HighCpuSeconds = data.HighCpuSeconds,
- GpuDriver = data.GpuDriver,
- GpuType = data.GpuType,
- OSName = data.OSName,
- OSVirtualMemoryMb = data.OSVirtualMemoryMb,
- TotalPhysicalMemoryMb = data.TotalPhysicalMemoryMb,
- GpuInfo = data.GpuInfo,
- Version = data.Version,
- IsMining = data.IsMining,
- BootOn = data.BootOn,
- MineStartedOn = data.MineStartedOn,
- MainCoinCode = data.MainCoinCode,
- MainCoinTotalShare = data.MainCoinTotalShare,
- MainCoinRejectShare = data.MainCoinRejectShare,
- MainCoinSpeed = data.MainCoinSpeed,
- MainCoinPool = data.MainCoinPool,
- MainCoinWallet = data.MainCoinWallet,
- Kernel = data.Kernel,
- IsDualCoinEnabled = data.IsDualCoinEnabled,
- DualCoinPool = data.DualCoinPool,
- DualCoinWallet = data.DualCoinWallet,
- DualCoinCode = data.DualCoinCode,
- DualCoinTotalShare = data.DualCoinTotalShare,
- DualCoinRejectShare = data.DualCoinRejectShare,
- DualCoinSpeed = data.DualCoinSpeed,
- KernelCommandLine = data.KernelCommandLine,
- GpuTable = data.GpuTable,
- MineWorkId = data.MineWorkId,
- MineWorkName = data.MineWorkName,
- WorkerName = data.WorkerName,
- DiskSpace = data.DiskSpace,
- MainCoinPoolDelay = data.MainCoinPoolDelay,
- DualCoinPoolDelay = data.DualCoinPoolDelay,
- IsFoundOneGpuShare = data.IsFoundOneGpuShare,
- IsRejectOneGpuShare = data.IsRejectOneGpuShare,
- IsGotOneIncorrectGpuShare = data.IsGotOneIncorrectGpuShare,
- KernelSelfRestartCount = data.KernelSelfRestartCount,
- LocalServerMessageTimestamp = data.LocalServerMessageTimestamp,
- LoginName = data.LoginName,
- IsOuterUserEnabled = data.IsOuterUserEnabled,
- OuterUserId = data.OuterUserId,
- ReportOuterUserId = data.ReportOuterUserId,
- NetActiveOn = data.NetActiveOn,
- IsOnline = data.IsOnline,
- IsDisableWAU = data.IsDisableWAU,
- IsDisableUAC = data.IsDisableUAC,
- AESPassword = data.AESPassword,
- AESPasswordOn = data.AESPasswordOn,
- IsDisableAntiSpyware = data.IsDisableAntiSpyware,
- IsAutoDisableWindowsFirewall = data.IsAutoDisableWindowsFirewall,
- MainCoinSpeedOn = data.MainCoinSpeedOn,
- DualCoinSpeedOn = data.DualCoinSpeedOn,
- DualCoinRejectPercent = data.DualCoinRejectPercent,
- MainCoinRejectPercent = data.MainCoinRejectPercent,
- MainCoinPoolDelayNumber = data.MainCoinPoolDelayNumber,
- DualCoinPoolDelayNumber = data.DualCoinPoolDelayNumber
- #endregion
- };
- }
- public static ClientData Create(ReportState state, string minerIp) {
- return new ClientData {
- Id = ObjectId.NewObjectId().ToString(),
- ClientId = state.ClientId,
- IsMining = state.IsMining,
- CreatedOn = DateTime.Now,
- MinerActiveOn = DateTime.Now,
- MinerIp = minerIp
- };
- }
- /// <summary>
- /// 从给定的speedData中提取出主币矿池延时,辅币矿池延时,主币拒绝率,辅币拒绝率。
- /// </summary>
- private static void Extract(
- ISpeedDto speedDto,
- out int mainCoinPoolDelayNumber,
- out int dualCoinPoolDelayNumber,
- out double mainCoinRejectPercent,
- out double dualCoinRejectPercent,
- out int diskSpaceMb) {
- #region
- mainCoinPoolDelayNumber = 0;
- dualCoinPoolDelayNumber = 0;
- mainCoinRejectPercent = 0.0;
- dualCoinRejectPercent = 0.0;
- if (!string.IsNullOrEmpty(speedDto.MainCoinPoolDelay)) {
- string text = speedDto.MainCoinPoolDelay.Trim();
- int count = 0;
- for (int i = 0; i < text.Length; i++) {
- if (!char.IsNumber(text[i])) {
- count = i;
- break;
- }
- }
- if (count != 0) {
- mainCoinPoolDelayNumber = int.Parse(text.Substring(0, count));
- }
- }
- if (!string.IsNullOrEmpty(speedDto.DualCoinPoolDelay)) {
- string text = speedDto.DualCoinPoolDelay.Trim();
- int count = 0;
- for (int i = 0; i < text.Length; i++) {
- if (!char.IsNumber(text[i])) {
- count = i;
- break;
- }
- }
- if (count != 0) {
- dualCoinPoolDelayNumber = int.Parse(text.Substring(0, count));
- }
- }
- if (speedDto.MainCoinTotalShare != 0) {
- mainCoinRejectPercent = (speedDto.MainCoinRejectShare * 100.0) / speedDto.MainCoinTotalShare;
- }
- if (speedDto.DualCoinTotalShare != 0) {
- dualCoinRejectPercent = (speedDto.DualCoinRejectShare * 100.0) / speedDto.DualCoinTotalShare;
- }
- diskSpaceMb = GetMinDiskSpaceMb(speedDto.DiskSpace);
- #endregion
- }
- private static int GetMinDiskSpaceMb(string diskSpace) {
- // C:\21.4 Gb;D:\9.2 Gb;E:\27.1 Gb
- if (string.IsNullOrEmpty(diskSpace)) {
- return 0;
- }
- string[] parts = diskSpace.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
- List<int> list = new List<int>();
- foreach (string part in parts) {
- if (char.IsDigit(part[0])) {
- if (double.TryParse(part.Substring(0, part.IndexOf(' ')), out double value)) {
- list.Add((int)(value * NTKeyword.IntK));
- }
- }
- }
- if (list.Count == 0) {
- return 0;
- }
- return list.Min();
- }
- public static ClientData Create(ISpeedDto speedDto, string minerIp) {
- Extract(
- speedDto,
- out int mainCoinPoolDelayNumber,
- out int dualCoinPoolDelayNumber,
- out double mainCoinRejectPercent,
- out double dualCoinRejectPercent,
- out int diskSpaceMb);
- return new ClientData() {
- #region
- Id = ObjectId.NewObjectId().ToString(),
- MineContextId = speedDto.MineContextId,
- MinerName = speedDto.MinerName,
- CpuId = speedDto.CpuId,
- MinerIp = minerIp,
- CreatedOn = DateTime.Now,
- MinerActiveOn = DateTime.Now,
- GroupId = Guid.Empty,
- WorkId = Guid.Empty,// 这是服务端指定的作业,不受客户端的影响
- WindowsLoginName = string.Empty,
- WindowsPassword = string.Empty,
- MACAddress = speedDto.MACAddress,
- LocalIp = speedDto.LocalIp,
- ClientId = speedDto.ClientId,
- IsAutoBoot = speedDto.IsAutoBoot,
- IsAutoStart = speedDto.IsAutoStart,
- AutoStartDelaySeconds = speedDto.AutoStartDelaySeconds,
- IsAutoRestartKernel = speedDto.IsAutoRestartKernel,
- AutoRestartKernelTimes = speedDto.AutoRestartKernelTimes,
- IsNoShareRestartKernel = speedDto.IsNoShareRestartKernel,
- NoShareRestartKernelMinutes = speedDto.NoShareRestartKernelMinutes,
- IsNoShareRestartComputer = speedDto.IsNoShareRestartComputer,
- NoShareRestartComputerMinutes = speedDto.NoShareRestartComputerMinutes,
- IsPeriodicRestartKernel = speedDto.IsPeriodicRestartKernel,
- PeriodicRestartKernelHours = speedDto.PeriodicRestartKernelHours,
- IsPeriodicRestartComputer = speedDto.IsPeriodicRestartComputer,
- PeriodicRestartComputerHours = speedDto.PeriodicRestartComputerHours,
- PeriodicRestartComputerMinutes = speedDto.PeriodicRestartComputerMinutes,
- PeriodicRestartKernelMinutes = speedDto.PeriodicRestartKernelMinutes,
- IsAutoStopByCpu = speedDto.IsAutoStopByCpu,
- IsAutoStartByCpu = speedDto.IsAutoStartByCpu,
- CpuStopTemperature = speedDto.CpuStopTemperature,
- CpuStartTemperature = speedDto.CpuStartTemperature,
- CpuLETemperatureSeconds = speedDto.CpuLETemperatureSeconds,
- CpuGETemperatureSeconds = speedDto.CpuGETemperatureSeconds,
- CpuTemperature = speedDto.CpuTemperature,
- CpuPerformance = speedDto.CpuPerformance,
- IsRaiseHighCpuEvent = speedDto.IsRaiseHighCpuEvent,
- HighCpuPercent = speedDto.HighCpuPercent,
- HighCpuSeconds = speedDto.HighCpuSeconds,
- GpuDriver = speedDto.GpuDriver,
- GpuType = speedDto.GpuType,
- OSName = speedDto.OSName,
- OSVirtualMemoryMb = speedDto.OSVirtualMemoryMb,
- TotalPhysicalMemoryMb = speedDto.TotalPhysicalMemoryMb,
- GpuInfo = speedDto.GpuInfo,
- Version = speedDto.Version,
- IsMining = speedDto.IsMining,
- BootOn = speedDto.BootOn,
- MineStartedOn = speedDto.MineStartedOn,
- MainCoinCode = speedDto.MainCoinCode,
- MainCoinTotalShare = speedDto.MainCoinTotalShare,
- MainCoinRejectShare = speedDto.MainCoinRejectShare,
- MainCoinSpeed = speedDto.MainCoinSpeed,
- MainCoinPool = speedDto.MainCoinPool,
- MainCoinWallet = speedDto.MainCoinWallet,
- Kernel = speedDto.Kernel,
- IsDualCoinEnabled = speedDto.IsDualCoinEnabled,
- DualCoinPool = speedDto.DualCoinPool,
- DualCoinWallet = speedDto.DualCoinWallet,
- DualCoinCode = speedDto.DualCoinCode,
- DualCoinTotalShare = speedDto.DualCoinTotalShare,
- DualCoinRejectShare = speedDto.DualCoinRejectShare,
- DualCoinSpeed = speedDto.DualCoinSpeed,
- KernelCommandLine = speedDto.KernelCommandLine,
- MainCoinSpeedOn = speedDto.MainCoinSpeedOn,
- DualCoinSpeedOn = speedDto.DualCoinSpeedOn,
- GpuTable = speedDto.GpuTable,
- MineWorkId = speedDto.MineWorkId,
- MineWorkName = speedDto.MineWorkName,
- DiskSpace = speedDto.DiskSpace,
- MainCoinPoolDelay = speedDto.MainCoinPoolDelay,
- DualCoinPoolDelay = speedDto.DualCoinPoolDelay,
- IsFoundOneGpuShare = speedDto.IsFoundOneGpuShare,
- IsRejectOneGpuShare = speedDto.IsRejectOneGpuShare,
- IsGotOneIncorrectGpuShare = speedDto.IsGotOneIncorrectGpuShare,
- KernelSelfRestartCount = speedDto.KernelSelfRestartCount - 1,// 需要减1
- LocalServerMessageTimestamp = speedDto.LocalServerMessageTimestamp,
- AESPassword = string.Empty,
- AESPasswordOn = DateTime.MinValue,
- IsAutoDisableWindowsFirewall = speedDto.IsAutoDisableWindowsFirewall,
- IsDisableAntiSpyware = speedDto.IsDisableAntiSpyware,
- IsDisableUAC = speedDto.IsDisableUAC,
- IsDisableWAU = speedDto.IsDisableWAU,
- IsOnline = false,
- NetActiveOn = DateTime.MinValue,
- LoginName = string.Empty,
- IsOuterUserEnabled = speedDto.IsOuterUserEnabled,
- OuterUserId = string.Empty,
- ReportOuterUserId = speedDto.ReportOuterUserId,
- WorkerName = string.Empty,
- DualCoinPoolDelayNumber = dualCoinPoolDelayNumber,
- MainCoinPoolDelayNumber = mainCoinPoolDelayNumber,
- MainCoinRejectPercent = mainCoinRejectPercent,
- DualCoinRejectPercent = dualCoinRejectPercent,
- DiskSpaceMb = diskSpaceMb
- #endregion
- };
- }
- public void Update(MinerSign minerSign, out bool isChanged) {
- #region
- this.LoginName = minerSign.LoginName;
- isChanged = false;
- if (!isChanged) {
- isChanged = this.ClientId != minerSign.ClientId;
- }
- this.ClientId = minerSign.ClientId;
- if (!isChanged) {
- isChanged = this.OuterUserId != minerSign.OuterUserId;
- }
- this.OuterUserId = minerSign.OuterUserId;
- if (!isChanged) {
- isChanged = this.AESPassword != minerSign.AESPassword;
- }
- this.AESPassword = minerSign.AESPassword;
- if (!isChanged) {
- isChanged = this.AESPasswordOn != minerSign.AESPasswordOn;
- }
- this.AESPasswordOn = minerSign.AESPasswordOn;
- #endregion
- }
- public SpeedData ToSpeedData() {
- return new SpeedData {
- #region
- SpeedOn = this.MinerActiveOn,
- AutoRestartKernelTimes = this.AutoRestartKernelTimes,
- AutoStartDelaySeconds = this.AutoStartDelaySeconds,
- BootOn = this.BootOn,
- CpuId = this.CpuId,
- ClientId = this.ClientId,
- CpuGETemperatureSeconds = this.CpuGETemperatureSeconds,
- CpuLETemperatureSeconds = this.CpuLETemperatureSeconds,
- CpuPerformance = this.CpuPerformance,
- CpuStartTemperature = this.CpuStartTemperature,
- CpuStopTemperature = this.CpuStopTemperature,
- CpuTemperature = this.CpuTemperature,
- DiskSpace = this.DiskSpace,
- DualCoinCode = this.DualCoinCode,
- DualCoinPool = this.DualCoinPool,
- DualCoinPoolDelay = this.DualCoinPoolDelay,
- DualCoinRejectShare = this.DualCoinRejectShare,
- DualCoinSpeed = this.DualCoinSpeed,
- DualCoinSpeedOn = this.DualCoinSpeedOn,
- DualCoinTotalShare = this.DualCoinTotalShare,
- DualCoinWallet = this.DualCoinWallet,
- GpuDriver = this.GpuDriver,
- GpuInfo = this.GpuInfo,
- GpuTable = this.GpuTable,
- GpuType = this.GpuType,
- HighCpuPercent = this.HighCpuPercent,
- HighCpuSeconds = this.HighCpuSeconds,
- IsAutoBoot = this.IsAutoBoot,
- IsAutoDisableWindowsFirewall = this.IsAutoDisableWindowsFirewall,
- IsAutoRestartKernel = this.IsAutoRestartKernel,
- IsAutoStart = this.IsAutoStart,
- IsAutoStartByCpu = this.IsAutoStartByCpu,
- IsAutoStopByCpu = this.IsAutoStopByCpu,
- IsDisableAntiSpyware = this.IsDisableAntiSpyware,
- IsDisableUAC = this.IsDisableUAC,
- IsDisableWAU = this.IsDisableWAU,
- IsDualCoinEnabled = this.IsDualCoinEnabled,
- IsFoundOneGpuShare = this.IsFoundOneGpuShare,
- IsGotOneIncorrectGpuShare = this.IsGotOneIncorrectGpuShare,
- IsMining = this.IsMining,
- IsNoShareRestartComputer = this.IsNoShareRestartComputer,
- IsNoShareRestartKernel = this.IsNoShareRestartKernel,
- IsOuterUserEnabled = this.IsOuterUserEnabled,
- ReportOuterUserId = this.ReportOuterUserId,
- IsPeriodicRestartComputer = this.IsPeriodicRestartComputer,
- IsPeriodicRestartKernel = this.IsPeriodicRestartKernel,
- IsRaiseHighCpuEvent = this.IsRaiseHighCpuEvent,
- IsRejectOneGpuShare = this.IsRejectOneGpuShare,
- Kernel = this.Kernel,
- KernelCommandLine = this.KernelCommandLine,
- KernelSelfRestartCount = this.KernelSelfRestartCount,
- LocalIp = this.LocalIp,
- LocalServerMessageTimestamp = this.LocalServerMessageTimestamp,
- MACAddress = this.MACAddress,
- MainCoinCode = this.MainCoinCode,
- MainCoinPool = this.MainCoinPool,
- MainCoinPoolDelay = this.MainCoinPoolDelay,
- MainCoinRejectShare = this.MainCoinRejectShare,
- MainCoinSpeed = this.MainCoinSpeed,
- MainCoinSpeedOn = this.MainCoinSpeedOn,
- MainCoinTotalShare = this.MainCoinTotalShare,
- MainCoinWallet = this.MainCoinWallet,
- MineContextId = this.MineContextId,
- MinerIp = this.MinerIp,
- MinerName = this.MinerName,
- MineStartedOn = this.MineStartedOn,
- MineWorkId = this.MineWorkId,
- MineWorkName = this.MineWorkName,
- NoShareRestartComputerMinutes = this.NoShareRestartComputerMinutes,
- NoShareRestartKernelMinutes = this.NoShareRestartKernelMinutes,
- OSName = this.OSName,
- OSVirtualMemoryMb = this.OSVirtualMemoryMb,
- PeriodicRestartComputerHours = this.PeriodicRestartComputerHours,
- PeriodicRestartComputerMinutes = this.PeriodicRestartComputerMinutes,
- PeriodicRestartKernelHours = this.PeriodicRestartKernelHours,
- PeriodicRestartKernelMinutes = this.PeriodicRestartKernelMinutes,
- TotalPhysicalMemoryMb = this.TotalPhysicalMemoryMb,
- Version = this.Version
- #endregion
- };
- }
- /// <summary>
- /// 上报算力时。
- /// 因为只有MinerData具有的成员发生了变化时才需要持久化所以该非法输出isMinerDataChanged参数以表示MinerData的成员是否发生了变化。
- /// </summary>
- /// <param name="speedDto"></param>
- /// <param name="minerIp"></param>
- /// <param name="isMinerDataChanged"></param>
- public void Update(ISpeedDto speedDto, string minerIp, out bool isMinerDataChanged) {
- Update(speedDto, out isMinerDataChanged);
- this.MinerActiveOn = DateTime.Now;
- if (!isMinerDataChanged && minerIp != this.MinerIp) {
- isMinerDataChanged = true;
- }
- this.MinerIp = minerIp;
- }
- /// <summary>
- /// 因为只有MinerData具有的成员发生了变化时才需要持久化所以该非法输出isMinerDataChanged参数以表示MinerData的成员是否发生了变化。
- /// </summary>
- /// <param name="state"></param>
- /// <param name="minerIp"></param>
- /// <param name="isMinerDataChanged"></param>
- public void Update(ReportState state, string minerIp, out bool isMinerDataChanged) {
- isMinerDataChanged = false;
- this.IsMining = state.IsMining;
- this.MinerActiveOn = DateTime.Now;
- if (!isMinerDataChanged && minerIp != this.MinerIp) {
- isMinerDataChanged = true;
- }
- this.MinerIp = minerIp;
- }
- /// <summary>
- /// 上报算力时和拉取算力时。
- /// 因为只有MinerData具有的成员发生了变化时才需要持久化所以该非法输出isMinerDataChanged参数以表示MinerData的成员是否发生了变化。
- /// </summary>
- /// <param name="speedDto"></param>
- /// <param name="isMinerDataChanged"></param>
- public void Update(ISpeedData speedData, out bool isMinerDataChanged) {
- this.Update((ISpeedDto)speedData, out isMinerDataChanged);
- this.MinerActiveOn = speedData.SpeedOn;
- }
- /// <summary>
- /// 不更新MinerActiveOn
- /// </summary>
- /// <param name="speedDto"></param>
- /// <param name="isMinerDataChanged"></param>
- public void Update(ISpeedDto speedDto, out bool isMinerDataChanged) {
- #region
- isMinerDataChanged = false;
- if (speedDto == null) {
- return;
- }
- #region MinerData
- if (!isMinerDataChanged) {
- isMinerDataChanged = this.ClientId != speedDto.ClientId;
- }
- this.ClientId = speedDto.ClientId;
- if (!isMinerDataChanged) {
- isMinerDataChanged = this.MACAddress != speedDto.MACAddress;
- }
- this.MACAddress = speedDto.MACAddress;
- if (!isMinerDataChanged) {
- isMinerDataChanged = this.LocalIp != speedDto.LocalIp;
- }
- this.LocalIp = speedDto.LocalIp;
- if (!isMinerDataChanged) {
- isMinerDataChanged = this.MinerName != speedDto.MinerName;
- }
- this.MinerName = speedDto.MinerName;
- if (!isMinerDataChanged) {
- isMinerDataChanged = this.IsOuterUserEnabled != speedDto.IsOuterUserEnabled;
- }
- this.IsOuterUserEnabled = speedDto.IsOuterUserEnabled;
- this.ReportOuterUserId = speedDto.ReportOuterUserId;
- #endregion
- this.MineContextId = speedDto.MineContextId;
- this.IsAutoBoot = speedDto.IsAutoBoot;
- this.IsAutoStart = speedDto.IsAutoStart;
- this.AutoStartDelaySeconds = speedDto.AutoStartDelaySeconds;
- this.IsAutoRestartKernel = speedDto.IsAutoRestartKernel;
- this.AutoRestartKernelTimes = speedDto.AutoRestartKernelTimes;
- this.IsNoShareRestartKernel = speedDto.IsNoShareRestartKernel;
- this.NoShareRestartKernelMinutes = speedDto.NoShareRestartKernelMinutes;
- this.IsNoShareRestartComputer = speedDto.IsNoShareRestartComputer;
- this.NoShareRestartComputerMinutes = speedDto.NoShareRestartComputerMinutes;
- this.IsPeriodicRestartKernel = speedDto.IsPeriodicRestartKernel;
- this.PeriodicRestartKernelHours = speedDto.PeriodicRestartKernelHours;
- this.IsPeriodicRestartComputer = speedDto.IsPeriodicRestartComputer;
- this.PeriodicRestartComputerHours = speedDto.PeriodicRestartComputerHours;
- this.PeriodicRestartComputerMinutes = speedDto.PeriodicRestartComputerMinutes;
- this.PeriodicRestartKernelMinutes = speedDto.PeriodicRestartKernelMinutes;
- this.IsAutoStopByCpu = speedDto.IsAutoStopByCpu;
- this.IsAutoStartByCpu = speedDto.IsAutoStartByCpu;
- this.CpuStopTemperature = speedDto.CpuStopTemperature;
- this.CpuStartTemperature = speedDto.CpuStartTemperature;
- this.CpuLETemperatureSeconds = speedDto.CpuLETemperatureSeconds;
- this.CpuGETemperatureSeconds = speedDto.CpuGETemperatureSeconds;
- this.CpuPerformance = speedDto.CpuPerformance;
- this.CpuTemperature = speedDto.CpuTemperature;
- this.IsRaiseHighCpuEvent = speedDto.IsRaiseHighCpuEvent;
- this.HighCpuPercent = speedDto.HighCpuPercent;
- this.HighCpuSeconds = speedDto.HighCpuSeconds;
- this.GpuDriver = speedDto.GpuDriver;
- this.GpuType = speedDto.GpuType;
- this.OSName = speedDto.OSName;
- this.OSVirtualMemoryMb = speedDto.OSVirtualMemoryMb;
- this.GpuInfo = speedDto.GpuInfo;
- this.CpuId = speedDto.CpuId;
- this.Version = speedDto.Version;
- this.IsMining = speedDto.IsMining;
- this.BootOn = speedDto.BootOn;
- this.MineStartedOn = speedDto.MineStartedOn;
- this.DiskSpace = speedDto.DiskSpace;
- this.MainCoinCode = speedDto.MainCoinCode;
- this.MainCoinTotalShare = speedDto.MainCoinTotalShare;
- this.MainCoinRejectShare = speedDto.MainCoinRejectShare;
- this.MainCoinSpeed = speedDto.MainCoinSpeed;
- this.MainCoinPool = speedDto.MainCoinPool;
- this.MainCoinWallet = speedDto.MainCoinWallet;
- this.Kernel = speedDto.Kernel;
- this.IsDualCoinEnabled = speedDto.IsDualCoinEnabled;
- this.DualCoinPool = speedDto.DualCoinPool;
- this.DualCoinWallet = speedDto.DualCoinWallet;
- this.DualCoinCode = speedDto.DualCoinCode;
- this.DualCoinTotalShare = speedDto.DualCoinTotalShare;
- this.DualCoinRejectShare = speedDto.DualCoinRejectShare;
- this.DualCoinSpeed = speedDto.DualCoinSpeed;
- this.KernelCommandLine = speedDto.KernelCommandLine;
- this.MainCoinSpeedOn = speedDto.MainCoinSpeedOn;
- this.DualCoinSpeedOn = speedDto.DualCoinSpeedOn;
- this.GpuTable = speedDto.GpuTable;
- this.MainCoinPoolDelay = speedDto.MainCoinPoolDelay;
- this.DualCoinPoolDelay = speedDto.DualCoinPoolDelay;
- this.IsFoundOneGpuShare = speedDto.IsFoundOneGpuShare;
- this.IsRejectOneGpuShare = speedDto.IsRejectOneGpuShare;
- this.IsGotOneIncorrectGpuShare = speedDto.IsGotOneIncorrectGpuShare;
- this.MineWorkId = speedDto.MineWorkId;
- this.MineWorkName = speedDto.MineWorkName;
- this.KernelSelfRestartCount = speedDto.KernelSelfRestartCount - 1;// 需要减1
- this.LocalServerMessageTimestamp = speedDto.LocalServerMessageTimestamp;
- this.TotalPhysicalMemoryMb = speedDto.TotalPhysicalMemoryMb;
- this.IsAutoDisableWindowsFirewall = speedDto.IsAutoDisableWindowsFirewall;
- this.IsDisableAntiSpyware = speedDto.IsDisableAntiSpyware;
- this.IsDisableUAC = speedDto.IsDisableUAC;
- this.IsDisableWAU = speedDto.IsDisableWAU;
- Extract(
- speedDto,
- out int mainCoinPoolDelayNumber,
- out int dualCoinPoolDelayNumber,
- out double mainCoinRejectPercent,
- out double dualCoinRejectPercent,
- out int diskSpaceMb);
- this.MainCoinPoolDelayNumber = mainCoinPoolDelayNumber;
- this.DualCoinPoolDelayNumber = dualCoinPoolDelayNumber;
- this.MainCoinRejectPercent = mainCoinRejectPercent;
- this.DualCoinRejectPercent = dualCoinRejectPercent;
- this.DiskSpaceMb = diskSpaceMb;
- #endregion
- }
- public string Id { get; set; }
- /// <summary>
- /// 服务的指定的作业
- /// </summary>
- public Guid WorkId { get; set; }
- public string WorkerName { get; set; }
- public string WindowsLoginName { get; set; }
- private string _windowsPassword;
- public string WindowsPassword {
- get {
- return _windowsPassword;
- }
- set {
- if (!Base64Util.IsBase64OrEmpty(value)) {
- value = string.Empty;
- }
- _windowsPassword = value;
- }
- }
- public DateTime CreatedOn { get; set; }
- public DateTime MinerActiveOn { get; set; }
- public Guid GroupId { get; set; }
- public DateTime NetActiveOn { get; set; }
- public bool IsOnline { get; set; }
- public bool GetIsOnline(bool isOuterNet) {
- if (!IsOnline) {
- return false;
- }
- if (isOuterNet) {
- if (this.IsOuterUserEnabled) {
- if (NetActiveOn.AddSeconds(60) < DateTime.Now) {
- return false;
- }
- }
- else if (NetActiveOn.AddSeconds(180) < DateTime.Now) {
- return false;
- }
- return true;
- }
- if (NetActiveOn.AddSeconds(20) < DateTime.Now) {
- return false;
- }
- return true;
- }
- public string LoginName { get; set; }
- public string OuterUserId { get; set; }
- // 不会传到客户端
- [JsonIgnore]
- public string AESPassword { get; set; }
- public DateTime AESPasswordOn { get; set; }
- // 因为服务端需要根据如下几个字段排序所以会有这几个字段
- public int MainCoinPoolDelayNumber { get; set; }
- public int DualCoinPoolDelayNumber { get; set; }
- public double MainCoinRejectPercent { get; set; }
- public double DualCoinRejectPercent { get; set; }
- public int DiskSpaceMb { get; set; }
- }
- }
|