Пример #1
0
        public void SendSystemInformation(SystemInfo systemInfo)
        {
            var packet = new PacketSystemInformation
            {
                SystemInfo = systemInfo
            };

            EnqueuePacket(packet);
        }
Пример #2
0
        public void OnPacketReceived(Client client, Packet packet)
        {
            Trace.WriteLine("Server::OnPacketReceived()");
            switch (packet.PacketType)
            {
            case PacketType.Presentation:
                Application.OnPresentationData(client);
                break;

            case PacketType.Information:
            {
                PacketSystemInformation packetInfo = (PacketSystemInformation)packet;
                Application.OnClientSystemInformation(client, packetInfo.SystemInfo);
                break;
            }

            case PacketType.FileSystem:
            {
                PacketFileSystem packetFs = (PacketFileSystem)packet;
                if (packetFs.FsFocus == PacketFileSystem.FileSystemFocus.Roots)
                {
                    Application.OnFileSystemRoots(client, packetFs.Drives);
                }
                else
                {
                    Application.OnFileSystemDirEntries(client, packetFs.BasePath, packetFs.Files);
                }
                break;
            }

            case PacketType.Process:
            {
                Application.OnProcessListReceived(client, ((PacketProcess)packet).Processes);
                break;
            }

            case PacketType.Shell:
            {
                Application.OnShellResultReceived(client, ((PacketShell)packet).ShellAction,
                                                  ((PacketShell)packet).Data);
                break;
            }

            case PacketType.Desktop:
            {
                Application.OnDesktopImage(client,
                                           ((PacketDesktop)packet).DesktopAction,
                                           ((PacketDesktop)packet).ImageData);
                break;
            }

            default:
                Trace.WriteLine("Unhandled packet type");
                break;
            }
        }
Пример #3
0
        public void OnPacketReceived(Client client, Packet packet)
        {
            Trace.WriteLine("Server::OnPacketReceived()");
            switch (packet.PacketType)
            {
            case PacketType.Presentation:

                AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                {
                    Subject = Subject.Connection, Action = Action.Started
                });
                break;

            case PacketType.Information:
            {
                PacketSystemInformation packetInfo = (PacketSystemInformation)packet;

                AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                    {
                        Subject = Subject.Information,
                        Action  = Action.Fetched,
                        Data    = packetInfo.SystemInfo
                    });
                break;
            }

            case PacketType.FileSystem:
            {
                PacketFileSystem packetFs = (PacketFileSystem)packet;
                AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                    {
                        Subject = Subject.FileSystem,
                        Action  = Action.Fetched,
                        Data    = packetFs
                    });

                break;
            }

            case PacketType.Process:
            {
                AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                    {
                        Subject = Subject.Process,
                        Action  = Action.Fetched,
                        Data    = ((PacketProcess)packet).Processes
                    });
                break;
            }

            case PacketType.Shell:
            {
                Dictionary <string, string> data = new Dictionary <string, string>();
                data["command"] = ((PacketShell)packet).Command;
                data["output"]  = ((PacketShell)packet).Output;

                if (((PacketShell)packet).Action == ServiceAction.Stop)
                {
                    AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                        {
                            Subject = Subject.Shell,
                            Action  = Action.Stop
                        });
                }
                else
                {
                    AppNetChannel.SubmitToApp(new ClientAppEvent(client)
                        {
                            Subject = Subject.Shell,
                            Action  = Action.Fetched,
                            Data    = data
                        });
                }

                break;
            }

            case PacketType.Desktop:
            {
                ClientAppEvent clientEvent =
                    new ClientAppEvent(client)
                {
                    Subject = Subject.Desktop
                };
                if (((PacketDesktop)packet).DesktopAction == DesktopAction.Push)
                {
                    clientEvent.Action = Action.Fetched;
                    clientEvent.Data   = ((PacketDesktop)packet).ImageData;
                }
                else if (clientEvent.Action == Action.Fetched)
                {
                    clientEvent.Action = Action.Stop;
                }


                AppNetChannel.SubmitToApp(clientEvent);
                break;
            }

            default:
                Trace.WriteLine("Unhandled packet type");
                break;
            }
        }