/// <summary> /// Prepare system info model /// </summary> /// <param name="model">System info model</param> /// <returns>System info model</returns> public virtual SystemInfoModel PrepareSystemInfoModel(SystemInfoModel model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } model.NopVersion = NopVersion.CurrentVersion; model.ServerTimeZone = TimeZoneInfo.Local.StandardName; model.ServerLocalTime = DateTime.Now; model.UtcTime = DateTime.UtcNow; model.CurrentUserTime = _dateTimeHelper.ConvertToUserTime(DateTime.Now); model.HttpHost = _httpContextAccessor.HttpContext.Request.Headers[HeaderNames.Host]; //ensure no exception is thrown try { model.OperatingSystem = Environment.OSVersion.VersionString; model.AspNetInfo = RuntimeEnvironment.GetSystemVersion(); model.IsFullTrust = AppDomain.CurrentDomain.IsFullyTrusted.ToString(); } catch { } foreach (var header in _httpContextAccessor.HttpContext.Request.Headers) { model.Headers.Add(new SystemInfoModel.HeaderModel { Name = header.Key, Value = header.Value }); } foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var loadedAssemblyModel = new SystemInfoModel.LoadedAssembly { FullName = assembly.FullName }; //ensure no exception is thrown try { loadedAssemblyModel.Location = assembly.IsDynamic ? null : assembly.Location; loadedAssemblyModel.IsDebug = assembly.GetCustomAttributes(typeof(DebuggableAttribute), false) .FirstOrDefault() is DebuggableAttribute attribute && attribute.IsJITOptimizerDisabled; //https://stackoverflow.com/questions/2050396/getting-the-date-of-a-net-assembly //we use a simple method because the more Jeff Atwood's solution doesn't work anymore //more info at https://blog.codinghorror.com/determining-build-date-the-hard-way/ loadedAssemblyModel.BuildDate = assembly.IsDynamic ? null : (DateTime?)TimeZoneInfo.ConvertTimeFromUtc(_fileProvider.GetLastWriteTimeUtc(assembly.Location), TimeZoneInfo.Local); } catch { } model.LoadedAssemblies.Add(loadedAssemblyModel); } return(model); }
public virtual ActionResult SystemInfo() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageMaintenance)) { return(AccessDeniedView()); } var model = new SystemInfoModel(); model.NopVersion = NopVersion.CurrentVersion; try { model.OperatingSystem = Environment.OSVersion.VersionString; } catch (Exception) { } try { model.AspNetInfo = RuntimeEnvironment.GetSystemVersion(); } catch (Exception) { } try { model.IsFullTrust = AppDomain.CurrentDomain.IsFullyTrusted.ToString(); } catch (Exception) { } model.ServerTimeZone = TimeZone.CurrentTimeZone.StandardName; model.ServerLocalTime = DateTime.Now; model.UtcTime = DateTime.UtcNow; model.CurrentUserTime = _dateTimeHelper.ConvertToUserTime(DateTime.Now); model.HttpHost = _webHelper.ServerVariables("HTTP_HOST"); foreach (var key in _httpContext.Request.ServerVariables.AllKeys) { if (key.StartsWith("ALL_")) { continue; } model.ServerVariables.Add(new SystemInfoModel.ServerVariableModel { Name = key, Value = _httpContext.Request.ServerVariables[key] }); } //Environment.GetEnvironmentVariable("USERNAME"); var trustLevel = CommonHelper.GetTrustLevel(); foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var loadedAssembly = new SystemInfoModel.LoadedAssembly { FullName = assembly.FullName, }; //ensure no exception is thrown try { var canGetLocation = trustLevel >= AspNetHostingPermissionLevel.High && !assembly.IsDynamic; loadedAssembly.Location = canGetLocation ? assembly.Location : null; loadedAssembly.IsDebug = IsDebugAssembly(assembly); loadedAssembly.BuildDate = canGetLocation ? (DateTime?)GetBuildDate(assembly, TimeZoneInfo.Local) : null; } catch (Exception) { } model.LoadedAssemblies.Add(loadedAssembly); } return(View(model)); }
public virtual IActionResult SystemInfo() { if (!_permissionService.Authorize(StandardPermissionProvider.ManageMaintenance)) { return(AccessDeniedView()); } var model = new SystemInfoModel { NopVersion = NopVersion.CurrentVersion }; try { model.OperatingSystem = Environment.OSVersion.VersionString; } catch (Exception) { } try { model.AspNetInfo = RuntimeEnvironment.GetSystemVersion(); } catch (Exception) { } try { model.IsFullTrust = AppDomain.CurrentDomain.IsFullyTrusted.ToString(); } catch (Exception) { } model.ServerTimeZone = TimeZone.CurrentTimeZone.StandardName; model.ServerLocalTime = DateTime.Now; model.UtcTime = DateTime.UtcNow; model.CurrentUserTime = _dateTimeHelper.ConvertToUserTime(DateTime.Now); model.HttpHost = HttpContext.Request.Headers[HeaderNames.Host]; foreach (var header in HttpContext.Request.Headers) { model.Headers.Add(new SystemInfoModel.HeaderModel { Name = header.Key, Value = header.Value }); } foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var loadedAssembly = new SystemInfoModel.LoadedAssembly { FullName = assembly.FullName, }; //ensure no exception is thrown try { loadedAssembly.Location = assembly.IsDynamic ? null : assembly.Location; loadedAssembly.IsDebug = IsDebugAssembly(assembly); //https://stackoverflow.com/questions/2050396/getting-the-date-of-a-net-assembly //we use a simple method because the more Jeff Atwood's solution doesn't work anymore (more info at https://blog.codinghorror.com/determining-build-date-the-hard-way/) loadedAssembly.BuildDate = assembly.IsDynamic ? null : (DateTime?)TimeZoneInfo.ConvertTimeFromUtc(System.IO.File.GetLastWriteTimeUtc(assembly.Location), TimeZoneInfo.Local); } catch (Exception) { } model.LoadedAssemblies.Add(loadedAssembly); } return(View(model)); }
/// <summary> /// Prepare system info model /// </summary> /// <param name="model">System info model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the system info model /// </returns> public virtual async Task<SystemInfoModel> PrepareSystemInfoModelAsync(SystemInfoModel model) { if (model == null) throw new ArgumentNullException(nameof(model)); model.NopVersion = NopVersion.FULL_VERSION; model.ServerTimeZone = TimeZoneInfo.Local.StandardName; model.ServerLocalTime = DateTime.Now; model.UtcTime = DateTime.UtcNow; model.CurrentUserTime = await _dateTimeHelper.ConvertToUserTimeAsync(DateTime.Now); model.HttpHost = _httpContextAccessor.HttpContext.Request.Headers[HeaderNames.Host]; //ensure no exception is thrown try { model.OperatingSystem = Environment.OSVersion.VersionString; model.AspNetInfo = RuntimeInformation.FrameworkDescription; model.IsFullTrust = AppDomain.CurrentDomain.IsFullyTrusted; } catch { // ignored } foreach (var header in _httpContextAccessor.HttpContext.Request.Headers) { model.Headers.Add(new SystemInfoModel.HeaderModel { Name = header.Key, Value = header.Value }); } foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { var loadedAssemblyModel = new SystemInfoModel.LoadedAssembly { FullName = assembly.FullName }; //ensure no exception is thrown try { loadedAssemblyModel.Location = assembly.IsDynamic ? null : assembly.Location; loadedAssemblyModel.IsDebug = assembly.GetCustomAttributes(typeof(DebuggableAttribute), false) .FirstOrDefault() is DebuggableAttribute attribute && attribute.IsJITOptimizerDisabled; //https://stackoverflow.com/questions/2050396/getting-the-date-of-a-net-assembly //we use a simple method because the more Jeff Atwood's solution doesn't work anymore //more info at https://blog.codinghorror.com/determining-build-date-the-hard-way/ loadedAssemblyModel.BuildDate = assembly.IsDynamic ? null : (DateTime?)TimeZoneInfo.ConvertTimeFromUtc(_fileProvider.GetLastWriteTimeUtc(assembly.Location), TimeZoneInfo.Local); } catch { // ignored } model.LoadedAssemblies.Add(loadedAssemblyModel); } var currentStaticCacheManagerName = _staticCacheManager.GetType().Name; if (_appSettings.DistributedCacheConfig.Enabled) currentStaticCacheManagerName += $"({await _localizationService.GetLocalizedEnumAsync(_appSettings.DistributedCacheConfig.DistributedCacheType)})"; model.CurrentStaticCacheManager = currentStaticCacheManagerName; model.AzureBlobStorageEnabled = _appSettings.AzureBlobConfig.Enabled; return model; }