コード例 #1
0
        public static bool IsValidConnection(string token, SyncIOConnectedClient client, string username)
        {
            try {
                var request = new RestRequest(Method.POST);
                request.AddParameter("token", token);
                request.AddParameter("user", username);
                request.AddParameter("act", "details");
                var jsonResponse = ApiClient.Execute(request);
                var response     = JsonConvert.DeserializeObject <Rootobject>(jsonResponse.Content);
                if (response == null || !response.success)
                {
                    return(false);
                }

                IPAddress requestedIP;
                if (!IPAddress.TryParse(response.data.ip, out requestedIP))
                {
                    return(false);
                }

                return(!response.data.banned &&
                       !response.data.expired &&
                       response.data.online &&
                       response.data.user.Equals(username, StringComparison.InvariantCultureIgnoreCase) &&
                       client.EndPoint.Address.MapToIPv4().Equals(requestedIP));
            } catch {
                return(false);
            }
        }
コード例 #2
0
        public void HandleClientFunctionCall(SyncIOConnectedClient client, RemoteCallRequest reqst)
        {
            lock (SyncLock)
            {
                var respPacket = new RemoteCallResponse(reqst.CallId, reqst.Name);

                if (FunctionLookup.ContainsKey(reqst.Name))
                {
                    var func = FunctionLookup[reqst.Name];

                    for (int i = 0; i < reqst.Args.Length; i++)
                    {
                        var argType = reqst.Args[i].GetType();
                        if (!BindableTypes.ContainsKey(argType) || !func.ValidParameter(i, BindableTypes[argType]))
                        {
                            respPacket.Response = FunctionResponseStatus.InvalidParameters;
                            client.Send(respPacket);
                            return;
                        }
                    }

                    func.Invoke(client, respPacket, reqst.Args);
                }
                else
                {
                    respPacket.Response = FunctionResponseStatus.DoesNotExist;
                }

                client.Send(respPacket);
            }
        }
コード例 #3
0
        private void UpdateClient(SyncIOConnectedClient client)
        {
            if (InvokeRequired)
            {
                Invoke(new ClientManagementEventHandler(UpdateClient), client);
                return;
            }

            if (!_clients.ContainsKey(client.ID))
            {
                return;
            }

            var c = _clients[client.ID];
            var l = lvClients.Items[client.ID.ToString()];

            if (l != null)
            {
                l.SubItems[lvClients.IndexFromKey("colUserPC")].Text  = $"{c.UserName?.ToString()} / {c.MachineName?.ToString()}";
                l.SubItems[lvClients.IndexFromKey("colOS")].Text      = c.OS?.ToString();
                l.SubItems[lvClients.IndexFromKey("colVersion")].Text = c.ClientVersion?.ToString();
                l.Tag = _clients[client.ID];
            }

            lvClients.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
            //lvClients.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
        }
コード例 #4
0
        private void AddClient(SyncIOConnectedClient client)
        {
            if (InvokeRequired)
            {
                Invoke(new ClientManagementEventHandler(AddClient), client);
                return;
            }

            if (!lvClients.Items.ContainsKey(client.ID.ToString()))
            {
                //var c = _clients[client.ID];
                lvClients.Items.Add(new ListViewItem(new string[]
                {
                    client.ID.ToString(),
                    client.EndPoint.ToString(),
                    "--",
                    "--",
                    "--"
                })
                {
                    Name     = client.ID.ToString(),
                    ImageKey = client.ID.ToString(),
                    Tag      = client//_clients[client.ID]
                });
            }

            client.OnDisconnect += Client_OnDisconnect;

            client.Send(new DesktopScreenshot(null));
        }
コード例 #5
0
 public ConnectedChatClient(SyncIOConnectedClient conn, string os, string user, string machine, Version clientVersion)
 {
     Connection    = conn;
     OS            = os;
     UserName      = user;
     MachineName   = machine;
     ClientVersion = clientVersion;
 }
コード例 #6
0
        private void Client_OnDisconnect(SyncIOConnectedClient client, Exception ex)
        {
            WriteLog(LogType.Info, $"[{client.ID}] Disconnected: {ex.Message}");

            RemoveClient(client);

            UpdateConnectionStatus();
        }
コード例 #7
0
        private void Server_OnClientConnect(SyncIOServer sender, SyncIOConnectedClient client)
        {
            WriteLog(LogType.Info, $"[{client.ID}] New connection.");

            Console.WriteLine($"Enabling GZip compression...");
            client.SetCompression(new SyncIOCompressionGZip());

            Console.WriteLine($"Enabling rijndael encryption using key {string.Join("", Key.Select(x => x.ToString("X2")))}");
            client.SetEncryption(new SyncIOEncryptionAes(Key, IV));

            AddClient(client);

            UpdateConnectionStatus();
        }
コード例 #8
0
ファイル: RemoteFunctionBind.cs プロジェクト: sensi17/SyncIO
 internal void Invoke(SyncIOConnectedClient client, RemoteCallResponse resp, object[] param)   //Fix this shit
 {
     try {
         if (AuthCallback?.Invoke(client, this) ?? true)
         {
             resp.Return  = FuctionCall.DynamicInvoke(param);
             resp.Reponce = FunctionResponceStatus.Success;
         }
         else
         {
             resp.Reponce = FunctionResponceStatus.PermissionDenied;
         }
     }catch {
         resp.Reponce = FunctionResponceStatus.ExceptionThrown;
     }
 }
コード例 #9
0
        private void AddDesktopImage(SyncIOConnectedClient client)
        {
            if (InvokeRequired)
            {
                Invoke(new ClientManagementEventHandler(AddDesktopImage), client);
                return;
            }

            if (imageList1.Images.ContainsKey(client.ID.ToString()))
            {
                imageList1.Images.RemoveByKey(client.ID.ToString());
            }

            if (_clients.ContainsKey(client.ID))
            {
                imageList1.Images.Add(client.ID.ToString(), _clients[client.ID].DesktopScreenshot);
            }
        }
コード例 #10
0
        private void RemoveClient(SyncIOConnectedClient client)
        {
            if (InvokeRequired)
            {
                Invoke(new ClientManagementEventHandler(RemoveClient), client);
                return;
            }



            if (_clients.ContainsKey(client.ID))
            {
                _clients.Remove(client.ID);
            }

            if (lvClients.Items.ContainsKey(client.ID.ToString()))
            {
                lvClients.Items.RemoveByKey(client.ID.ToString());
            }
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: sensi17/SyncIO
 public ConnectedChatClient(SyncIOConnectedClient _conn, string _name)
 {
     Connection = _conn;
     Name       = _name;
 }
コード例 #12
0
ファイル: SyncIOClient.cs プロジェクト: sensi17/SyncIO
 private void Connection_OnDisconnect(SyncIOConnectedClient client, Exception ex)
 {
     OnDisconnect?.Invoke(this, ex);
 }
コード例 #13
0
ファイル: QueuedPacket.cs プロジェクト: sensi17/SyncIO
 public void HasBeenSent(SyncIOConnectedClient sender)
 {
     AfterSend?.Invoke(sender);
 }