Files
Umbraco-CMS/src/Umbraco.Core/Services/UserDataService.cs
2021-10-04 11:31:38 +02:00

58 lines
2.0 KiB
C#

using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Models;
using Umbraco.Extensions;
namespace Umbraco.Cms.Core.Services
{
public class UserDataService : IUserDataService
{
private readonly IUmbracoVersion _version;
private readonly ILocalizationService _localizationService;
public UserDataService(IUmbracoVersion version, ILocalizationService localizationService)
{
_version = version;
_localizationService = localizationService;
}
public IEnumerable<UserData> GetUserData()
{
var userDataList = new List<UserData>
{
new UserData("Server OS", RuntimeInformation.OSDescription),
new UserData("Server Framework", RuntimeInformation.FrameworkDescription),
new UserData("Default Language", _localizationService.GetDefaultLanguageIsoCode()),
new UserData("Umbraco Version", _version.SemanticVersion.ToSemanticStringWithoutBuild()),
new UserData("Current Culture", Thread.CurrentThread.CurrentCulture.ToString()),
new UserData("Current UI Culture", Thread.CurrentThread.CurrentUICulture.ToString()),
new UserData("Current Webserver", GetCurrentWebServer())
};
return userDataList;
}
public string GetCurrentWebServer()
{
if (IsRunningInProcessIIS())
{
return "IIS";
}
return "Kestrel";
}
public bool IsRunningInProcessIIS()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return false;
}
string processName = Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().ProcessName);
return (processName.Contains("w3wp") || processName.Contains("iisexpress"));
}
}
}