Esempio n. 1
0
        private void UserAuthorization(Socket sender, ChatCommand command)
        {
            PackageArgs responsePackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CommandResponse,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, "Invalid login/password" }
                }
            };

            User user;

            if (UserInfoBySocket[sender].UserModel != null)
            {
                responsePackage.Arguments[Argument.Message] = "You already accessed.";
            }
            else if ((user = db.DB_Manager.Authorized(command.Args[0], command.Args[1])) != null)
            {
                UserInfoBySocket[sender].SetUserModel(user);
                responsePackage.Arguments[Argument.Message] = "Welcome " + user.UserName + ".";
            }

            PackageManag.SendPackage(sender, responsePackage, null);
        }
Esempio n. 2
0
        private void CloseUserSocket(Socket userSocket)
        {
            if (UserInfoBySocket.ContainsKey(userSocket))
            {
                string userName = UserInfoBySocket[userSocket].UserName;

                PackageArgs sendPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = Event.User_Left,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.UserName, userName }
                    }
                };

                BroadcastMessage(sendPackage, userSocket);

                AddingMessageQuery.Add(new SystemEvent(userName, false));

                UserInfoBySocket.Remove(userSocket);
                UserInfoByUserName.Remove(userName);
            }

            userSocket.Shutdown(SocketShutdown.Both);
            userSocket.Close();
            Console.WriteLine("User disconnected!");
        }
Esempio n. 3
0
        private void UserSendPM(Socket sender, ChatCommand command)
        {
            string toNickname    = command.Args[0];
            Socket defaultSocket = sender;

            PackageArgs defaultPackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CommandResponse,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, "No any users in chat with nickanme: " + toNickname }
                }
            };

            if (UserInfoByUserName.ContainsKey(toNickname))
            {
                UserInfo toUser = UserInfoByUserName[toNickname];

                defaultPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = Event.New_PM,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.Message, command.Args[1] },
                        { Argument.UserName, UserInfoBySocket[sender].UserName },
                        { Argument.IsPM, true }
                    }
                };
                defaultSocket = toUser.UserSocket;
            }
            PackageManag.SendPackage(defaultSocket, defaultPackage, null);
        }
Esempio n. 4
0
 private void NewMessageEventHandler(PackageArgs package)
 {
     NewMessage?.Invoke(
         package.Arguments[Argument.Message] as string,
         package.Arguments[Argument.UserName] as string,
         (bool)package.Arguments[Argument.IsPM]
         );
 }
Esempio n. 5
0
        public void CalculatePackage(bool useProjectReferences)
        {
            string logFile = QQnPath.Combine(LoggerPath, "QQn.TurtleMSBuild.tbLog");

            if (!File.Exists(logFile))
            {
                BuildInternal();
            }

            TBLogCache logCollection = new TBLogCache(LoggerPath);

            logCollection.LoadAll();

            PackageArgs args = new PackageArgs();

            args.LogCache  = logCollection;
            args.BuildRoot = Path.GetDirectoryName(Solution);
            args.UseProjectDependencies = useProjectReferences;

            args.ProjectsToPackage.AddRange(logCollection.KeysAsFullPaths);

            PackageList newPackages;

            Assert.That(Packager.TryCreatePackages(args, out newPackages), "Created packages");

            Assert.That(newPackages.Count, Is.EqualTo(args.ProjectsToPackage.Count), "All projects packaged");

            if (Directory.Exists("f:\\extractor"))
            {
                Directory.Delete("f:\\extractor", true);
            }

            if (Directory.Exists("f:\\extractor2"))
            {
                Directory.Delete("f:\\extractor2", true);
            }

            if (!Directory.Exists("f:\\extractor"))
            {
                Directory.CreateDirectory("f:\\extractor");
            }
            if (!Directory.Exists("f:\\extractor2"))
            {
                Directory.CreateDirectory("f:\\extractor2");
            }

            foreach (TPack p in newPackages)
            {
                p.ExtractTo("f:\\extractor");
            }

            foreach (TPack p in newPackages)
            {
                p.ExtractTo("f:\\extractor2", true);
            }
        }
