Esempio n. 1
0
        public override void Parse()
        {
            base.Parse();
            //if(recv.Length<length)
            //{
            //    return false;
            //}
            CommandName = (RequestType)RawRequest[2];

            byte[] ip = RawRequest.Skip(3).Take(4).ToArray();
            // raw request is in big endian we need to convert it to little endian
            byte[] port = RawRequest.Skip(7).Take(2).Reverse().ToArray();
            //TODO fix for gbrome!!!!!!!!!!!!!!!!!!!
            TargetIPEndPoint = new IPEndPoint(new IPAddress(ip), BitConverter.ToUInt16(port));
        }
        public void Test_LogoutRequestEmptyToken()
        {
            string json = @"{
                'type': 2,
                'data': {
                    'token': 'someInvalidToken',
                }
            }";

            var rawRequest = RawRequest.BuildFromString(json);
            var response   = RequestProcessor.Process(rawRequest);

            Assert.True(response.RequestType == RequestTypes.LogOut);
            Assert.True(response.ReturnCode == ReturnCodes.FailedNotFound);
        }
Esempio n. 3
0
        public void Test_RawRequestBuilder()
        {
            string json       = @"{
                'token': 'daf12f12',
                'type': 2,
                'data': {
                    'login': '******',
                    'pass': '******'
                }
            }";
            var    newRequest = RawRequest.BuildFromString(json);

            Assert.True(newRequest.Token == "daf12f12");
            Assert.True(newRequest.RequestType == 2);
            Assert.True(newRequest.Data.SelectToken("login").Value <string>() == "admin");
        }
Esempio n. 4
0
        public RawResponse StartEngine(RawArg[] args)
        {
            var engine   = GetTestEngine();
            var request  = new RawRequest();
            var response = new RawResponse();

            if (args != null && args.Length > 0)
            {
                request.Args = args;
            }
            if (engine != null)
            {
                var result = engine.Start(request);
                response.BindTo(result);
            }
            return(response);
        }
Esempio n. 5
0
        public override void Parse()
        {
            base.Parse();
            int playerPos, teamPos;
            int playerLenth, teamLength;

            DataPartition = UniSpyEncoding.GetString(RawRequest.Skip(5).ToArray());

            playerPos = DataPartition.IndexOf("player_\0", StringComparison.Ordinal);
            teamPos   = DataPartition.IndexOf("team_t\0", StringComparison.Ordinal);

            if (playerPos != -1 && teamPos != -1)
            {
                ReportType  = HeartBeatReportType.ServerTeamPlayerData;
                playerLenth = teamPos - playerPos;
                teamLength  = DataPartition.Length - teamPos;

                var serverDataStr = DataPartition.Substring(0, playerPos - 4);
                ParseServerData(serverDataStr);
                var playerDataStr = DataPartition.Substring(playerPos - 1, playerLenth - 2);
                ParsePlayerData(playerDataStr);
                var teamDataStr = DataPartition.Substring(teamPos - 1, teamLength);
                ParseTeamData(teamDataStr);
            }
            else if (playerPos != -1)
            {
                //normal heart beat
                ReportType  = HeartBeatReportType.ServerPlayerData;
                playerLenth = DataPartition.Length - playerPos;
                var serverDataStr = DataPartition.Substring(0, playerPos - 4);
                ParseServerData(serverDataStr);
                var playerDataStr = DataPartition.Substring(playerPos - 1, playerLenth);
                ParsePlayerData(playerDataStr);
            }
            else if (playerPos == -1 && teamPos == -1)
            {
                ReportType = HeartBeatReportType.ServerData;
                var serverDataStr = DataPartition;
                ParseServerData(serverDataStr);
            }
            else
            {
                throw new QRException("HeartBeat request is invalid.");
            }
        }
Esempio n. 6
0
        public static RequestResponse Process(RawRequest rawRequest)
        {
            var requestType = RequestBuilder.GetRequestTypeFromRaw(rawRequest);

            if (requestType == RequestTypes.None)
            {
                return(new RequestResponse(RequestTypes.None, ReturnCodes.FailedWrongRequestType));
            }

            int intRequestType = (int)requestType;

            // Auth (1 - 99)
            if (intRequestType >= 1 && intRequestType < 100)
            {
                return(AuthController.Process(rawRequest));
            }

            return(new RequestResponse(requestType, ReturnCodes.FailedEmptyResponse));
        }
Esempio n. 7
0
        public static RequestResponse Process(RawRequest rawRequest)
        {
            var requestType = RequestBuilder.GetRequestTypeFromRaw(rawRequest);

            switch (requestType)
            {
            case RequestTypes.Login:
                return(AuthModule.Login(
                           rawRequest.Data.SelectToken("login").Value <string>() ?? "",
                           rawRequest.Data.SelectToken("pass").Value <string>() ?? ""
                           ));

            case RequestTypes.LogOut:
                return(AuthModule.Logout(
                           rawRequest.Data.SelectToken("token").Value <string>() ?? ""
                           ));

            case RequestTypes.Register:
                return(AuthModule.Register(
                           rawRequest.Data.SelectToken("login").Value <string>() ?? "",
                           rawRequest.Data.SelectToken("pass").Value <string>() ?? "",
                           rawRequest.Data.SelectToken("email").Value <string>() ?? ""
                           ));
            }

            var token  = (string)rawRequest.Data["token"] ?? "";
            int userId = rawRequest.Data.Value <int?>("userId") ?? 0;

            var authMiddleware = AuthMiddleware.IsUserLoggedIn(
                token, userId
                );

            if (authMiddleware.Code != ReturnCodes.Success)
            {
                return(new RequestResponse(requestType, authMiddleware.Code));
            }

            // Next request requires auth

            return(null);
        }
