private void RefreshServerJsonFile() { RpcRoot.OfficialServer.AppSettingService.GetJsonFileVersionAsync(ClientAppType.AppType, HomePath.ExportServerJsonFileName, serverState => { AppVersionChangedEvent.PublishIfNewVersion(serverState.MinerClientVersion); string localServerJsonFileVersion = GetServerJsonVersion(); if (!string.IsNullOrEmpty(serverState.JsonFileVersion) && localServerJsonFileVersion != serverState.JsonFileVersion) { RpcRoot.OSSService.AliyunOSSService.GetAliyunServerJson((data) => { if (data == null || data.Length == 0) { return; } string rawJson = Encoding.UTF8.GetString(data); HomePath.WriteServerJsonFile(rawJson); SetServerJsonVersion(serverState.JsonFileVersion); ContextReInit(); VirtualRoot.ThisLocalInfo(nameof(NTMinerContext), $"刷新server.json配置", toConsole: true); }); } else { NTMinerConsole.DevDebug("server.json没有新版本"); } if (serverState.WsStatus == WsStatus.Online) { VirtualRoot.RaiseEvent(new WsServerOkEvent()); } }); }
private static void SetRdpRegistryValue(int value) { try { using (RegistryKey localMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default), rdpKey = localMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server", true)) { if (!int.TryParse(rdpKey.GetValue("fDenyTSConnections").ToString(), out int currentValue)) { currentValue = -1; } //Value was not found do not proceed with change. if (currentValue == -1) { return; } else if (value == 1 && currentValue == 1) { NTMinerConsole.DevDebug("RDP is already disabled. No changes will be made."); return; } else if (value == 0 && currentValue == 0) { NTMinerConsole.DevDebug("RDP is already enabled. No changes will be made."); return; } else { rdpKey.SetValue("fDenyTSConnections", value); } } } catch { } }
/// <summary> /// 注意:Request时原始HttpContent,Fire忽略Response /// </summary> /// <param name="host"></param> /// <param name="port"></param> /// <param name="controller"></param> /// <param name="action"></param> /// <param name="query"></param> /// <param name="content"></param> /// <param name="callback"></param> /// <param name="timeountMilliseconds"></param> public static void FirePostAsync( string host, int port, string controller, string action, Dictionary <string, string> query, HttpContent content, Action callback = null, int timeountMilliseconds = 0) { Task.Factory.StartNew(() => { try { using (HttpClient client = RpcRoot.CreateHttpClient()) { client.SetTimeout(timeountMilliseconds); Task <HttpResponseMessage> getHttpResponse = client.PostAsync(RpcRoot.GetUrl(host, port, controller, action, query), content); if (!getHttpResponse.Result.IsSuccessStatusCode) { NTMinerConsole.DevDebug($"{action} http response {getHttpResponse.Result.StatusCode.ToString()} {getHttpResponse.Result.ReasonPhrase}"); } callback?.Invoke(); } } catch { callback?.Invoke(); } }); }
static void Main(string[] args) { SetOut(new ConsoleOut()); NTMinerConsole.MainUiOk(); if (args.Length != 0) { if (args.Contains("--sha1", StringComparer.OrdinalIgnoreCase)) { File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sha1"), Sha1); return; } } try { SystemEvents.SessionEnding += SessionEndingEventHandler; StartTimer(); _waitHandle = new AutoResetEvent(false); bool mutexCreated; try { _sMutexApp = new Mutex(true, "NTMinerDaemonAppMutex", out mutexCreated); } catch { mutexCreated = false; } if (mutexCreated) { if (!DevMode.IsDevMode) { NTMinerConsole.Disable(); } NTMinerRegistry.SetDaemonVersion(Sha1); NTMinerRegistry.SetAutoBoot("NTMinerDaemon", true); if (!CommandLineArgs.Args.Contains("--bootByMinerClient")) { #region 是否自动启动挖矿端 bool isAutoBoot = MinerProfileUtil.GetIsAutoBoot(); if (isAutoBoot) { string location = NTMinerRegistry.GetLocation(NTMinerAppType.MinerClient); if (!string.IsNullOrEmpty(location) && File.Exists(location)) { string processName = Path.GetFileName(location); Process[] processes = Process.GetProcessesByName(processName); if (processes.Length == 0) { string arguments = NTMinerRegistry.GetMinerClientArguments(NTMinerAppType.MinerClient); try { Process.Start(location, arguments); NTMinerConsole.DevOk(() => $"启动挖矿端 {location} {arguments}"); } catch (Exception e) { Logger.ErrorDebugLine($"启动挖矿端失败因为异常 {location} {arguments}", e); } } else { NTMinerConsole.DevDebug($"挖矿端已经在运行中无需启动"); } } } #endregion } Run(); } } catch (Exception e) { Logger.ErrorDebugLine(e); } }
/// <summary> /// 注意:Request时原始HttpContent,Fire忽略Response /// </summary> /// <param name="host"></param> /// <param name="port"></param> /// <param name="controller"></param> /// <param name="action"></param> /// <param name="query"></param> /// <param name="content"></param> /// <param name="callback"></param> /// <param name="timeountMilliseconds"></param> public static void FirePostAsync( string host, int port, string controller, string action, Dictionary <string, string> query, HttpContent content, Action callback = null, int timeountMilliseconds = 0) { Task.Factory.StartNew(() => { try { using (HttpClient client = RpcRoot.CreateHttpClient()) { client.SetTimeout(timeountMilliseconds); Task <HttpResponseMessage> getHttpResponse = client.PostAsync($"http://{host}:{port.ToString()}/api/{controller}/{action}{query.ToQueryString()}", content); NTMinerConsole.DevDebug($"{action} {getHttpResponse.Result.ReasonPhrase}"); callback?.Invoke(); } } catch { callback?.Invoke(); } }); }