Exemplo n.º 1
0
 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);
        }
Exemplo n.º 3
0
        /// <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}个设备");
            }
        }
Exemplo n.º 4
0
        /// <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);
                }
            }
        }
Exemplo n.º 5
0
 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);
         }
     }));
 }
Exemplo n.º 6
0
        /// <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));
        }
Exemplo n.º 7
0
        /// <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;
            }
        }
Exemplo n.º 8
0
        /// <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);
                }
            }
        }
Exemplo n.º 9
0
        /// <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));
        }
Exemplo n.º 10
0
        /// <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);
                }
            }
        }
Exemplo n.º 11
0
 /// <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);//身份认证
         }
     }
 }
Exemplo n.º 12
0
        /// <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;
            }
        }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        /// <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);
        }
Exemplo n.º 15
0
        /// <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;
                }
            }
        }
Exemplo n.º 16
0
        /// <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;
            }
        }