Esempio n. 8
0
        public virtual bool Parse()
        {
            // at most 2 colon character
            // we do not sure about all command
            // so i block this code here
            List <string> dataFrag = new List <string>();

            if (RawRequest.Where(r => r.Equals(':')).Count() > 2)
            {
                return(false);
            }

            int indexOfColon = RawRequest.IndexOf(':');

            string rawRequest = RawRequest;

            if (indexOfColon == 0 && indexOfColon != -1)
            {
                int prefixIndex = rawRequest.IndexOf(' ');
                Prefix     = rawRequest.Substring(indexOfColon, prefixIndex);
                rawRequest = rawRequest.Substring(prefixIndex);
            }

            indexOfColon = rawRequest.IndexOf(':');
            if (indexOfColon != 0 && indexOfColon != -1)
            {
                _longParam = rawRequest.Substring(indexOfColon + 1);
                //reset the request string
                rawRequest = rawRequest.Remove(indexOfColon);
            }

            dataFrag = rawRequest.Trim(' ').Split(' ', StringSplitOptions.RemoveEmptyEntries).ToList();

            CmdName = dataFrag[0];

            if (dataFrag.Count > 1)
            {
                _cmdParams = dataFrag.Skip(1).ToList();
            }
            return(true);
        }
Esempio n. 9
0
        private string readLineFromRawRequest()
        {
            if (rawRequestPos >= RawRequest.Length)
            {
                throw new Exception("RawRequest EOF.");
            }
            var endOfLinePos = RawRequest.IndexOf('\n', rawRequestPos);

            if (endOfLinePos == -1)
            {
                throw new Exception("EOL not found.");
            }
            var startPos = rawRequestPos;

            rawRequestPos = endOfLinePos + 1;
            if (endOfLinePos - 1 >= 0 && RawRequest[endOfLinePos - 1] == '\r')
            {
                endOfLinePos -= 1;
            }
            return(RawRequest.Substring(startPos, endOfLinePos - startPos));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="postmanRequest">The <see cref="RawRequest"/> to build the <see cref="HttpRequestMessage"/> from</param>
        /// <param name="contentType">The override content-type. Defaults to the <see cref="RawRequest"/> Content-Type, if specified</param>
        /// <param name="encoding">Defaults to <see cref="Encoding.UTF8"/>, when null</param>
        /// <returns></returns>
        public static HttpRequestMessage ToHttpRequestMessage(this RawRequest postmanRequest, string?contentType = null, Encoding?encoding = null)
        {
            var requestMessage = new HttpRequestMessage(postmanRequest.Method, postmanRequest.Url);

            contentType = postmanRequest.InferredContentType;

            foreach (var header in postmanRequest.Headers)
            {
                if (header.Key == "Content-Type")
                {
                    contentType = header.Value;
                    break;
                }

                requestMessage.Headers.Add(header.Key, header.Value);
            }

            requestMessage.Content = new StringContent(postmanRequest.Body, encoding, contentType);

            return(requestMessage);
        }
        public void Test_LogoutRequest()
        {
            var    token     = AccessToken.ListAll().First();
            string prevToken = token.token;

            string json = @"{
                'type': 2,
                'data': {
                    'token': '{0}',
                }
            }".Replace("{0}", token.token);

            var rawRequest = RawRequest.BuildFromString(json);
            var response   = RequestProcessor.Process(rawRequest);

            Assert.True(response.RequestType == RequestTypes.LogOut);
            Assert.True(response.ReturnCode == ReturnCodes.Success);

            var updatedToken = AccessToken.Find(token.id);

            Assert.True(updatedToken.token != prevToken);
        }
Esempio n. 12
0
        public override RawResponse Start(RawRequest request)
        {
            var response = new RawResponse();
            var args     = request.ToMap();
            var arg1     = args["Arg1"];
            var arg2     = args["Arg2"];

            if (arg1 == null || arg2 == null)
            {
                response.Succeed         = false;
                response.ProgressMessage = "Lack of parameter.";
            }
            else
            {
                var worker  = new Worker();
                var message = $"{Name} Started {worker.Work().ToString()}, Arg1 = {arg1.Value}, Arg2 = {arg2.Value}";
                Console.WriteLine(message);
                response.Succeed         = true;
                response.ProgressMessage = message;
            }
            return(response);
        }
Esempio n. 13
0
 /// <summary>
 /// Gets the user's IP from a request object
 /// </summary>
 /// <param name="request">The request object</param>
 /// <returns>The user's IP address</returns>
 internal static string GetUserIPAddress(RawRequest request)
 {
     return(request.Form[Settings.GetString("ParameterKeyRequestorUserIp")] ?? ClientDetails.Module.IpAddress());
 }
Esempio n. 14
0
 public override void Parse()
 {
     base.Parse();
     State        = (PreInitState)RawRequest[12];
     TargetCookie = BitConverter.ToUInt32(RawRequest.Skip(13).Take(4).ToArray());
 }
 public void Does_not_serialize_Streams()
 {
     var dto = new RawRequest { Id = 1, RequestStream = new MemoryStream() };
     Serialize(dto, includeXml: false);
 }
 public override void Parse()
 {
     Cookie = BitConverter.ToUInt16(RawRequest.Skip(6).ToArray());
 }
Esempio n. 17
0
 public void Execute(RawRequest request)
 {
     _manager.SendRawRequest(request.Request);
 }
Esempio n. 18
0
 /// <summary>
 /// - costructor -
 /// </summary>
 /// <param name="req">initial request</param>
 public RawResponse(RawRequest req)
 {
     this.Request = req;
 }