public async void Run(IScsServerClient client, List <string> parameters, string messageId)
        {
            var sender = new ServerSender(client);
            var dj     = JsonConvert.DeserializeObject <Dj>(parameters[0]);

            if (!Utils.Instance.IsActiveLogin(client) || dj.Track.Count <= 0)
            {
                sender.Error(messageId);
            }

            foreach (var track in dj.Track)
            {
                if (!YoutubeClient.ValidateVideoId(track.Id))
                {
                    sender.Error(messageId);
                    return;
                }
            }

            var userClient = DataSingleton.Instance.ServerClients[(int)client.ClientId].ToUserClient();

            //TODO to change if want to have multichannel watchning feature
            var room = DataSingleton.Instance.Rooms.GetAllItems()
                       .FirstOrDefault(x => x.InsideInfo.Clients.Exists(
                                           y => y.Id == userClient.Id));

            if (room == null)
            {
                sender.Error(messageId);
                return;
            }

            var yt = new YoutubeClient();

            foreach (var track in dj.Track)
            {
                var query = await yt.GetVideoAsync(track.Id);

                track.Time = Convert.ToInt32(query.Duration.TotalSeconds);
            }

            room.InsideInfo.Djs.Add(dj);
            sender.Success(messageId);

            if (room.InsideInfo?.Clients != null)
            {
                foreach (var roomUser in room.InsideInfo?.Clients)
                {
                    var roomClient = DataSingleton.Instance.ServerClients.GetAllItems()
                                     .FirstOrDefault(x => x.Id == roomUser.Id)
                                     ?.Client;

                    sender = new ServerSender(roomClient);
                    sender.NewDjInQueue(dj);
                }
            }
        }
Beispiel #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);
            }
        }
Beispiel #3
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);
            }
        }
Beispiel #4
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);
            }
        }