Пример #1
0
        public static void InsertImageMessage(ImageMessage message, int groupID)
        {
            OleDbConnection connect = new OleDbConnection();

            connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Path.Combine(Environment.CurrentDirectory, @"Data\..\..\..\", "DBA.accdb");
            string QueryText = "INSERT INTO ImageMessages (GroupID, UserID, PostDate, ImageData, FileExt) VALUES (@GroupID, @UserID, @PostDate, @ImageData, @FileExt)";

            connect.Open();
            using (OleDbCommand command = new OleDbCommand(QueryText))
            {
                try
                {
                    OleDbDataAdapter da = new OleDbDataAdapter("INSERT INTO Users", connect);
                    command.Connection = connect;
                    command.Parameters.AddWithValue("@GroupID", groupID);
                    command.Parameters.AddWithValue("@UserID", message.UserID);
                    command.Parameters.AddWithValue("@PostDate", message.PostDate.ToString());
                    command.Parameters.AddWithValue("@ImageData", Convert.ToBase64String(message.ImageData));
                    command.Parameters.AddWithValue("@FileExt", message.FileExtension);

                    command.ExecuteNonQuery();
                    connect.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    connect.Close();
                }
            }
        }
Пример #2
0
        //Determines what the server should do given a message.
        private void HandleClientMessage(Message mes, ClientConnection cc)
        {
            DatabaseHelper.mut.WaitOne();
            if (mes is TextMessage)
            {
                TextMessage textMessage = (TextMessage)mes;
                DatabaseHelper.InsertTextMessage(textMessage, group.GroupID);
                parentForm.Log("Text Message from " + textMessage.UserID + ": " + textMessage.Content);
            }
            else if (mes is ImageMessage)
            {
                ImageMessage img = (ImageMessage)mes;
                DatabaseHelper.InsertImageMessage(img, group.GroupID);
                parentForm.Log("Image Message from " + img.UserID);
            }
            else if (mes is CommandMessage)
            {
                CommandMessage command = (CommandMessage)mes;

                if (command.type == CommandType.ValidateAttempt)
                {
                    CmdValidateAttempt(command, cc);
                }
                else if (command.type == CommandType.Ping)
                {
                    parentForm.Log(command.content.ToString());
                    cc.userID = mes.UserID;
                }
                else if (command.type == CommandType.RequestMessages)
                {
                    CmdReturnMessages(command, cc);
                }
                else if (command.type == CommandType.SetDisplayName)
                {
                    var userToChange = DatabaseHelper.SelectUserById(command.UserID);
                    if (userToChange != null)
                    {
                        userToChange.Alias = command.content.ToString();
                        DatabaseHelper.UpdateUser(userToChange);
                    }
                }
                else if (command.type == CommandType.GetGroupAnnouncements)
                {
                    string         content = DatabaseHelper.SelectAnnouncement(group.GroupID);
                    CommandMessage cmd     = new CommandMessage(-1, "server", CommandType.GetGroupAnnouncements, content);
                    SendToClient(cmd, cc);
                }
                if (group.Moderators.Contains(command.UserID) || group.Owner == command.UserID)
                {
                    if (command.type == CommandType.Ban)
                    {
                        var userToBan = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID);
                        if (userToBan != null)
                        {
                            ClientConnection clientToBan = null;
                            foreach (var client in clients)
                            {
                                if (client.userID == userToBan.UserID)
                                {
                                    clientToBan = client;
                                }
                            }
                            if (clientToBan != null)
                            {
                                clientToBan.TcpC.Close();
                                clientToBan.ListeningThread.Abort();
                                clients.Remove(clientToBan);
                            }
                        }
                    }
                    else if (command.type == CommandType.SetGroupAnnouncements)
                    {
                        DatabaseHelper.InsertAnnouncement(command.content.ToString(), group.GroupID);
                    }
                    else if (command.type == CommandType.DeleteMessage)
                    {
                        DatabaseHelper.DeleteMessage(int.Parse(command.content.ToString()));
                    }
                }
                if (group.Owner == command.UserID)
                {
                    if (command.type == CommandType.Lock)
                    {
                        group.IsLocked = bool.Parse(command.content.ToString());
                        DatabaseHelper.UpdateGroup(group);
                    }
                    else if (command.type == CommandType.Promote)
                    {
                        var userToPromote = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID);
                        if (userToPromote != null && !group.Moderators.Contains(userToPromote.UserID))
                        {
                            group.Moderators.Add(userToPromote.UserID);
                            DatabaseHelper.UpdateGroup(group);
                        }
                    }
                    else if (command.type == CommandType.Demote)
                    {
                        var userToDemote = DatabaseHelper.SelectUser(command.content.ToString(), group.GroupID);
                        if (userToDemote != null)
                        {
                            group.Moderators.Remove(userToDemote.UserID);
                            DatabaseHelper.UpdateGroup(group);
                        }
                    }
                    else if (command.type == CommandType.SetPassword)
                    {
                        group.Password = command.content.ToString();
                        DatabaseHelper.UpdateGroup(group);
                    }
                }
            }
            DatabaseHelper.mut.ReleaseMutex();
        }
Пример #3
0
        public void SendImage(byte[] imageData, string fileExtension)
        {
            ImageMessage img = new ImageMessage(user.UserID, user.Alias, imageData, fileExtension);

            SendToServer(img);
        }