ntminer 5 years ago
parent
commit
8096715388

+ 1 - 2
src/CalcConfigUpdater/Program.cs

@@ -12,7 +12,6 @@ using System.Threading.Tasks;
 namespace NTMiner {
     public class Program {
         static void Main() {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             NTMinerConsole.DisbleQuickEditMode();
             try {
                 VirtualRoot.StartTimer();
@@ -152,7 +151,7 @@ namespace NTMiner {
                 if (string.IsNullOrEmpty(html)) {
                     return results;
                 }
-                string patternFileFullName = Path.Combine(HomePath.BaseDirectory, "pattern.txt");
+                string patternFileFullName = Path.Combine(HomePath.AppDomainBaseDirectory, "pattern.txt");
                 if (!File.Exists(patternFileFullName)) {
                     return results;
                 }

+ 0 - 1
src/MinerClient/App.xaml.cs

@@ -1,6 +1,5 @@
 using NTMiner.Core;
 using NTMiner.Core.MinerClient;
-using NTMiner.Gpus;
 using NTMiner.Mine;
 using NTMiner.Notifications;
 using NTMiner.RemoteDesktop;

+ 0 - 1
src/MinerClientFinder/App.xaml.cs

@@ -7,7 +7,6 @@ using System.Windows;
 namespace NTMiner {
     public partial class App : Application {
         public App() {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             Logger.Disable();
             Write.Disable();
             VirtualRoot.SetOut(NotiCenterWindowViewModel.Instance);

+ 1 - 1
src/MinerStudio/App.xaml.cs

@@ -11,7 +11,7 @@ using System.Windows;
 namespace NTMiner {
     public partial class App : Application {
         public App() {
-            HomePath.SetHomeDirFullName(System.IO.Path.Combine(HomePath.BaseDirectory, "NTMiner"));
+            HomePath.SetHomeDirFullName(System.IO.Path.Combine(HomePath.AppDomainBaseDirectory, "NTMiner"));
             VirtualRoot.SetOut(NotiCenterWindowViewModel.Instance);
             Logger.SetDir(HomePath.HomeLogsDirFullName);
             WpfUtil.Init();

+ 3 - 0
src/NTMinerDaemon/NTMinerDaemon.csproj

@@ -127,6 +127,9 @@
     <Compile Include="..\NTMinerlib\Serialization\NTJsonSerializer.cs">
       <Link>Serialization\NTJsonSerializer.cs</Link>
     </Compile>
+    <Compile Include="..\NTMinerlib\TempPath.cs">
+      <Link>TempPath.cs</Link>
+    </Compile>
     <Compile Include="..\NTMinerlib\VirtualRoot.partials.Common.cs">
       <Link>VirtualRoot.partials.Common.cs</Link>
     </Compile>

+ 2 - 3
src/NTMinerDaemon/VirtualRoot.cs

@@ -38,11 +38,10 @@ namespace NTMiner {
         // 注意:该程序编译成无界面的windows应用程序而不是控制台程序,从而随机自动启动时无界面
         [STAThread]
         static void Main(string[] args) {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             SetOut(new ConsoleOut());
             if (args.Length != 0) {
                 if (args.Contains("--sha1", StringComparer.OrdinalIgnoreCase)) {
-                    File.WriteAllText(Path.Combine(HomePath.BaseDirectory, "sha1"), Sha1);
+                    File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sha1"), Sha1);
                     return;
                 }
             }
@@ -125,7 +124,7 @@ namespace NTMiner {
         }
 
         public static LiteDatabase CreateLocalDb() {
-            return new LiteDatabase($"filename={Path.Combine(HomePath.BaseDirectory, NTKeyword.LocalDbFileName)}");
+            return new LiteDatabase($"filename={Path.Combine(AppDomain.CurrentDomain.BaseDirectory, NTKeyword.LocalDbFileName)}");
         }
 
         private static bool _isClosed = false;

+ 1 - 4
src/NTMinerLogging/WorkType.cs → src/NTMinerDataSchemas/Core/WorkType.cs

@@ -1,7 +1,4 @@
-namespace NTMiner {
-    /// <summary>
-    /// 作业类型。主要是因为HomePath这个类型对WorkType有依赖所以这个类型出现在这里。
-    /// </summary>
+namespace NTMiner.Core {
     public enum WorkType {
         /// <summary>
         /// 未使用作业

+ 1 - 0
src/NTMinerDataSchemas/NTMinerDataSchemas.csproj

@@ -66,6 +66,7 @@
     <Compile Include="Core\MinerServer\MinerSign.cs" />
     <Compile Include="Core\MinerServer\QueryClientsForWsRequest.cs" />
     <Compile Include="Core\Profile\IProfile.cs" />
+    <Compile Include="Core\WorkType.cs" />
     <Compile Include="DataSchemaIdAttribute.cs" />
     <Compile Include="EnumExtension.cs" />
     <Compile Include="IConsoleOutLine.cs" />

+ 1 - 1
src/NTMinerLogging/Logger.cs

@@ -7,7 +7,7 @@ namespace NTMiner {
         /// <summary>
         /// 如果未通过<see cref="SetDir(string)"/>更改过则其是程序所在目录下的logs目录。
         /// </summary>
-        public static string DirFullPath { get; private set; } = Path.Combine(HomePath.BaseDirectory, "logs");
+        public static string DirFullPath { get; private set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
 
         public static void SetDir(string fullPath) {
             DirFullPath = fullPath;

+ 0 - 3
src/NTMinerLogging/NTMinerLogging.csproj

@@ -41,7 +41,6 @@
     <Compile Include="CommandLineArgs.cs" />
     <Compile Include="DllName.cs" />
     <Compile Include="EntryAssemblyInfo.cs" />
-    <Compile Include="HomePath.cs" />
     <Compile Include="IConsoleOutLineSet.cs" />
     <Compile Include="Impl\ConsoleOutLineSet.cs" />
     <Compile Include="LogEnum.cs" />
@@ -54,8 +53,6 @@
     <Compile Include="MessageType.cs" />
     <Compile Include="NTStopwatch.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="TempPath.cs" />
-    <Compile Include="WorkType.cs" />
     <Compile Include="Write.cs" />
   </ItemGroup>
   <ItemGroup>

+ 1 - 1
src/NTMinerNoDevFee/NoDevFee/WinDivertExtract.cs

@@ -15,7 +15,7 @@ namespace NTMiner.NoDevFee {
                 Assembly assembly = type.Assembly;
                 string[] names = new string[] { "WinDivert.dll", "WinDivert64.sys" };
                 foreach (var name in names) {
-                    string fileFullName = Path.Combine(HomePath.BaseDirectory, name);
+                    string fileFullName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, name);
                     Stream stream = assembly.GetManifestResourceStream(type, name);
                     byte[] data = new byte[stream.Length];
                     stream.Read(data, 0, data.Length);

+ 1 - 2
src/NTMinerNoDevFee/VirtualRoot.cs

@@ -24,10 +24,9 @@ namespace NTMiner {
         // 注意:该程序编译成无界面的windows应用程序而不是控制台程序,从而随机自动启动时无界面
         [STAThread]
         static void Main(string[] args) {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             if (args.Length != 0) {
                 if (args.Contains("--sha1", StringComparer.OrdinalIgnoreCase)) {
-                    File.WriteAllText(Path.Combine(HomePath.BaseDirectory, "sha1"), Sha1);
+                    File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sha1"), Sha1);
                     return;
                 }
             }

+ 1 - 1
src/NTMinerServer/ServerRoot.cs

@@ -12,7 +12,7 @@ namespace NTMiner {
                 if (_hostConfig == null) {
                     lock (_locker) {
                         if (_hostConfig == null) {
-                            using (LiteDatabase db = new LiteDatabase($"filename={Path.Combine(HomePath.BaseDirectory, NTKeyword.LocalDbFileName)}")) {
+                            using (LiteDatabase db = new LiteDatabase($"filename={Path.Combine(HomePath.AppDomainBaseDirectory, NTKeyword.LocalDbFileName)}")) {
                                 var col = db.GetCollection<HostConfigData>();
                                 _hostConfig = col.FindOne(Query.All());
                             }

+ 0 - 1
src/NTMinerUpdater/App.xaml.cs

@@ -16,7 +16,6 @@ namespace NTMiner {
         }
 
         public App() {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             VirtualRoot.SetOut(NotiCenterWindowViewModel.Instance);
             WpfUtil.Init();
             AppUtil.Init(this);

+ 1 - 1
src/NTMinerUpdater/Vms/MainWindowViewModel.cs

@@ -73,7 +73,7 @@ namespace NTMiner.Vms {
                                 3.SecondsDelay().ContinueWith((t) => {
                                     string location = NTMinerRegistry.GetLocation(App.AppType);
                                     if (string.IsNullOrEmpty(location) || !File.Exists(location)) {
-                                        location = Path.Combine(HomePath.BaseDirectory, ntminerFile);
+                                        location = Path.Combine(HomePath.AppDomainBaseDirectory, ntminerFile);
                                     }
                                     try {
                                         if (File.Exists(location)) {

+ 28 - 23
src/NTMinerLogging/HomePath.cs → src/NTMinerlib/HomePath.cs

@@ -1,12 +1,13 @@
-using System;
+using NTMiner.Core;
+using System;
 using System.IO;
 
 namespace NTMiner {
     public static class HomePath {
-        public static string BaseDirectory { get; private set; } = AppDomain.CurrentDomain.BaseDirectory;
-        public static string RootLockFileFullName { get; private set; } = Path.Combine(BaseDirectory, NTKeyword.RootLockFileName);
-        public static string RootConfigFileFullName { get; private set; } = Path.Combine(BaseDirectory, NTKeyword.RootConfigFileName);
-        public static string HomeDirFullName { get; private set; } = TempPath.TempDirFullName;
+        public static string AppDomainBaseDirectory { get; private set; } = AppDomain.CurrentDomain.BaseDirectory;
+        public static string RootLockFileFullName { get; private set; } = Path.Combine(AppDomainBaseDirectory, NTKeyword.RootLockFileName);
+        public static string RootConfigFileFullName { get; private set; } = Path.Combine(AppDomainBaseDirectory, NTKeyword.RootConfigFileName);
+        public static string HomeDirFullName { get; private set; } = AppDomainBaseDirectory;
         public static string ServerJsonFileFullName { get; private set; }
         public static string SelfWorkServerJsonFileFullName { get; private set; }
         public static string MineWorkServerJsonFileFullName { get; private set; }
@@ -14,15 +15,18 @@ namespace NTMiner {
         public static string SelfWorkLocalJsonFileFullName { get; private set; }
         public static string GpuProfilesJsonFileFullName { get; private set; }
 
+        public static string LocalDbFileFullName { get; private set; } = Path.Combine(HomeDirFullName, NTKeyword.LocalDbFileName);
+        public static string ServerDbFileFullName { get; private set; } = Path.Combine(HomeDirFullName, NTKeyword.ServerDbFileName);
+
         static HomePath() {
             string homeDirFullName = HomeDirFullName;
             if (!File.Exists(RootLockFileFullName)) {
                 if (File.Exists(RootConfigFileFullName)) {
-                    homeDirFullName = BaseDirectory;
+                    homeDirFullName = AppDomainBaseDirectory;
                 }
             }
             else {
-                homeDirFullName = BaseDirectory;
+                homeDirFullName = AppDomainBaseDirectory;
             }
             SetHomeDirFullName(homeDirFullName);
             ServerJsonFileFullName = Path.Combine(HomeDirFullName, NTKeyword.ServerJsonFileName);
@@ -33,6 +37,22 @@ namespace NTMiner {
             GpuProfilesJsonFileFullName = Path.Combine(HomeDirFullName, NTKeyword.GpuProfilesFileName);
         }
 
+        /// <summary>
+        /// 挖矿端不需要调用该方法,因为挖矿端是根据所在目录下是否存在名称为home.config的文件而自动设置的。
+        /// </summary>
+        /// <param name="dirFullName"></param>
+        public static void SetHomeDirFullName(string dirFullName) {
+            if (dirFullName.EndsWith("\\")) {
+                dirFullName = dirFullName.Substring(0, dirFullName.Length - 1);
+            }
+            HomeDirFullName = dirFullName;
+            if (!Directory.Exists(dirFullName)) {
+                Directory.CreateDirectory(dirFullName);
+            }
+            LocalDbFileFullName = Path.Combine(HomeDirFullName, NTKeyword.LocalDbFileName);
+            ServerDbFileFullName = Path.Combine(HomeDirFullName, NTKeyword.ServerDbFileName);
+        }
+
         /// <summary>
         /// 返回形如server{version.Major.ToString()}.0.0.json的字符串。
         /// </summary>
@@ -56,7 +76,7 @@ namespace NTMiner {
 
         public static bool IsLocalHome {
             get {
-                string baseDir = BaseDirectory;
+                string baseDir = AppDomainBaseDirectory;
                 if (HomeDirFullName.Length + 1 != baseDir.Length) {
                     return false;
                 }
@@ -64,21 +84,6 @@ namespace NTMiner {
             }
         }
 
-        public static string LocalDbFileFullName { get; private set; } = Path.Combine(HomeDirFullName, NTKeyword.LocalDbFileName);
-        public static string ServerDbFileFullName { get; private set; } = Path.Combine(HomeDirFullName, NTKeyword.ServerDbFileName);
-
-        public static void SetHomeDirFullName(string dirFullName) {
-            if (dirFullName.EndsWith("\\")) {
-                dirFullName = dirFullName.Substring(0, dirFullName.Length - 1);
-            }
-            HomeDirFullName = dirFullName;
-            if (!Directory.Exists(dirFullName)) {
-                Directory.CreateDirectory(dirFullName);
-            }
-            LocalDbFileFullName = Path.Combine(HomeDirFullName, NTKeyword.LocalDbFileName);
-            ServerDbFileFullName = Path.Combine(HomeDirFullName, NTKeyword.ServerDbFileName);
-        }
-        
         private static bool _sIsFirstCallPackageDirFullName = true;
         public static string PackagesDirFullName {
             get {

+ 1 - 0
src/NTMinerlib/NTMinerRegistry.partials.cs

@@ -1,4 +1,5 @@
 using Microsoft.Win32;
+using NTMiner.Core;
 
 namespace NTMiner {
     public static partial class NTMinerRegistry {

+ 2 - 0
src/NTMinerlib/NTMinerlib.csproj

@@ -49,6 +49,7 @@
     <Compile Include="Cryptography\QuickUtil.cs" />
     <Compile Include="Cryptography\RSAKey.cs" />
     <Compile Include="GZipUtil.cs" />
+    <Compile Include="HomePath.cs" />
     <Compile Include="Net\Hosts.cs" />
     <Compile Include="NTMinerRegistry.partials.cs" />
     <Compile Include="Net\IpUtil.cs" />
@@ -69,6 +70,7 @@
     <Compile Include="Serialization\IJsonSerializer.cs" />
     <Compile Include="Serialization\NTJsonSerializer.cs" />
     <Compile Include="TaskEx.cs" />
+    <Compile Include="TempPath.cs" />
     <Compile Include="User\LoginedUserExtensions.cs" />
     <Compile Include="User\UserId.cs" />
     <Compile Include="User\UserIdType.cs" />

+ 0 - 0
src/NTMinerLogging/TempPath.cs → src/NTMinerlib/TempPath.cs


+ 2 - 2
src/UnitTests/EnvironmentTests.cs

@@ -25,7 +25,7 @@ namespace NTMiner {
 
         [TestMethod]
         public void EndOfStreamTest() {
-            string tempFile = Path.Combine(HomePath.BaseDirectory, Guid.NewGuid().ToString());
+            string tempFile = Path.Combine(HomePath.AppDomainBaseDirectory, Guid.NewGuid().ToString());
             File.Create(tempFile).Close();
             using (FileStream fs = new FileStream(tempFile, FileMode.Open))
             using (StreamReader sr = new StreamReader(fs)) {
@@ -44,7 +44,7 @@ namespace NTMiner {
 
         [TestMethod]
         public void HostsTest() {
-            string hostsPath = Path.Combine(HomePath.BaseDirectory, "hosts");
+            string hostsPath = Path.Combine(HomePath.AppDomainBaseDirectory, "hosts");
             File.Delete(hostsPath);
             string host = RpcRoot.OfficialServerHost;
             string ip = "127.0.0.1";

+ 5 - 5
src/UnitTests/IoTests.cs

@@ -22,7 +22,7 @@ namespace NTMiner {
 
         [TestMethod]
         public void FileCreateTest() {
-            string fileFullName = Path.Combine(HomePath.BaseDirectory, "temp.txt");
+            string fileFullName = Path.Combine(HomePath.AppDomainBaseDirectory, "temp.txt");
             FileInfo file = new FileInfo(fileFullName);
             // 1. 创建之后如果不使用必须Close;
             var fs = file.Create();
@@ -42,9 +42,9 @@ namespace NTMiner {
 
         [TestMethod]
         public void FileMoveToTest() {
-            string newPath = Path.Combine(HomePath.BaseDirectory, "FileMoveToTest.test");
+            string newPath = Path.Combine(HomePath.AppDomainBaseDirectory, "FileMoveToTest.test");
             File.Delete(newPath);
-            FileInfo file = new FileInfo(Path.Combine(HomePath.BaseDirectory, "fileToMove.test"));
+            FileInfo file = new FileInfo(Path.Combine(HomePath.AppDomainBaseDirectory, "fileToMove.test"));
             file.Create().Close();
             file.MoveTo("FileMoveToTest.test");
             Assert.IsTrue(File.Exists(newPath));
@@ -68,12 +68,12 @@ namespace NTMiner {
 
         [TestMethod]
         public void FileDeleteTest() {
-            File.Delete(Path.Combine(HomePath.BaseDirectory, Guid.NewGuid().ToString()));
+            File.Delete(Path.Combine(HomePath.AppDomainBaseDirectory, Guid.NewGuid().ToString()));
         }
 
         [TestMethod]
         public void FileStreamTest() {
-            using (FileStream fs = new FileStream(Path.Combine(HomePath.BaseDirectory, "test.log"), FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
+            using (FileStream fs = new FileStream(Path.Combine(HomePath.AppDomainBaseDirectory, "test.log"), FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
                 byte[] buffer = { (byte)'a', (byte)'\r', (byte)'b', (byte)'\n', (byte)'c', (byte)'\r', (byte)'\n', (byte)'d' };
                 fs.Position = fs.Length;
                 fs.Write(buffer, 0, buffer.Length);

+ 1 - 1
src/UnitTests/LiteDBTests.cs

@@ -9,7 +9,7 @@ namespace NTMiner {
     public class LiteDBTests {
         [TestMethod]
         public void FileStorageTest() {
-            string dbFileFullName = Path.Combine(HomePath.BaseDirectory, Guid.NewGuid().ToString() + ".litedb");
+            string dbFileFullName = Path.Combine(HomePath.AppDomainBaseDirectory, Guid.NewGuid().ToString() + ".litedb");
             string connString = $"filename={dbFileFullName}";
             File.Delete(dbFileFullName);
             string fileContext = "this is a test";

+ 1 - 1
src/UnitTests/TestUtil.cs

@@ -2,6 +2,6 @@
 
 namespace NTMiner {
     public static class TestUtil {
-        public static readonly string DataDirFullName = Path.Combine(Directory.GetParent(HomePath.BaseDirectory).Parent.FullName, "data");
+        public static readonly string DataDirFullName = Path.Combine(Directory.GetParent(HomePath.AppDomainBaseDirectory).Parent.FullName, "data");
     }
 }

+ 1 - 1
src/WebApiServer/Core/Impl/CoinSnapshotSetBase.cs

@@ -37,7 +37,7 @@ namespace NTMiner.Core.Impl {
 
         private void ClearReportDbFiles(DateTime now) {
             try {
-                foreach (var fileFullName in Directory.GetFiles(Path.Combine(HomePath.BaseDirectory), "report????-??-??.litedb")) {
+                foreach (var fileFullName in Directory.GetFiles(Path.Combine(HomePath.AppDomainBaseDirectory), "report????-??-??.litedb")) {
                     string yyyyMMdd = fileFullName.Substring(fileFullName.Length - "????-??-??.litedb".Length, "????-??-??".Length);
                     if (DateTime.TryParse(yyyyMMdd, out DateTime dateTime)) {
                         if (dateTime.AddDays(10) < now) {

+ 2 - 2
src/WebApiServer/SpecialPath.cs

@@ -4,11 +4,11 @@ using System.IO;
 namespace NTMiner {
     public static class SpecialPath {
         static SpecialPath() {
-            MineWorksDirFullName = Path.Combine(HomePath.BaseDirectory, "MineWorks");
+            MineWorksDirFullName = Path.Combine(HomePath.AppDomainBaseDirectory, "MineWorks");
             if (!Directory.Exists(MineWorksDirFullName)) {
                 Directory.CreateDirectory(MineWorksDirFullName);
             }
-            LocalDbFileFullName = Path.Combine(HomePath.BaseDirectory, NTKeyword.LocalDbFileName);
+            LocalDbFileFullName = Path.Combine(HomePath.AppDomainBaseDirectory, NTKeyword.LocalDbFileName);
         }
 
         public static string GetMineWorkLocalJsonFileFullName(Guid workId) {

+ 0 - 1
src/WebApiServer/WebApiRoot.cs

@@ -23,7 +23,6 @@ namespace NTMiner {
         [STAThread]
         static void Main() {
             NTMinerConsole.DisbleQuickEditMode();
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             try {
                 bool mutexCreated;
                 try {

+ 0 - 1
src/WsServer/WsRoot.cs

@@ -51,7 +51,6 @@ namespace NTMiner {
 
         private static bool _started = false;
         static void Main() {
-            HomePath.SetHomeDirFullName(HomePath.BaseDirectory);
             NTMinerConsole.DisbleQuickEditMode();
             DevMode.SetDevMode();