public WebApiRaygunRequestMessage(HttpRequestMessage request) { HostName = request.RequestUri.Host; Url = request.RequestUri.AbsolutePath; HttpMethod = request.Method.ToString(); Headers = new Dictionary<string, string>(); foreach (var header in request.Headers) { Headers.Add(header.Key, string.Join(",", header.Value)); } IPAddress = request.GetClientIpAddress(); if (request.Content.Headers.ContentLength.HasValue && request.Content.Headers.ContentLength.Value > 0) { foreach (var header in request.Content.Headers) { Headers.Add(header.Key, string.Join(",", header.Value)); } try { RawData = request.Content.ReadAsStringAsync().Result; } catch (Exception) { } } }
private void LogRequestLoggingInfo(HttpRequestMessage request) { var info = new ApiLoggingInfo { HttpMethod = request.Method.Method, UriAccessed = request.RequestUri.AbsoluteUri, IpAddress = request.GetClientIpAddress(), MessageType = HttpMessageType.Request, LoggingLevel = LoggingLevel.Trace }; ExtractMessageHeadersIntoLoggingInfo(info, request.Headers.ToList()); if (request.Content != null) { request.Content.ReadAsByteArrayAsync() .ContinueWith(task => { info.BodyContent = Encoding.UTF8.GetString(task.Result); _repository.Log(info); }); return; } _repository.Log(info); }
public void GetClientIpAddressForEmptyXForwardedForReturnsNull() { var sut = new HttpRequestMessage(); sut.Headers.Add(ForwardedFor, string.Empty); Assert.Equal(null, sut.GetClientIpAddress()); }
public void GetClientIpAddressForPartiallyMalformedXForwardedForReturnsProperlyFormedClientIp() { var sut = new HttpRequestMessage(); sut.Headers.Add(ForwardedFor, MalformedIpAddress); sut.Headers.Add(ForwardedFor, GoogleIpAddress); sut.Headers.Add(ForwardedFor, MalformedIpAddress); Assert.Equal(GoogleIpAddress, sut.GetClientIpAddress()); }
public void GetClientIpAddressForPublicClientAndMultipleProxiesReturnsPublicClientIp() { var sut = new HttpRequestMessage(); sut.Headers.Add(ForwardedFor, MicrosoftIpAddress); sut.Headers.Add(ForwardedFor, Private16Bit); sut.Headers.Add(ForwardedFor, Private20Bit); sut.Headers.Add(ForwardedFor, Private24Bit); sut.Headers.Add(ForwardedFor, PrivateLinkLocal); Assert.Equal(MicrosoftIpAddress, sut.GetClientIpAddress()); }
protected virtual string GetUserIdentifier(HttpRequestMessage request) { HttpRequestContext ctx = request.GetRequestContext(); if (ctx != null) { // use organization id or user id as the identifier for throttling var principal = request.GetRequestContext().Principal as ExceptionlessPrincipal; if (principal != null) return principal.Project != null ? principal.Project.OrganizationId : principal.UserEntity.Id; } // fallback to using the IP address var ip = request.GetClientIpAddress(); return Settings.Current.WebsiteMode == WebsiteMode.Dev && String.IsNullOrEmpty(ip) ? "127.0.0.1" : ip; }
protected virtual string GetUserIdentifier(HttpRequestMessage request) { HttpRequestContext ctx = request.GetRequestContext(); if (ctx != null) { // use organization id or user id as the identifier for throttling var principal = request.GetRequestContext().Principal as ExceptionlessPrincipal; if (principal != null) return principal.Project != null ? principal.Project.OrganizationId : principal.UserEntity.Id; } // fallback to using the IP address return request.GetClientIpAddress(); }
public void TestGetClientIpAddressFromRemoteEndpointMessage() { var remoteEndpointMessageProperty = new RemoteEndpointMessageProperty("127.0.0.1", 8050); var httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.Properties.Add( "System.ServiceModel.Channels.RemoteEndpointMessageProperty", remoteEndpointMessageProperty); var result = httpRequestMessage.GetClientIpAddress(); Assert.That(result, Is.EqualTo("127.0.0.1")); }
public void TestGetClientIpAddressFromOwinContext() { var owinContextStub = MockRepository.GenerateMock<OwinContext>(); var owinRequest = new OwinRequest { RemoteIpAddress = "127.0.0.1" }; owinContextStub.Stub(x => x.Request).Return(owinRequest).Repeat.Once(); var httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.Properties.Add("MS_OwinContext", owinContextStub); var result = httpRequestMessage.GetClientIpAddress(); Assert.That(result, Is.EqualTo("127.0.0.1")); }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var corrId = string.Format("{0}{1}", DateTime.Now.Ticks, Thread.CurrentThread.ManagedThreadId); var requestInfo = string.Format("{0} {1}", request.Method, request.RequestUri); var _CurrentDateTime = DateTime.Now; var _CurrentIpAddress = request.GetClientIpAddress(); var requestMessage = await request.Content.ReadAsByteArrayAsync(); var reqHeaders = ""; var header = request.Headers; if (header != null) { //for (int i = 0; i < header.Count(); i++) // request += header var _aaa = header.ToArray(); for (int i = 0; i < _aaa.Count(); i++) reqHeaders += _aaa[i].Key + ":" + _aaa[i].Value.FirstOrDefault() + ", "; } var httpStatusCode = ""; byte[] requestBody = null; if (request.Content != null) requestBody = await request.Content.ReadAsByteArrayAsync(); await IncommingMessageAsync(_CurrentIpAddress, _CurrentDateTime, corrId, requestInfo, requestMessage, reqHeaders, httpStatusCode, requestBody); var response = await base.SendAsync(request, cancellationToken); httpStatusCode = (int)response.StatusCode + " " + response.StatusCode.ToString(); byte[] responseMessage; //if (response.IsSuccessStatusCode) // responseMessage = await response.Content.ReadAsByteArrayAsync(); //else byte[] _responseMessageMain = null; if (response.Content != null) _responseMessageMain = await response.Content.ReadAsByteArrayAsync(); responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase); await OutgoingMessageAsync(_CurrentIpAddress, _CurrentDateTime, corrId, requestInfo, responseMessage, reqHeaders, httpStatusCode, requestBody, _responseMessageMain); return response; }
public void TestGetClientIpAddressFromHttpContext() { var httpContextBaseStub = MockRepository.GenerateMock<HttpContextBase>(); var httpRequestBaseStub = MockRepository.GenerateMock<HttpRequestBase>(); httpRequestBaseStub.Stub(x => x.UserHostAddress).Return("127.0.0.1").Repeat.Once(); httpContextBaseStub.Stub(x => x.Request).Return(httpRequestBaseStub).Repeat.Once(); var httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.Properties.Add("MS_HttpContext", httpContextBaseStub); var result = httpRequestMessage.GetClientIpAddress(); Assert.That(result, Is.EqualTo("127.0.0.1")); httpContextBaseStub.VerifyAllExpectations(); httpRequestBaseStub.VerifyAllExpectations(); }
protected virtual string GetUserIdentifier(HttpRequestMessage request) { var authType = request.GetAuthType(); if (authType == AuthType.Token) return request.GetDefaultOrganizationId(); if (authType == AuthType.User) { var user = request.GetUser(); if (user != null) return user.Id; } // fallback to using the IP address var ip = request.GetClientIpAddress(); if (String.IsNullOrEmpty(ip) || ip == "::1") ip = "127.0.0.1"; return ip; }
public void GetClientIpAddressForNullXForwardedForReturnsNull() { var sut = new HttpRequestMessage(); Assert.Equal(null, sut.GetClientIpAddress()); }
protected virtual string GetUserIdentifier(HttpRequestMessage request) { return request.GetClientIpAddress(); }
//override added to support OWIN, as at the time of writing, ThrottlingHandler did not support OWIN host protected override string GetUserIdentifier(HttpRequestMessage request) { var id = request.GetClientIpAddress(); return id; }
public virtual IPAddress GetClientIp(HttpRequestMessage request) { return ParseIp(request.GetClientIpAddress()); }