Exemplo n.º 1
0
        public bool Login(string userName, string password)
        {
            var result = false;
            var user   = _userDal.FirstOrDefaultEntity(a => a.UserName == userName && a.Password == password);

            if (user == null)
            {
                // fail
                return(false);
            }
            result = true;
            SessionOp.AddSession(user);
            return(true);
        }
Exemplo n.º 2
0
        public Packet(byte[] input, int offset, int dataLength)
        {
            // Get the opcode.
            OpCode = (SessionOp)input.NetU16(offset);
            var localOffset = sizeof(ushort);

            // If this is a single packet, get the sequence # too.
            if (SessionOp.Single == OpCode)
            {
                Sequence     = input.NetU16(offset);
                localOffset += sizeof(ushort);
            }

            if (dataLength <= localOffset)
            {
                return;
            }

            Data = new byte[dataLength - localOffset];
            Buffer.BlockCopy(input, offset + localOffset, Data, 0, Data.Length);
        }
 internal static extern int SetQueryNetSessionCount(SessionOp sessionOp);
 internal static extern int SetQueryNetSessionCount(SessionOp sessionOp);        
Exemplo n.º 5
0
 public Packet(SessionOp opcode, byte[] data, bool bare = false) : this((ushort)opcode, data, bare)
 {
 }
Exemplo n.º 6
0
        protected override void DoWork()
        {
            Packet recievedPacket;

            int recievedCount = 0;

            SocketError error;

            recievedPacket = new Packet(496);
            recievedCount  = Socket.Receive(recievedPacket.Data, 0, MaxMessageSize, SocketFlags.None, out error);


            if (error != SocketError.Success)
            {
                _logger.Error("Socket Error: {0}", error);
            }


            if (error == SocketError.ConnectionReset)
            {
                Session.Command = SessionCommand.Disconnect;
                _exit           = true;
            }
            else if (error == SocketError.Interrupted) //we closed the socket
            {
                return;
            }

            if (recievedCount > MaxMessageSize || recievedCount == 0)
            {
                _logger.Warn("Recieved count ({0}) larger than max packet size", recievedCount);
                return;
            }

            recievedPacket.Reset();
            recievedPacket.Size = recievedCount;

            byte      packetTypeLow  = recievedPacket.PeekByte();
            UInt16    packetType     = recievedPacket.PeekUInt16();
            SessionOp packetTypeEnum = recievedPacket.PacetTypeEnum;

            if (packetType > 0x00ff && (packetType & 0x00ff) == 0)
            {
                switch (packetTypeEnum)
                {
                case SessionOp.Disconnect:
                case SessionOp.DataAck1:
                case SessionOp.DataAck2:
                case SessionOp.DataAck3:
                case SessionOp.DataAck4:
                case SessionOp.DataOrder1:
                case SessionOp.DataOrder2:
                case SessionOp.DataOrder3:
                case SessionOp.DataOrder4:
                case SessionOp.Ping:
                    _HandleEncryptedPacket(recievedPacket, recievedCount);
                    break;

                case SessionOp.MultiPacket:
                case SessionOp.NetStatRequest:
                case SessionOp.NetStatResponse:
                case SessionOp.DataChannel1:
                case SessionOp.DataChannel2:
                case SessionOp.DataChannel3:
                case SessionOp.DataChannel4:
                case SessionOp.DataFrag1:
                case SessionOp.DataFrag2:
                case SessionOp.DataFrag3:
                case SessionOp.DataFrag4:
                    _HandleCompressedEncryptedPacket(recievedPacket, recievedCount);
                    break;

                case SessionOp.SessionRequest:
                case SessionOp.SessionResponse:
                case SessionOp.FatalError:
                case SessionOp.FatalErrorResponse:
                    Session.HandleSessionPacket(recievedPacket);
                    break;
                }
            }
            else if (packetTypeLow < 0x0d)
            {
                _HandleFastpathPacket(recievedPacket, recievedCount);
            }
            else
            {
                _logger.Warn("Invalid packet type: {0:X}. Type Enum: {1}", packetType, packetTypeEnum);
            }


            Thread.Sleep(WaitTime);
        }