public static IRequest Serialize(byte[] rawRequest)
        {
            if (rawRequest.Length < 1)
            {
                return(null);
            }
            IRequest request;

            switch ((NatPacketType)rawRequest[7])
            {
            case NatPacketType.Init:
                request = new InitRequest(rawRequest);
                break;

            case NatPacketType.AddressCheck:
                request = new AddressRequest(rawRequest);
                break;

            case NatPacketType.NatifyRequest:
                request = new NatifyRequest(rawRequest);
                break;

            case NatPacketType.ConnectAck:
                request = null;
                break;

            case NatPacketType.Report:
                request = new ReportRequest(rawRequest);
                break;

            case NatPacketType.ErtAck:
                request = new ErtAckRequest(rawRequest);
                break;

            default:
                request = null;
                LogWriter.UnknownDataRecieved(rawRequest);
                break;
            }

            if (request == null)
            {
                return(null);
            }

            if (!(bool)request.Parse())
            {
                return(null);
            }

            return(request);
        }
Ejemplo n.º 2
0
        public void ErtTest()
        {
            var rawRequest = new byte[] {
                0xfd, 0xfc, 0x1e, 0x66, 0x6a, 0xb2, 0x03,
                0x03,
                0x00, 0x00, 0x03, 0x09,
                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            var request = new ErtAckRequest(rawRequest);
            var handler = new ErtAckHandler(_client, request);

            handler.Handle();
        }
Ejemplo n.º 3
0
        public void NatifyTest()
        {
            var rawRequest = new byte[] {
                0xfd, 0xfc, 0x1e, 0x66, 0x6a, 0xb2, 0x03,
                0x0c,
                0x00, 0x00, 0x03, 0x09,
                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            var request = new ErtAckRequest(rawRequest);

            request.Parse();
            Assert.Equal(RequestType.NatifyRequest, request.CommandName);
            Assert.Equal((uint)151191552, request.Cookie);
            Assert.Equal(NatClientIndex.GameClient, request.ClientIndex);
            Assert.Equal((byte)0, request.UseGamePort);
            Assert.Equal((byte)3, request.Version);
            Assert.Equal((byte)0, request.UseGamePort);
            Assert.Equal(NatPortType.NN1, request.PortType);
        }
Ejemplo n.º 4
0
 public ErtAckResponse(ErtAckRequest request, EndPoint endPoint) : base(request, endPoint)
 {
     PacketType = NatPacketType.ErtAck;
 }
Ejemplo n.º 5
0
 public ErtAckHandler(ISession session, IRequest request) : base(session, request)
 {
     _request = (ErtAckRequest)request;
 }