Esempio n. 6
0
        private void ActionOnUser(Socket sender, ChatCommand command)
        {
            PackageArgs sendPackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CommandResponse,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, "Invalid username." }
                }
            };

            if (UserInfoBySocket[sender].UserModel == null)
            {
                sendPackage.Arguments[Argument.Message] = "Access denied.";
                PackageManag.SendPackage(sender, sendPackage, null);
            }
            else if (UserInfoByUserName.ContainsKey(command.Args[0]))
            {
                UserInfo   user    = UserInfoByUserName[command.Args[0]];
                IPEndPoint localIP = user.UserSocket.LocalEndPoint as IPEndPoint;

                if (command.ParsedCommand == Command.Ban)
                {
                    db.DB_Manager.AddBlockIP(localIP.Address.ToString(), command.Args[1]);
                }

                sendPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = (command.ParsedCommand == Command.Ban) ? Event.HasBanned : Event.HasKicked,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.Message, command.Args[1] }
                    }
                };

                PackageManag.SendPackage(user.UserSocket, sendPackage, null);

                //PackageArgs broadcastPackage = new PackageArgs()
                //{
                //    PackageType = PackageType.Event,
                //    Event = Event.User_Left,
                //    Arguments = new Dictionary<Argument, object>()
                //    {
                //        { Argument.UserName, user.UserName }
                //    }
                //};

                //BroadcastMessage(broadcastPackage, user.UserSocket);
            }
            else
            {
                PackageManag.SendPackage(sender, sendPackage, null);
            }
        }
Esempio n. 7
0
 private void BroadcastMessage(PackageArgs sendPackage, Socket exeptUser)
 {
     foreach (Socket user in UserInfoBySocket.Keys)
     {
         if (user == exeptUser)
         {
             continue;
         }
         PackageManag.SendPackage(user, sendPackage, null);
     }
 }
Esempio n. 8
0
        public void GetLastMessages(Action <List <ChatMessage> > handler)
        {
            OutHandler = handler;
            PackageArgs package = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.Get_Last_Messages
            };

            PackageManag.SendPackage(Handler, package, null);
        }
Esempio n. 9
0
        public void Disconnect()
        {
            PackageArgs package = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.Exit,
                Arguments   = null
            };

            PackageManag.SendPackage(Handler, package, DisconnectHandler);
        }
Esempio n. 10
0
        private void BanRequest(Socket sender, ChatCommand command)
        {
            PackageArgs sendPackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CommandResponse,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, "Invalid username." }
                }
            };

            if (UserInfoBySocket[sender].UserModel == null)
            {
                sendPackage.Arguments[Argument.Message] = "Access denied.";
                PackageManag.SendPackage(sender, sendPackage, null);
            }
            else if (UserInfoByUserName.ContainsKey(command.Args[0]))
            {
                UserInfo   bannedUser = UserInfoByUserName[command.Args[0]];
                IPEndPoint localIP    = bannedUser.UserSocket.LocalEndPoint as IPEndPoint;

                db.DB_Manager.AddBlockIP(localIP.Address.ToString(), command.Args[1]);

                sendPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = Event.HasBanned,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.Message, command.Args[1] }
                    }
                };

                PackageManag.SendPackage(bannedUser.UserSocket, sendPackage, null);

                PackageArgs broadcastPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = Event.User_Left,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.UserName, bannedUser.UserName }
                    }
                };

                BroadcastMessage(broadcastPackage, bannedUser.UserSocket);
            }
            else
            {
                PackageManag.SendPackage(sender, sendPackage, null);
            }
        }
Esempio n. 11
0
        private void GetLastMessages(Socket sender)
        {
            PackageArgs sendPackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.Get_Last_Messages,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.MessageList, ChatMessages }
                }
            };

            PackageManag.SendPackage(sender, sendPackage, null);
        }
