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); }
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);
public Packet(SessionOp opcode, byte[] data, bool bare = false) : this((ushort)opcode, data, bare) { }
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); }