Esempio n. 1
0
        private static void ClientRead(Server server, Client client, IPacket packet)
        {
            if (client.Value.IsFlooding())
                client.Disconnect();

            Type packetType = packet.GetType();

            if (client.Value.Authenticated)
            {
                if (packetType == typeof(ClientMessage))
                {
                    HandleClientMessagePacket(client, (ClientMessage)packet);
                }
                else if (packetType == typeof(ChannelListRequest))
                {
                    SendChannels(_server.Clients);
                }
                else if (packetType == typeof(ChangeChannel))
                {
                    HandleChangeChannelPacket(client, (ChangeChannel)packet);
                }
                else if (packetType == typeof(Suggestion))
                {
                    HandleSuggestionPacket(client, (Suggestion)packet);
                }
                else if (packetType == typeof(PrivateMessagesRequest))
                {
                    HandlePrivateMessagesRequestPacket(client);
                }
                else if (packetType == typeof(KeepAlive))
                {
                    HandleKeepAlivePacket(client);
                }
            }
            else
            {
                if (packetType == typeof(Register))
                {
                    HandleRegisterPacket(client, (Register)packet);
                }
                else if (packetType == typeof(Login))
                {
                    HandleLoginPacket(client, (Login)packet);
                }
            }
        }
Esempio n. 2
0
        private static void Main(string[] args)
        {
            Accessor.ConnectionString =
            #if DEBUG //Debugging on your own computer, using your own MsSQL database.
             @"Data Source=Banksy-PC\SQLEXPRESS;Initial Catalog=aux2;Persist Security Info=True;User ID=auxilium;Password=123456";
            #else //Release version, for your server's MsSQL database.
             @"Data Source=WIN-2OAHGBMYAML\SQLEXPRESS;Initial Catalog=aux2;User ID=auxilium;Password=123456";
            #endif

            Channel[] channels = Accessor.GetChannels();
            foreach (Channel channel in channels)
                _recentMessages.Add(channel.Id, new List<BroadcastMessage>());

            _server = new Server
            {
                BufferSize = 8192,
                MaxConnections = 5000,
                SingleInstanceClients = true
            };

            _server.AddTypesToSerializer(typeof(IPacket), new Type[]
            {
                typeof(Initialize), typeof(KeepAlive),
                typeof(Login), typeof(LoginResponse),
                typeof(Register), typeof(RegisterResponse),
                typeof(ChannelListRequest), typeof(ChannelList), typeof(ChangeChannel),
                typeof(ClientMessage), typeof(BroadcastMessage),
                typeof(Suggestion), typeof(SuggestionResponse),
                typeof(PrivateMessage), typeof(PrivateMessageCountRequest), typeof(PrivateMessagesRequest)
            });

            _server.ClientRead += ClientRead;
            _server.ClientState += ClientState;

            _server.Listen(35);

            _chatMonitor = new System.Threading.Timer(Monitor, null, 1000, 240000); //240,000 = 4 Minutes

            Application.Run();
        }
Esempio n. 3
0
        private static void ClientState(Server server, Client client, bool connected)
        {
            Console.WriteLine("{0}connected", connected ? "" : "dis");
            if (connected)
            {
                client.Value = new UserState();

                new Initialize(HashAlrogithm).Execute(client);
            }
            else
            {
                HandleClientDisconnected(client);
                client = null;
            }
        }