Пример #1
0
        public LogDetail CreateLogDetail()
        {
            IHttpContextRequest httpRequest = _httpRequest.HttpRequestAccessor();

            if (httpRequest == null)
            {
                return(new LogDetail {
                    CanExtract = false
                });
            }

            return(new LogDetail
            {
                CanExtract = true,
                PageRest = _httpRequest.ExtractUrl(Uripart.Path | Uripart.Query, httpRequest),
                PageRest2 = _httpRequest.ExtractUrl(Uripart.Path | Uripart.Query, httpRequest),
                Page = _httpRequest.ExtractUrl(Uripart.Full, httpRequest),
                Verb = _httpRequest.GetMethod(httpRequest),
                Uri = _httpRequest.ExtractUrl(Uripart.Path, httpRequest),
                ServerName = _httpRequest.ExtractUrl(Uripart.Host, httpRequest),
                HostAddress = _httpRequest.HostAddress(httpRequest),
                UserAgent = _httpRequest.GetHeader("User-Agent", httpRequest),
                CorrelationId = _httpRequest.GetHeader(LogMeta._correlationId, httpRequest),
                Payload = _httpRequest.TryGetBodyContent(httpRequest),
                Warning = _httpRequest == null ? "HttpContext.Current is null" : null
            });
        }
Пример #2
0
        public string ExtractUrl(Uripart uriPart, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestLegacy).HttpRequest;

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

            var urlBuilder = new StringBuilder();

            if ((uriPart & Uripart.Scheme) == Uripart.Scheme && !String.IsNullOrWhiteSpace(request.Url.Scheme))
            {
                urlBuilder.Append(request.Url.Scheme + "://");
            }
            if ((uriPart & Uripart.Host) == Uripart.Host)
            {
                urlBuilder.Append(request.Url.DnsSafeHost);
            }
            if ((uriPart & Uripart.Port) == Uripart.Port && request.Url.Port > 0)
            {
                urlBuilder.Append(":" + request.Url.Port);
            }
            if ((uriPart & Uripart.Path) == Uripart.Path)
            {
                urlBuilder.Append(request.Url.LocalPath);
            }
            if ((uriPart & Uripart.Query) == Uripart.Query)
            {
                urlBuilder.Append(request.Url.Query.ClearQueryStringPassword());
            }
            return(urlBuilder.ToString());
        }
Пример #3
0
        public string ExtractUrl(Uripart uriPart, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestCore).HttpRequest;

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

            var urlBuilder = new StringBuilder();

            if ((uriPart & Uripart.Scheme) == Uripart.Scheme && !String.IsNullOrWhiteSpace(request.Scheme))
            {
                urlBuilder.Append(request.Scheme + "://");
            }
            if ((uriPart & Uripart.Host) == Uripart.Host)
            {
                urlBuilder.Append(request.Host.Host);
            }
            if ((uriPart & Uripart.Port) == Uripart.Port && request.Host.Port > 0)
            {
                urlBuilder.Append(":" + request.Host.Port);
            }
            if ((uriPart & Uripart.Path) == Uripart.Path)
            {
                urlBuilder.Append(request.PathBase.ToUriComponent());
                urlBuilder.Append(request.Path.ToUriComponent());
            }
            if ((uriPart & Uripart.Query) == Uripart.Query)
            {
                urlBuilder.Append(request.QueryString.Value.ClearQueryStringPassword());
            }
            return(urlBuilder.ToString());
        }
Пример #4
0
        public bool ContainsHeader(string header, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestCore).HttpRequest;

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

            return(request.Headers.ContainsKey(header));
        }
Пример #5
0
        public string HostAddress(IHttpContextRequest httpRequest)
        {
            var    request = (httpRequest as HttpContextRequestLegacy).HttpRequest;
            string ip      = null;

            if (request.Headers.Get(LogMeta._luccaForwardedHeader) != null)
            {
                ip = request.Headers[LogMeta._forwardedHeader];
            }
            if (string.IsNullOrEmpty(ip))
            {
                ip = request?.UserHostAddress;
            }
            return(ip);
        }
Пример #6
0
        public string HostAddress(IHttpContextRequest httpRequest)
        {
            var    request = (httpRequest as HttpContextRequestCore).HttpRequest;
            string ip      = null;

            if (request.Headers.ContainsKey(LogMeta._luccaForwardedHeader))
            {
                ip = request.Headers[LogMeta._forwardedHeader];
            }
            if (string.IsNullOrEmpty(ip))
            {
                ip = request?.HttpContext?.Connection?.RemoteIpAddress?.ToString();
            }
            return(ip);
        }
Пример #7
0
        public string TryGetBodyContent(IHttpContextRequest httpRequest)
        {
            var    request          = (httpRequest as HttpContextRequestLegacy).HttpRequest;
            string documentContents = null;

            try
            {
                if (request == null || request.InputStream.Length == 0)
                {
                    return(null);
                }
                using (var stream = new MemoryStream())
                {
                    request.InputStream.Seek(0, SeekOrigin.Begin);
                    request.InputStream.CopyTo(stream);
                    documentContents = Encoding.UTF8.GetString(stream.ToArray());
                }
            }
            catch (Exception)
            {
                // discard exception
            }
            return(documentContents);
        }
Пример #8
0
        public string TryGetBodyContent(IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestCore).HttpRequest;

            try
            {
                if (request == null || !request.Body.CanRead || !request.Body.CanSeek || request.Body.Length == 0)
                {
                    return(null);
                }

                using (var stream = new MemoryStream())
                {
                    request.Body.Seek(0, SeekOrigin.Begin);
                    request.Body.CopyTo(stream);
                    return(Encoding.UTF8.GetString(stream.ToArray()));
                }
            }
            catch (Exception)
            {
                // discard exception
                return(null);
            }
        }
Пример #9
0
        public string GetHeader(string header, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestLegacy).HttpRequest;

            return(request?.Headers.Get(header));
        }
Пример #10
0
        public bool ContainsHeader(string header, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestLegacy).HttpRequest;

            return(request?.Headers.Get(header) != null);
        }
Пример #11
0
        public string GetMethod(IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestLegacy).HttpRequest;

            return(request?.HttpMethod);
        }
Пример #12
0
        public string GetHeader(string header, IHttpContextRequest httpRequest)
        {
            var request = (httpRequest as HttpContextRequestCore).HttpRequest;

            return(request?.Headers[header]);
        }