Esempio n. 12
0
        //private void KickRequest(Socket sender, ChatCommand command)
        //{
        //    PackageArgs sendPackage = new PackageArgs()
        //    {
        //        PackageType = PackageType.Command,
        //        Command = Command.CommandResponse,
        //        Arguments = new Dictionary<Argument, object>()
        //            { { Argument.Message, "Invalid username." } }
        //    };

        //    if (UserInfoBySocket[sender].UserModel == null)
        //    {
        //        sendPackage.Arguments[Argument.Message] = "Access denied.";
        //        PackageManag.SendPackage(sender, sendPackage, null);
        //    }
        //    else if (UserInfoByUserName.ContainsKey(command.Args[0]))
        //    {
        //        UserInfo kickedUser = UserInfoByUserName[command.Args[0]];
        //        IPEndPoint localIP = kickedUser.UserSocket.LocalEndPoint as IPEndPoint;

        //        sendPackage = new PackageArgs()
        //        {
        //            PackageType = PackageType.Event,
        //            Event = Event.HasKicked,
        //            Arguments = new Dictionary<Argument, object>()
        //                { { Argument.Message, command.Args[1] } }
        //        };

        //        PackageManag.SendPackage(kickedUser.UserSocket, sendPackage, null);

        //        PackageArgs broadcastPackage = new PackageArgs()
        //        {
        //            PackageType = PackageType.Event,
        //            Event = Event.User_Left,
        //            Arguments = new Dictionary<Argument, object>()
        //            {
        //                { Argument.UserName, kickedUser.UserName }
        //            }
        //        };
        //        BroadcastMessage(broadcastPackage, kickedUser.UserSocket);
        //    }
        //    else
        //    {
        //        PackageManag.SendPackage(sender, sendPackage, null);
        //    }
        //}

        private void InvalidCommand(Socket sender)
        {
            PackageArgs responsePackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CommandResponse,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, "Invalid command or parameters" }
                }
            };

            PackageManag.SendPackage(sender, responsePackage, null);
        }
Esempio n. 13
0
        public void SetNickAndContinue(string nickName)
        {
            PackageArgs package = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.User_Setup,
                Arguments   = new Dictionary <Argument, object>
                {
                    { Argument.UserName, nickName }
                }
            };

            PackageManag.SendPackage(Handler, package, null);
        }
Esempio n. 14
0
        public void SendMessage(string message)
        {
            PackageArgs package = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.Send_Message,
                Arguments   = new Dictionary <Argument, object>
                {
                    { Argument.MessageObj, new UserMessage(LocalID, LocalNickname, message) }
                }
            };

            PackageManag.SendPackage(Handler, package, null);
        }
Esempio n. 15
0
        private void CheckBlockIP(Socket sender, PackageArgs package)
        {
            PackageArgs sendPackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CheckBlockIP,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.IsAdmitted, db.DB_Manager.IPInBlackList
                          (package.Arguments[Argument.IP] as string) }
                }
            };

            PackageManag.SendPackage(sender, sendPackage, null);
        }
Esempio n. 16
0
        public void CheckIP()
        {
            string      ip      = GetIP();
            PackageArgs package = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.CheckBlockIP,
                Arguments   = new Dictionary <Argument, object>
                {
                    { Argument.IP, ip }
                }
            };

            PackageManag.SendPackage(Handler, package, null);
        }
Esempio n. 17
0
        private void ReceiveCallback(Socket user, PackageArgs package)
        {
            if (package.PackageType == PackageType.Event)
            {
                switch (package.Event)
                {
                case (Event.New_Message): NewMessageEventHandler(package); break;

                case (Event.User_Left): UserConnectionAction(
                        package.Arguments[Argument.UserName] as string, false); break; //TEMP

                case (Event.New_User): UserConnectionAction(
                        package.Arguments[Argument.UserName] as string, true); break; //TEMP

                case (Event.New_PM): NewMessageEventHandler(package); break;

                case (Event.HasBanned): HasBanned?.Invoke(package.Arguments
                                                          [Argument.Message] as string); break;

                case (Event.HasKicked): HasKicked?.Invoke(package.Arguments
                                                          [Argument.Message] as string); break;
                }
            }
            else
            {
                switch (package.Command)
                {
                case (Command.User_Setup): SetupResponse(package); break;

                case (Command.Get_Last_Messages): OutHandler?.Invoke
                        (package.Arguments[Argument.MessageList] as List <ChatMessage>); break;

                case (Command.CommandResponse): AuthCommandHasResponsed?.Invoke
                        (package.Arguments[Argument.Message] as string);; break;

                case (Command.CheckBlockIP): CheckBlockIPResponsed?.Invoke
                        ((bool)(package.Arguments[Argument.IsAdmitted])); break;

                default: break;
                }
            }

            if (IsConnected)
            {
                PackageManag.ReceivePackage(Handler, ReceiveCallback);
            }
        }
