示例#1
0
        public void Run(IScsServerClient client, List <string> parameters, string messageId)
        {
            var sender = new ServerSender(client);

            try
            {
                var login  = DataSingleton.Instance.ServerClients[(int)client.ClientId].Login;
                var userId = SqlUserCommands.GetUserId(login);

                var tmp = DataSingleton.Instance.Rooms.GetAllItems()
                          .Where(x => x.InsideInfo.Clients.Exists(y => y.Id == userId)).ToList();
                if (tmp.Any())
                {
                    foreach (var roomActive in tmp)
                    {
                        var index = roomActive.InsideInfo.Clients.FindIndex(x => x.Id == userId);
                        roomActive.InsideInfo.Clients?.RemoveAt(index);
                    }
                }

                DataSingleton.Instance.ServerClients.Remove(client.ClientId);
                SqlUserCommands.AddActionInfo(userId, Utils.Instance.GetIpOfClient(client),
                                              SqlUserCommands.Actions.Logout);
                sender.Success(messageId);
                Console.WriteLine("{0} disconnected", client.ClientId);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                sender.Error(messageId);
            }
        }
示例#2
0
        public void Run(IScsServerClient client, List <string> parameters, string messageId)
        {
            var sender = new ServerSender(client);

            var login    = parameters[0];
            var password = parameters[1];

            try
            {
                if (SqlUserCommands.LoginExists(login))
                {
                    var hashedPass = Scrypt.Hash(password, SqlUserCommands.GetSalt(login));

                    if (SqlUserCommands.CheckPassword(hashedPass, login))
                    {
                        var getUserID = SqlUserCommands.GetUserId(login);
                        var rank      = SqlUserCommands.GetUserRank(getUserID);

                        var tmpClient = new ServerClient(client)
                        {
                            Rank     = (Rank)rank,
                            Id       = getUserID,
                            Username = login,
                            Login    = login
                        };

                        // if (Utils.Instance.IsActiveLogin(client))
                        //Receiver_Disconnect(null, new ServerReceiverEvents.DisconnectEventArgs(e.Client)); ///TODO

                        DataSingleton.Instance.ServerClients[(int)tmpClient.Client.ClientId] = tmpClient;
                        sender.Success(messageId, tmpClient.Username);
                        SqlUserCommands.AddActionInfo(getUserID, Utils.Instance.GetIpOfClient(client),
                                                      SqlUserCommands.Actions.Login);
                    }
                    else
                    {
                        sender.Error(messageId);
                    }
                }
                else
                {
                    sender.Error(messageId);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                sender.Error(messageId);
            }
        }
示例#3
0
        public void Run(IScsServerClient client, List <string> parameters, string messageId)
        {
            var sender = new ServerSender(client);

            var login    = parameters[0];
            var password = parameters[1];
            var email    = parameters[2];

            try
            {
                if (!SqlUserCommands.LoginExists(login))
                {
                    var salt = Scrypt.GenerateSalt();

                    if (SqlUserCommands.CreateUser(login, Scrypt.Hash(password, salt), salt, login))
                    {
                        sender.Success(messageId);
                        var getUserID = SqlUserCommands.GetUserId(login);

                        SqlUserCommands.AddActionInfo(getUserID, Utils.Instance.GetIpOfClient(client),
                                                      SqlUserCommands.Actions.Register);
                    }
                    else
                    {
                        sender.Error(messageId);
                    }
                }
                else
                {
                    sender.Error(messageId); //TODO acc exist param
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                sender.Error(messageId);
            }
        }