예제 #1
0
        private void SessionInf(DataCover128kb data)
        {
            TerminalConnectData tcd = Protocol.BufferToObject <TerminalConnectData>(data.Data);

            SessionData sd = ClientsControl.GetSessions().FirstOrDefault(x => x.RemDevGuid.SequenceEqual(tcd.RemDevGuid) && x.TerminalGuid.SequenceEqual(tcd.TerminalGuid));

            if (tcd.IsEnabled)
            {
                if (sd != null)
                {
                    sd.UpdateInfoToClients();
                }
                else
                {
                    ClientsControl.AddSession(new SessionData(tcd.TerminalGuid, tcd.RemDevGuid));
                }
            }
            else
            {
                if (sd != null)
                {
                    ClientsControl.RemoveSession(sd);
                }
            }
        }
예제 #2
0
 private void ShowPartners(object sender, EventArgs e)
 {
     if (usersControl == null)
     {
         usersControl = new ClientsControl();
     }
     controller.NavigateToPage(usersControl);
 }
예제 #3
0
 private void ShowClients(object sender, EventArgs e)
 {
     if (clientsControl == null)
     {
         clientsControl = new ClientsControl();
     }
     controller.NavigateToPage(clientsControl);
 }
예제 #4
0
        public void PingInfo()
        {
            long ping = Ping;

            byte[] data = new DataCover128kb(new СonnectionQuality(Id.Value, ping, ClientType.remote_device).Pack(), DataType.connectionQuality).Pack();
            foreach (Terminal t in ClientsControl.GetTerminals())
            {
                t.Write(data);
            }
        }
예제 #5
0
        public void UpdateInfoToClients()
        {
            int idt = GetTerminalId(ClientsControl.GetTerminals());
            int idr = GetRemoteDevId(ClientsControl.GetDevices());

            byte[] data = new DataCover128kb(new SessionInfo(Id, idt, idr, SessionMessageType.SesInformation).Pack(), DataType.sessionInfo).Pack();
            foreach (Terminal term in ClientsControl.GetTerminals())
            {
                term.Write(data);
            }
        }
예제 #6
0
        protected void MessageChat(DataCover128kb data)
        {
            MessageChat mc   = Protocol.BufferToObject <MessageChat>(data.Data);
            string      mess = $"[{DateTime.Now}]:id{Id.Value}:{Name}:{mc.TypeSender}\n{mc.Text}";

            LogWriter.SendLog(mess);
            byte[] buf = data.Pack();
            foreach (Terminal t in ClientsControl.GetTerminals())
            {
                t.Write(buf);
            }
        }
예제 #7
0
        public void Session(DataCover128kb data)
        {
            CreateSession si = Protocol.BufferToObject <CreateSession>(data.Data);
            RemoteDevice  rd = ClientsControl.GetDevices().FirstOrDefault(x => x.Id.Value == si.RemDevId);

            if (rd != null)
            {
                string text = $"Запрос создания сессии id{Id.Value}:{Name} id{rd.Id.Value}:{rd.Name}";
                LogWriter.SendLog(text);
                ClientsControl.SendGlobalChat(text);

                byte[]   ip      = new byte[4];
                int      port    = si.CustomPort;
                string[] ipstrar = null;
                if (port > -1)
                {
                    ipstrar = Program.GLOBALIP.Split('.');
                }
                else
                {
                    IPEndPoint ipep = (IPEndPoint)Client.RemoteEndPoint;
                    ipstrar = ipep.Address.ToString().Split('.');
                    port    = ipep.Port;
                }
                for (int i = 0; i < ip.Length; i += 1)
                {
                    ip[i] = byte.Parse(ipstrar[i]);
                }

                byte[] pass = Guid.NewGuid().ToByteArray();

                rd.Write(new DataCover128kb(new ConnectedInfo(ip, port, pass).Pack(), DataType.createSessionIpPort).Pack());
                Write(new DataCover128kb(new ConnectedInfo(((IPEndPoint)rd.Client.RemoteEndPoint).Address.GetAddressBytes(), ((IPEndPoint)rd.Client.RemoteEndPoint).Port, pass).Pack(), DataType.createSessionIpPort).Pack());
            }
            else
            {
                string text = $"В запросе создания сессии для {Id.Value}:{Name} отказано, удаленное устройство id:{si.RemDevId} не подключено";
                LogWriter.SendLog(text);
                ClientsControl.SendGlobalChat(text);
            }
        }
예제 #8
0
 protected void ClosingClient()
 {
     ClientsControl.RemoveTerminal(this);
 }
예제 #9
0
 protected void ClosingClient()
 {
     ClientsControl.RemoveDevice(this);
 }