private static void ObfuscatePassword(ApiPacket packet) { if (!packet.RequestBody.Contains("grant_type")) { return; } var startPos = packet.RequestBody.IndexOf("&password="******"password") && splitItem.Count() == 2) { pwordLen = splitItem[1].Length; } } var password = packet.RequestBody.Substring(startPos + "&password="******"XXXXX"); }
public static void WriteRequestHeaders(IOwinRequest request, ApiPacket packet) { packet.Verb = request.Method; ObfuscatePassword(packet); packet.RequestUri = request.Uri.AbsoluteUri; packet.RequestHeaders = "{\r\n" + string.Join(Environment.NewLine, request.Headers.Select(kv => "\t" + kv.Key + "=" + string.Join(",", kv.Value))) + "\r\n}"; }
public override void Clear() { var api = new ApiPacket(10, 4); api.Set("sessionid", Id); var response = TcpFrame.Send(api); IsSuccess(response); }
public override void Remove(string key) { var api = new ApiPacket(10, 3); api.Set("sessionid", Id); api.Set("key", key); var response = TcpFrame.Send(api); IsSuccess(response); }
public override void Set(string key, byte[] value) { var api = new ApiPacket(10, 2); api.Set("sessionid", Id); api.Set("key", key); api.Bytes = value; var response = TcpFrame.Send(api); IsSuccess(response); }
public override IEnumerable <string> GetKeys() { var api = new ApiPacket(10, 0); api.Set("sessionid", Id); var response = TcpFrame.Send(api); IsSuccess(response); var _keys = response.Obj == null?Array.Empty <string>() : response.Obj.Split('|').AsEnumerable(); return(_keys); }
public override bool TryGetValue(string key, out byte[] value) { var api = new ApiPacket(10, 1); api.Set("sessionid", Id); api.Set("key", key); var response = TcpFrame.Send(api); IsSuccess(response); value = response.Bytes; return(value != null); }
private ApiResponse <object> GetApiResponse(ApiPacketRequest apr, List <object> list, long totalRecord) { ApiResponse <object> returnObject = new ApiResponse <object>(); ApiPacket <object> fp = new ApiPacket <object>() { PacketList = list }; ApiResponse <object> response = new ApiResponse <object>() { Success = list != null ? true : false, ApiPacket = fp, PageNo = apr.PageNo, PageSize = apr.PageSize, TotalRecord = totalRecord, Message = list != null ? "Record Fetched successfully." : "Record Fetched fail.", Status = list != null ? 200 : 400 }; Tools.CopyClass(returnObject.ApiPacket, fp); Tools.CopyClass(returnObject, response); returnObject.ApiPacket.PacketList = new List <object>(); returnObject.ApiPacket.PacketList.AddRange(list); return(returnObject); }
public ApiResponse <Object> GetPacketByUserId(ApiPacketRequest apr) { ApiResponse <Object> returnObject = new ApiResponse <Object>(); List <object> obj = new List <object>(); switch (apr.TableName) { case "Login": { UsersLogin query = JsonConvert.DeserializeObject <UsersLogin>(apr.ApiPacket.Packet.ToString()); var result = new AspNetUsers().Login(query); ApiPacket <LoginResponse> fp = new ApiPacket <LoginResponse>() { Packet = new LoginResponse() }; if (result != null) { returnObject.ApiPacket.Packet = new LoginResponse() { UserInfo = result.UserInfo /*, BlockInfo = result.BlockInfo ServicePoint = result.ServicePoint, GeoLocation = result.GeoLocation*/ }; } ApiResponse <LoginResponse> response = new ApiResponse <LoginResponse>() { Success = result != null ? true : false, ApiPacket = fp, PageNo = apr.PageNo, PageSize = apr.PageSize, TotalRecord = 0, Message = result != null ? "Login successfully." : "Invalid Username or Password", Status = result != null ? 200 : 400 }; Tools.CopyClass(returnObject, response); break; //return returnObject; } case "UserGeo": { var result = new PermittedGeoLocation().GetPermittedGeoLocation(new PermittedGeoLocationRM { UserId = apr.UserId });; ApiPacket <PermittedGeoLocationViewModels> fp = new ApiPacket <PermittedGeoLocationViewModels>() { Packet = new PermittedGeoLocationViewModels() }; if (result != null) { returnObject.ApiPacket.Packet = new PermittedGeoLocationViewModels() { District = result.District, Upazila = result.Upazila, Unions = result.Unions, Village = result.Village, CenterInfo = result.CenterInfo, CampInfo = result.CampInfo }; } ApiResponse <PermittedGeoLocationViewModels> response = new ApiResponse <PermittedGeoLocationViewModels>() { Success = result != null ? true : false, ApiPacket = fp, PageNo = apr.PageNo, PageSize = apr.PageSize, TotalRecord = 0, Message = result != null ? "Record Fetched successfully." : "Record Fetched fail.", Status = result != null ? 200 : 400 }; Tools.CopyClass(returnObject, response); break; } case "UniqueId": { var requestObject = JsonConvert.DeserializeObject <RequestForUniqueId>(apr.ApiPacket.Packet.ToString()); var result = new UniqueId().SaveAndGet(requestObject ?? new RequestForUniqueId(), apr.UserId); returnObject = GetApiResponse(apr, result.ToList <object>(), result.Count); break; } case "SpinnerData": { var spinnerRequest = JsonConvert.DeserializeObject <SpinnerRequest>(apr.ApiPacket.Packet.ToString()); SpinnerData spinner = new SpinnerData(); var result = spinner.APIGetSpinnerData(QueryFromAPIPacketRequest(apr), spinnerRequest); obj.AddRange(result); returnObject = GetApiResponse(apr, obj, apr.TotalRecord != 0 ? spinner.APIGetTotalRecord(QueryFromAPIPacketRequest(apr), spinnerRequest) : apr.TotalRecord); break; } case "BlockInfo": { var requestObject = new ForApiResponse() { UserId = apr.UserId }; BlockInfo blockinfo = new BlockInfo(); var result = blockinfo.APIGetBlockList(requestObject); obj.AddRange(result); returnObject = GetApiResponse(apr, result.ToList <object>(), result.Count); break; } default: { ApiResponse <object> response = new ApiResponse <object>() { Success = false, ApiPacket = null, PageNo = apr.PageNo, PageSize = apr.PageSize, TotalRecord = 0, Message = "Table is not registered to System", Status = 400 }; return(response); } } return(returnObject); }
public static void Main(string[] args) { //Console.BackgroundColor = ConsoleColor.Cyan; //Console.ForegroundColor = ConsoleColor.White; TcpEventQueue.OnInterceptor(EnServer.SendMsg, true); TcpEventQueue.OnInterceptor(EnServer.Receive, true); TcpEventQueue.OnInterceptor(EnClient.SendMsg, true); TcpEventQueue.OnInterceptor(EnClient.Receive, true); ClientFrame client1 = new(Tool.Sockets.SupportCode.TcpBufferSize.Default, 108, true); //DataTcp.AddDataTcps(Assembly.LoadFrom(@"D:\Nixue工作室\Tool.Net\WebTestApp\bin\Debug\net5.0\WebTestApp.dll")); client1.SetCompleted((a, b, c) => { //Console.WriteLine("\nIP:{0} \t{1} \t{2}", a, b, c.ToString("yyyy/MM/dd HH:mm:ss:fffffff")); if (b == Tool.Sockets.SupportCode.EnClient.Connect) //|| b == Tool.Sockets.SupportCode.EnClient.Receive) { //Cstest(); //var data = new ApiPacket(1, 102); //int c2 = ++c1; //data.Set("a", c2); //data.Set("path", StringExtension.GetGuid() + ".jpg"); //data.Bytes = System.IO.File.ReadAllBytes(@"C:\Users\Administrator\Downloads\3cd107e4ec103f614b6f7f1eca9e18e6.jpeg"); ////var mag = client.Send(data); ////Console.WriteLine("请求结果:{0},{1},{2} \t{3}", mag.Obj, mag.OnTcpFrame, c.ToString("yyyy/MM/dd HH:mm:ss:fffffff"), ++c1); ////client.SendAsync(data, (a1) => Console.WriteLine("请求结果:{0},{1},{2} \t{3}", a1.Obj, a1.OnTcpFrame, c.ToString("HH:mm:ss:fff"), c2));//, client.LocalPoint //System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); //client.SendAsync(data, (a1) => Console.WriteLine("请求结果:{0},{1} \t{2}ms \t{3}", a1.Obj, a1.OnTcpFrame, stopwatch.ElapsedMilliseconds, c2)); } }); client1.ConnectAsync("127.0.0.1", 444);//127.0.0.1 int c1 = 0; //for (int i = 0; i < 1; i++) //{ ClientFrame client = new(TcpBufferSize.Default, 108, true); client.SetCompleted((a, b, c) => { Console.WriteLine("\nIP:{0} \t{1} \t{2}", a, b, c.ToString("yyyy/MM/dd HH:mm:ss:fffffff")); if (b == EnClient.Connect) //|| b == Tool.Sockets.SupportCode.EnClient.Receive) { Cstest(); //var data = new ApiPacket(1, 102); //int c2 = ++c1; //data.Set("a", c2); //data.Set("path", StringExtension.GetGuid() + ".jpg"); //data.Bytes = System.IO.File.ReadAllBytes(@"C:\Users\Administrator\Downloads\3cd107e4ec103f614b6f7f1eca9e18e6.jpeg"); ////var mag = client.Send(data); ////Console.WriteLine("请求结果:{0},{1},{2} \t{3}", mag.Obj, mag.OnTcpFrame, c.ToString("yyyy/MM/dd HH:mm:ss:fffffff"), ++c1); ////client.SendAsync(data, (a1) => Console.WriteLine("请求结果:{0},{1},{2} \t{3}", a1.Obj, a1.OnTcpFrame, c.ToString("HH:mm:ss:fff"), c2));//, client.LocalPoint //System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); //client.SendAsync(data, (a1) => Console.WriteLine("请求结果:{0},{1} \t{2}ms \t{3}", a1.Obj, a1.OnTcpFrame, stopwatch.ElapsedMilliseconds, c2)); } }); client.ConnectAsync("127.0.0.1", 444);//120.79.58.17 client.AddKeepAlive(5); //} void Cstest() { Task.Run(() => { var data = new ApiPacket(1, 102); //data.Set("a", c2); data.Set("path", StringExtension.GetGuid() + ".jpg"); System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); while (true) { int c2 = ++c1; stopwatch.Restart(); try { data.Bytes = System.IO.File.ReadAllBytes("3cd107e4ec103f614b6f7f1eca9e18e6.jpeg"); } catch (Exception) { data.Bytes = new byte[] { 1, 0, 1 }; } //client.SendAsync(data, (a1) => //{ // Console.WriteLine("请求结果:{0},{1} \t{2}ms \t{3}", a1.Obj, a1.OnTcpFrame, stopwatch.ElapsedMilliseconds, c2); //});var mag = client.Send( data); // //var mag = client.SendIpIdea(client1.LocalPoint, data); var mag = client.Send(data); Console.WriteLine("请求结果:{0},{1} \t{2}ms \t{3}", mag.Text, mag.OnTcpFrame, stopwatch.Elapsed.TotalMilliseconds, c2); System.Threading.Thread.Sleep(5 * 200); //break; } }); } ServerFrame server = new(108); server.SetCompleted((a, b, c) => { Console.WriteLine("IP:{0} \t{1} \t{2}", a, b, c.ToString("yyyy/MM/dd HH:mm:ss:fffffff")); }); server.StartAsync("127.0.0.1", 444); Console.ReadLine(); System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); long cot = 0; while (true) { stopwatch.Restart(); //Console.Write("输入参数:"); //string str = Console.ReadLine(); //if (string.IsNullOrWhiteSpace(str)) { Console.WriteLine(); continue; } var data = new ApiPacket(1, 100, 100); data.Set("a", cot++); var mag = client.Send(data); //client.SendAsync(data).ContinueWith(s => //{ // var mag = s.Result; // Console.WriteLine("\n请求结果:{0},{1} \t{2}ms", mag.Text, mag.OnTcpFrame, stopwatch.Elapsed.TotalMilliseconds); //}); Console.WriteLine("请求结果:{0},{1} \t{2}ms", mag.Text, mag.OnTcpFrame, stopwatch.Elapsed.TotalMilliseconds); if (cot == 100) { break; } } Console.ReadLine(); }
public override async Task Invoke(IOwinContext context) { //Don't log if the isLoggingEnabled = false or Swagger requests. if (!_isLoggingEnabled || context.Request.Uri.AbsoluteUri.ToLower().Contains("localhost")) { //skip the middleware logger await _next.Invoke(context); return; } //public async Task Invoke(IDictionary<string, object> environment) //{ // IOwinContext context = new OwinContext(environment); // Get the identity var identity = (context.Request.User != null && context.Request.User.Identity.IsAuthenticated) ? context.Request.User.Identity.Name : "(anonymous)"; // Buffer the request (body is a string, we can use this to log the request later var requestBody = new StreamReader(context.Request.Body).ReadToEnd(); var requestData = Encoding.UTF8.GetBytes(requestBody); context.Request.Body = new MemoryStream(requestData); var apiPacket = new ApiPacket { CallerIdentity = identity, RequestBody = requestBody, RequestLength = context.Request.Body.Length, RequestTimestamp = DateTime.Now // HttpContext.Current.Timestamp }; var replayId = LoggingHelper.GetReplayId(requestBody); if (replayId != 0) { apiPacket.ReplayId = replayId; } apiPacket.CallerIdentity = SplitRequestBody(requestBody, "username"); // Buffer the response var responseBuffer = new MemoryStream(); var responseStream = context.Response.Body; context.Response.Body = responseBuffer; // add the "http-correlation-id" response header so the user can correlate back to this entry var responseHeaders = (IDictionary <string, string[]>)context.Environment["owin.ResponseHeaders"]; //responseHeaders["http-correlation-id"] = new[] { apiPacket.CorrelationId.ToString("d") }; await _next.Invoke(context); responseBuffer.Seek(0, SeekOrigin.Begin); var reader = new StreamReader(responseBuffer); apiPacket.Response = await reader.ReadToEndAsync(); //If you need code to check for a specific request and modify the associated response //if (context.Request.Path.Value == @"/token") //{ // responseBuffer.Seek(0, SeekOrigin.Begin); // var reader = new StreamReader(responseBuffer); // apiPacket.Response = await reader.ReadToEndAsync(); // JObject jResp = JObject.Parse(apiPacket.Response); // JObject jUserGuid = JObject.Parse(@"{'UserGuid':'PutUseGuidValueHere'}"); // jResp.Add("UserGuid", JToken.FromObject("UserGuidValue")); // apiPacket.Response = jResp.ToString(); // var writeStream = new MemoryStream(); // StreamWriter writer = new StreamWriter(writeStream); // writer.Write(apiPacket.Response); // writer.Flush(); // writeStream.Position = 0; // responseBuffer.Seek(0, SeekOrigin.Begin); // writeStream.CopyTo(responseBuffer); //} //context.Response.Body = responseBuffer; apiPacket.ResponseLength = context.Response.ContentLength ?? 0; apiPacket.Duration = (DateTime.Now - apiPacket.RequestTimestamp).TotalSeconds; //Make sure that user and the user identity is not null and that claims is not null before you look for the CorrelationId and AdUserName //or you will get a null ref error string trackingId; if (((ClaimsIdentity)context.Authentication.User?.Identity)?.Claims.FirstOrDefault() != null) { if (context.Authentication.User != null) { trackingId = ((ClaimsIdentity)context.Authentication.User.Identity).Claims.FirstOrDefault(x => x.Type.ToUpper() == "SFCORRELATIONID")?.Value; Guid.TryParse(trackingId, out Guid trackGuid); apiPacket.CorrelationId = trackGuid; apiPacket.CallerIdentity = ((ClaimsIdentity)context.Authentication.User.Identity).Claims.FirstOrDefault(x => x.Type.ToUpper() == "SFADUSERNAME")?.Value; } context.Environment.TryGetValue("owin.CallCancelled", out var cancellation); if (cancellation != null) { var token = (CancellationToken)cancellation; if (token.IsCancellationRequested == false) { responseHeaders["http-correlation-id"] = new[] { apiPacket.CorrelationId.ToString("d") } } ; } } else if (responseHeaders != null && responseHeaders.ContainsKey("http-correlation-id") && responseHeaders["http-correlation-id"].FirstOrDefault() != Guid.Empty.ToString()) { trackingId = responseHeaders["http-correlation-id"].FirstOrDefault(); Guid.TryParse(trackingId, out Guid trackGuid); apiPacket.CorrelationId = trackGuid; } WriteRequestHeaders(context.Request, apiPacket); WriteResponseHeaders(context.Response, apiPacket); _logThisError = apiPacket.StatusCode != (int)HttpStatusCode.OK; try { //Persist the ApiPacket in the database ignore any logging errors ex: (System.Web.HttpException (0x80004005): Server cannot append header after HTTP headers have been sent. await _httpLoggerRepository.InsertApiPacketAsync(_isLoggingEnabled, apiPacket, _logThisError); } finally { // You need to do the following so that the buffered response is flushed out to the client application. responseBuffer.Seek(0, SeekOrigin.Begin); await responseBuffer.CopyToAsync(responseStream); } }
private static void WriteResponseHeaders(IOwinResponse response, ApiPacket packet) { packet.StatusCode = response.StatusCode; packet.ReasonPhrase = response.ReasonPhrase; packet.ResponseHeaders = "{\r\n" + string.Join(Environment.NewLine, response.Headers.Select(kv => "\t" + kv.Key + "=" + string.Join(",", kv.Value))) + "\r\n}"; }