public static void Add(string host, TcpDataModel model) { try { Queue.Enqueue(new Tuple <string, TcpDataModel>(host, model)); } catch { R.Log.v($"SocketReadQueue:[{Queue.Count}]:Add:Error"); } }
public static bool Send(TcpDataModel model) { bool flag = false; if (R.TxConvert.TcppClient != null) { flag = R.TxConvert.TcppClient.Write(model); } return(flag); }
/// <summary> /// 禁用设备列表 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void Disable(TcpDataModel model) { List <USBDeviceModel> list = Json.Byte2Object <List <USBDeviceModel> >(model.Data); if (Ls.Ok(list)) { int count = list.Count(x => x.Running == false); R.Toast.Show("启用设备", $"已禁用{count}个设备"); } }
/// <summary> /// 接受消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ReceiveMessage(string host, TcpDataModel model) { if (model == null) { return; } if (R.Hosts.Contains(host)) { switch (model.Type) { #region USB Device 设备指令(2000----) //通知 case 20001000: break; //设备改变 //信息 case 20002000: DeviceFun.AllDevice(host); break; //全部设备信息 //控制 case 20003000: DeviceFun.Enable(host, model); break; //启用设备 case 20003001: DeviceFun.Disable(host, model); break; //禁用设备 #endregion //======================================== //======================================== //======================================== #region USB Storage 磁盘指令(3000----) //通知 case 30001000: break; //设备改变 //信息 case 30002000: StorageFun.AllDevice(host); break; //全部设备信息 //控制 case 30003000: StorageFun.Enable(host, model); break; //启用设备 case 30003001: StorageFun.Disable(host, model); break; //禁用设备 #endregion default: break; } } else { if (model.Type == 10001000) { Authentication(host, model); } } }
private void ReceiveMessage(string host, TcpDataModel data) { this.Invoke(new Action(() => { if (data.Type == 1000) { string s = Encoding.UTF8.GetString(data.Data); int l = s.Length; TBText.AppendText(host + " : " + s); TBText.AppendText(Environment.NewLine); } })); }
/// <summary> /// 禁用设备列表 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void Disable(string host, TcpDataModel model) { List <USBStorageModel> list = Json.Byte2Object <List <USBStorageModel> >(model.Data); if (Ls.Ok(list)) { foreach (var item in list) { //if (DevconUSBTool.Disable(item.ID)) // item.Running = false; } } R.Tx.TcppServer.Write(host, 30003001, Json.Object2Byte(list)); }
/// <summary> /// 接受消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ReceiveMessage(string host, TcpDataModel model) { switch (model.Type) { case 10001000: DeviceHelper.GetAllDevice(); break; //认证连接成功 #region USB Device 设备指令(2000----) //通知 case 20001000: DeviceFun.Change(model); break; //设备改变 //信息 case 20002000: DeviceFun.GetAllDevice(model); break; //全部设备信息 //控制 case 20003000: DeviceFun.Enable(model); break; //启用设备 case 20003001: DeviceFun.Disable(model); break; //禁用设备 #endregion //======================================== //======================================== //======================================== #region USB Storage 磁盘指令(3000----) //通知 case 30001000: break; //通知:插入设备 case 30001001: break; //通知:移除设备 //状态 case 30002000: break; //状态:USB列表更新时间 //信息 case 30003000: break; //信息:全部USB列表 case 30003001: break; //信息:插入USB列表 case 30003002: break; //信息:移除USB列表 //控制 case 30004000: break; //控制:启用设备 case 30004001: break; //控制:禁用设备 #endregion default: break; } }
/// <summary> /// 身份认证 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void Authentication(string host, TcpDataModel model) { string key = Json.Byte2Object <string>(model.Data); if (key == R.Tx.ConnectKey) { if (!R.Tx.Hosts.Contains(host)) { R.Tx.Hosts.Add(host); R.MainUI.UIConnectCount(R.Tx.Hosts.Count); R.Tx.TcppServer.Write(host, 10001000, key); } } }
/// <summary> /// 启用设备列表 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void Enable(string host, TcpDataModel model) { List <USBDeviceModel> list = Json.Byte2Object <List <USBDeviceModel> >(model.Data); if (Ls.Ok(list)) { foreach (var item in list) { if (USBTool.Enable(item.ID)) { item.Running = true; } } } R.Tx.TcppServer.Write(host, 20003000, Json.Object2Byte(list)); }
/// <summary> /// 身份认证 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void Authentication(string host, TcpDataModel model) { string key = Json.Byte2Object <string>(model.Data); if (key == R.ConnectKey) { if (!R.Hosts.Contains(host)) { R.Hosts.Add(host); R.Toast.Show("认证通过", host, ToastForm.ToastType.info); R.MainUI.NIMainText(); R.Tx.TcppServer.Write(host, 10001000, key); } } }
/// <summary> /// 接受消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ReceiveMessage(string host, TcpDataModel model) { if (model == null) { return; } if (R.Tx.Hosts.Contains(host)) { TxReadQueue.Add(host, model); } else { if (model.Type == 10001000) { Authentication(host, model);//身份认证 } } }
/// <summary> /// 接受消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ReceiveMessage(string host, TcpDataModel model) { switch (model.Type) { case 10001000: R.Tx.IsAuth = true; R.Tx.ConnectTime = DateTime.Now; R.MainUI.UITxStatus(); TxSendQueue.Start(); break; //状态信息 case 20001000: /* 普通应答 */ break; case 20001001: /* 状态 */ //R.MainUI.UIStatus(model); break; case 20001002: /* 状态(二维码) */ break; case 20002000: //R.MainUI.UILog(Json.Byte2Object<string>(model.Data)); break; case 20003000: //R.MainUI.UIScreen(model); break; case 20004000: /* 系统信息 */ //R.MainUI.UIInfo(model); break; case 20004001: /* 软件信息 */ //R.MainUI.UIInfo(model); break; case 20004002: /* 硬件信息 */ //R.MainUI.UIInfo(model); break; case 20004003: /* 共享信息 */ //R.MainUI.UIInfo(model); break; case 20004004: /* APP信息 */ //R.MainUI.UIInfo(model); break; case 30001000: //R.MainUI.UIConsole(Json.Byte2Object<List<string>>(model.Data)); break; //指令操作 case 40001000: /* 清除过期日志 */ R.Log.I("收到指令操作:40001000:清除过期日志:15天之前日志"); LogCleaner.CleanLogFile(); break; case 40002000: /* 重启服务 */ try { R.Log.I("收到指令操作:40002000:重启服务"); string ss = Json.Byte2Object <string>(model.Data); Tuple <string, int> info = Json.String2Object <Tuple <string, int> >(ss); if (R.Tx.LocalIP == info.Item1 && R.ProjectItems.Any(x => x.Port == info.Item2)) { Parts.ProjectItemPart item = R.ProjectItems.FirstOrDefault(x => x.Port == info.Item2); if (item != null) { item.Restart(); } } } catch { } break; //更新操作 case 90001000: /* 获取更新文件基本信息 */ try { Tuple <string, string> data = Json.Byte2Object <Tuple <string, string> >(model.Data); if (Str.Ok(data.Item1, data.Item2)) { R.AppointName = data.Item1; R.AppointMD5 = data.Item2; TxSendQueue.Add(90001000, "Fire in the hole"); } } catch { } break; case 90002000: /* 获取更新文件 */ try { if (Str.Ok(R.AppointName, R.AppointMD5)) { if (File.Exists(DirTool.Combine(R.Paths.App, R.AppointName))) { FileTool.Delete(DirTool.Combine(R.Paths.App, R.AppointName)); } if (BinaryFileTool.write(DirTool.Combine(R.Paths.App, R.AppointName), model.Data)) { IniTool.Set(R.Files.Settings, "Appoint", "Name", R.AppointName); IniTool.Set(R.Files.Settings, "Appoint", "MD5", R.AppointMD5); // 判断文件存在,并且MD5相符,则退出并运行新版本(否则删除不一致文件) if (File.Exists(DirTool.Combine(R.Paths.App, R.AppointName)) && FileTool.GetMD5(DirTool.Combine(R.Paths.App, R.AppointName)) == R.AppointMD5) { ProcessTool.Start(R.Files.App); R.MainUI.UIExitApp(); } else { FileTool.Delete(DirTool.Combine(R.Paths.App, R.AppointName)); } } } } catch { } break; default: break; } }
/// <summary> /// 获取全部设备列表 /// </summary> /// <param name="host"></param> public static void GetAllDevice(TcpDataModel model) { List <USBDeviceModel> list = Json.Byte2Object <List <USBDeviceModel> >(model.Data); R.MainUI.DGVUSBList_AddOrUpdate(list); }
/// <summary> /// 设备改变通知 /// </summary> /// <param name="host"></param> public static void Change(TcpDataModel model) { USBDeviceBagModel device = Json.Byte2Object <USBDeviceBagModel>(model.Data); R.MainUI.DGVUSBList_AddOrUpdate(device.All); }
/// <summary> /// 运行消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ExecuteMessage(string host, TcpDataModel model) { if (R.Tx.Hosts.Contains(host)) { switch (model.Type) { //应答信息 case 20001000: /* 普通应答 */ R.Tx.TcppServer.Write(host, 20001000, "~"); break; //系统状态 case 20002000: /* 系统状态 */ { TxConvertHelper.Send(model); //转发给上游服务 string data = Json.Byte2Object <string>(model.Data); var status = Json.String2Object <SystemStatusModel>(data); R.Store.AddSystemStatus(status); TxHostMapTool.AddHost(host, $"{status.IP}"); R.MainUI.systemListControl1.AddOrUpdate(status); R.MainUI.txConsoleControl1.Write(host, model.Type, $"{Json.Byte2Object<string>(model.Data)}"); break; } //服务信息 case 20003000: /* 服务状态 */ { TxConvertHelper.Send(model); //转发给上游服务 string data = Json.Byte2Object <string>(model.Data); var status = Json.String2Object <ProjectStatusModel>(data); R.Store.AddProjectStatus(status); R.MainUI.projectListControl1.AddOrUpdate(status); R.MainUI.txConsoleControl1.Write(host, model.Type, $"{data}"); break; } //程序更新 case 90001000: { Task.Factory.StartNew(() => { try { string fire = Json.Byte2Object <string>(model.Data); if (File.Exists(R.AppointFile)) { byte[] data = BinaryFileTool.read(R.AppointFile); R.Tx.TcppServer.Write(host, 90002000, data); } } catch { } }); } break; case 90002000: { } break; default: R.MainUI.txConsoleControl1.Write(host, model.Type, $"{model.Data.Length}"); break; } } }
/// <summary> /// 接受消息 /// </summary> /// <param name="host"></param> /// <param name="model"></param> public static void ReceiveMessage(string host, TcpDataModel model) { switch (model.Type) { case 10001000: R.TxConvert.IsAuth = true; R.TxConvert.ConnectTime = DateTime.Now; break; //状态信息 case 20001000: /* 普通应答 */ break; case 20001001: /* 状态 */ //R.MainUI.UIStatus(model); break; case 20001002: /* 状态(二维码) */ break; case 20002000: //R.MainUI.UILog(Json.Byte2Object<string>(model.Data)); break; case 20003000: //R.MainUI.UIScreen(model); break; case 20004000: /* 系统信息 */ //R.MainUI.UIInfo(model); break; case 20004001: /* 软件信息 */ //R.MainUI.UIInfo(model); break; case 20004002: /* 硬件信息 */ //R.MainUI.UIInfo(model); break; case 20004003: /* 共享信息 */ //R.MainUI.UIInfo(model); break; case 20004004: /* APP信息 */ //R.MainUI.UIInfo(model); break; case 30001000: //R.MainUI.UIConsole(Json.Byte2Object<List<string>>(model.Data)); break; //指令操作 case 40001000: /* 清除过期日志 */ try { string ss = Json.Byte2Object <string>(model.Data); Tuple <string> info = Json.String2Object <Tuple <string> >(ss); List <string> next_hosts = TxHostMapTool.GetHost(info.Item1); if (Ls.Ok(next_hosts)) { foreach (var next in next_hosts) { R.Tx.TcppServer.Write(next, 40001000, Json.Object2Byte(ss)); } } } catch { } break; case 40002000: /* 重启服务 */ try { string ss = Json.Byte2Object <string>(model.Data); Tuple <string, int> info = Json.String2Object <Tuple <string, int> >(ss); List <string> next_hosts = TxHostMapTool.GetHost(info.Item1); if (Ls.Ok(next_hosts)) { foreach (var next in next_hosts) { R.Tx.TcppServer.Write(next, 40002000, Json.Object2Byte(ss)); } } } catch { } break; default: break; } }