Пример #1
0
        public static ResponsePacket CreateGroup(string login, string pass, string leaderID)
        {
            ResponsePacket packet = new ResponsePacket();

            if (CheckExists("Groups", "login", login))
            {
                Server.PrintMessage($"{leaderID} id failed to create group {login}. Login already exists", ConsoleColor.Yellow);
                packet.Code = ResponseCode.GroupCreate_Fail_LoginExists;
                return(packet);
            }
            else
            {
                try
                {
                    string query = $"INSERT INTO Groups(login, password, leader_id) VALUES('{login}', '{pass}', {leaderID})";
                    command = new SQLiteCommand(query, connection);
                    command.ExecuteNonQuery();

                    query   = $"SELECT id FROM Groups WHERE login='******' AND leader_id={leaderID}";
                    command = new SQLiteCommand(query, connection);
                    SQLiteDataReader reader = command.ExecuteReader();

                    int groupID = 0;
                    while (reader.Read())
                    {
                        groupID = reader.GetInt32(0);
                    }

                    query   = $"INSERT INTO GroupMembers(group_id, account_id) VALUES({groupID}, {leaderID})";
                    command = new SQLiteCommand(query, connection);
                    command.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Server.PrintMessage($"{leaderID} id ERROR CREATE GROUP\n{ex.Message}", ConsoleColor.Red);
                    packet.Code = ResponseCode.GroupCreate_Fail_Unknown;
                    return(packet);
                }
                Server.PrintMessage($"{leaderID} id has created group {login}", ConsoleColor.White);
                packet.Code = ResponseCode.GroupCreate_Success;
                return(packet);
            }
        }
Пример #2
0
        public static ResponsePacket RegisterAccount(string username, string email, string pass, string ip)
        {
            ResponsePacket packet = new ResponsePacket();
            string         query  = "INSERT INTO Accounts(username, email, password, reg_date, reg_ip) " +
                                    $"VALUES ('{username}', '{email}', '{pass}', '{DateTime.Now.ToString()}', '{ip}')";

            command = new SQLiteCommand(query, connection);

            try
            {
                int result = command.ExecuteNonQuery();
            }
            catch (SQLiteException ex)
            {
                Console.WriteLine(ex.Message);
                if (ex.Message.Contains("UNIQUE"))
                {
                    if (ex.Message.Contains("Accounts.email"))
                    {
                        packet.Code = ResponseCode.Register_Fail_EmailExists;
                    }
                    else if (ex.Message.Contains("Accounts.username"))
                    {
                        packet.Code = ResponseCode.Register_Fail_UsernameExists;
                    }
                    return(packet);
                }
                else
                {
                    Server.PrintMessage($"REGISTER ERROR FROM {username}({ip})\n{ex.Message}", ConsoleColor.Red);
                    packet.Code = ResponseCode.Register_Fail_Unknown;
                    return(packet);
                }
            }
            Server.PrintMessage($"{username} registered with email {email} FROM {ip}", ConsoleColor.White);
            packet.Code = ResponseCode.Register_Success;

            return(packet);
        }
Пример #3
0
        public static ResponsePacket GetGroupInfo(string acc_id, string groupName)
        {
            string         users       = string.Empty;
            string         boldedDates = string.Empty;
            string         events      = string.Empty;
            ResponsePacket packet      = new ResponsePacket();

            try
            {
                string groupId = GetField("Groups", "id", "login", groupName);

                string exists = "SELECT account_id FROM GroupMembers WHERE group_id=" + groupId;
                command = new SQLiteCommand(exists, connection);
                SQLiteDataReader reader = command.ExecuteReader();
                bool             ex     = false;
                while (reader.Read())
                {
                    if (reader.GetInt32(0).ToString() == acc_id)
                    {
                        ex = true;
                    }
                }

                if (ex)
                {
                    // Users
                    string query = $"SELECT account_id FROM GroupMembers WHERE group_id={groupId}";
                    command = new SQLiteCommand(query, connection);

                    reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        users += GetField("Accounts", "username", "id", reader.GetInt32(0).ToString()) + "&";
                    }
                    users = users.TrimEnd('&');



                    // BoldedDates

                    query   = $"SELECT date, description FROM BoldedDates WHERE group_id={groupId}";
                    command = new SQLiteCommand(query, connection);
                    reader  = command.ExecuteReader();

                    while (reader.Read())
                    {
                        //login^description^date&login^descr^date&...
                        boldedDates += $"{reader.GetString(0)}^{reader.GetString(1)}&";
                    }
                    boldedDates = boldedDates.TrimEnd('&');



                    // Events

                    query   = $"SELECT event_text FROM GroupEvents WHERE group_id={groupId} ORDER BY id DESC LIMIT 25";
                    command = new SQLiteCommand(query, connection);
                    reader  = command.ExecuteReader();

                    while (reader.Read())
                    {
                        events += reader.GetString(0) + "&";
                    }
                    events = events.TrimEnd('&');


                    packet.Code  = ResponseCode.GroupInfo;
                    packet.Extra = $"{users}\n{boldedDates}\n{events}";
                }
                else
                {
                    packet.Code  = ResponseCode.GroupInfo;
                    packet.Extra = "";
                }
            }
            catch (Exception ex)
            {
                Server.PrintMessage($"ERROR GET GROUP INFO FROM {acc_id} of {groupName}\n{ex.Message}", ConsoleColor.Red);
            }
            return(packet);
        }
Пример #4
0
        public static ResponsePacket LoginAccount(string email, string pass, string ip)
        {
            ResponsePacket packet = new ResponsePacket();
            string         query  = $"SELECT * FROM Accounts WHERE email='{email}' AND password='******'";

            command = new SQLiteCommand(query, connection);
            SQLiteDataReader reader;

            try
            {
                reader = command.ExecuteReader();
            }
            catch (Exception ex)
            {
                Server.PrintMessage($"Login error from {email}({ip})", ConsoleColor.Red);
                Server.PrintMessage(ex.Message, ConsoleColor.Red);
                packet.Code = ResponseCode.Login_Fail_Unknown;
                return(packet);
            }

            try
            {
                if (reader.HasRows)
                {
                    int sessionID = -1;
                    while (reader.Read())
                    {
                        if (CheckAccountBan(reader["id"].ToString()) == true)
                        {
                            Server.PrintMessage($"{reader["username"]} failed to login. Account banned.", ConsoleColor.Yellow);
                            packet.Code  = ResponseCode.Login_Fail_AccoundBanned;
                            packet.Extra = GetAccountBanInfo(reader["id"].ToString());
                            return(packet);
                        }

                        sessionID = StartSession(reader["id"].ToString(), ip);
                        if (sessionID == -1)
                        {
                            packet.Code = ResponseCode.Login_Fail_SessionAlreadyExists;
                            return(packet);
                        }
                    }

                    packet.Code = ResponseCode.Login_Success;
                    string username = GetField("Accounts", "username", "email", email);
                    packet.Extra = $"{sessionID}&{username}";
                    Server.PrintMessage($"{username} logged in. Session id: {sessionID}", ConsoleColor.White);

                    return(packet);
                }
                else
                {
                    Server.PrintMessage($"Login fail from {email}({ip}). Incorrect data", ConsoleColor.Yellow);
                    packet.Code = ResponseCode.Login_Fail_IncorrectData;
                    return(packet);
                }
            }
            catch (Exception ex)
            {
                Server.PrintMessage($"ERROR LOGIN FROM {reader["username"]}\n{ex.Message}", ConsoleColor.Red);
                packet.Code = ResponseCode.Login_Fail_Unknown;
                return(packet);
            }
        }