Esempio n. 18
0
        private void SetupResponse(PackageArgs package)
        {
            bool   result  = (bool)package.Arguments[Argument.IsAdmitted];
            string message = null;

            if (result)
            {
                LocalID       = (int)package.Arguments[Argument.UserID];
                LocalNickname = package.Arguments[Argument.UserName] as string;
            }
            else
            {
                message = package.Arguments[Argument.Message] as string;
            }

            HasAdmitted?.Invoke(result, message);
        }
Esempio n. 19
0
        private void UserSetupHandler(Socket sender, PackageArgs package)
        {
            PackageArgs responsePackage = new PackageArgs()
            {
                PackageType = PackageType.Command,
                Command     = Command.User_Setup,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.IsAdmitted, false }
                }
            };

            string userName = package.Arguments[Argument.UserName] as string;

            if (UserInfoByUserName.ContainsKey(userName))
            {
                responsePackage.Arguments.Add(Argument.Message, "Sorry, but \"" + userName + "\" is already taken...");
            }
            else
            {
                UserInfo userInfo = new UserInfo(UserInfoBySocket.Count, userName, sender);
                UserInfoBySocket.Add(sender, userInfo);
                UserInfoByUserName.Add(userInfo.UserName, userInfo);

                responsePackage.Arguments.Add(Argument.UserID, UserInfoBySocket.Count);
                responsePackage.Arguments.Add(Argument.UserName, userName);
                responsePackage.Arguments[Argument.IsAdmitted] = true;

                PackageArgs sendPackage = new PackageArgs()
                {
                    PackageType = PackageType.Event,
                    Event       = Event.New_User,
                    Arguments   = new Dictionary <Argument, object>()
                    {
                        { Argument.UserName, userName }
                    }
                };

                BroadcastMessage(sendPackage, sender);
                AddingMessageQuery.Add(new SystemEvent(userName, true));
            }
            PackageManag.SendPackage(sender, responsePackage, null);
        }
Esempio n. 20
0
        private void UserSendMeesage(Socket sender, PackageArgs package)
        {
            UserMessage messageObj = (UserMessage)package.Arguments[Argument.MessageObj];

            AddingMessageQuery.Add(messageObj);

            PackageArgs sendPackage = new PackageArgs()
            {
                PackageType = PackageType.Event,
                Event       = Event.New_Message,
                Arguments   = new Dictionary <Argument, object>()
                {
                    { Argument.Message, messageObj.Content },
                    { Argument.UserName, messageObj.UserName },
                    { Argument.IsPM, false }
                }
            };

            BroadcastMessage(sendPackage, sender);
        }
Esempio n. 21
0
        public void ReceiveCallback(Socket user, PackageArgs package)
        {
            Console.WriteLine("New package: " + package.Command.ToString());

            Command     command     = package.Command;
            ChatCommand chatCommand = new ChatCommand();

            if (package.Command == Command.Send_Message)
            {
                chatCommand = ChatCommand.ParseToCommand(
                    ((UserMessage)package.Arguments[Argument.MessageObj]).Content, command);
                command = chatCommand.ParsedCommand;
            }

            switch (command)
            {
            case (Command.User_Setup): UserSetupHandler(user, package); break;

            case (Command.Send_Message): UserSendMeesage(user, package); break;

            case (Command.Get_Last_Messages): GetLastMessages(user); break;

            case (Command.Authorization): UserAuthorization(user, chatCommand); break;

            case (Command.Send_PM): UserSendPM(user, chatCommand); break;

            case (Command.Ban): ActionOnUser(user, chatCommand); break;

            case (Command.Kick): ActionOnUser(user, chatCommand); break;

            case (Command.IvalidCommand): InvalidCommand(user); break;

            case (Command.CheckBlockIP): CheckBlockIP(user, package); break;

            case (Command.Exit): CloseUserSocket(user); return;

            default: Console.WriteLine("Ivalid Package!"); break;
            }

            PackageManag.ReceivePackage(user, ReceiveCallback);
        }