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); }
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"); }
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); }
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."); } }
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)); }
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); }
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); }
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); }
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); }
/// <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()); }
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()); }
public void Execute(RawRequest request) { _manager.SendRawRequest(request.Request); }
/// <summary> /// - costructor - /// </summary> /// <param name="req">initial request</param> public RawResponse(RawRequest req) { this.Request = req; }