DigitalFactory/Admin.NET/Admin.NET.Core/Service/Server/SysServerService.cs

127 lines
5.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 大名科技(天津)有限公司版权所有 电话18020030720 QQ515096995
//
// 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
using AngleSharp.Html.Parser;
using AspNetCoreRateLimit;
using Lazy.Captcha.Core;
using Magicodes.ExporterAndImporter.Pdf;
using MailKit.Net.Smtp;
using Nest;
using OnceMi.AspNetCore.OSS;
namespace Admin.NET.Core.Service;
/// <summary>
/// 系统服务器监控服务
/// </summary>
[ApiDescriptionSettings(Order = 290)]
public class SysServerService : IDynamicApiController, ITransient
{
public SysServerService()
{
}
/// <summary>
/// 获取服务器配置信息
/// </summary>
/// <returns></returns>
[DisplayName("获取服务器配置信息")]
public dynamic GetServerBase()
{
return new
{
HostName = Environment.MachineName, // 主机名称
SystemOs = ComputerUtil.GetOSInfo(),//RuntimeInformation.OSDescription, // 操作系统
OsArchitecture = Environment.OSVersion.Platform.ToString() + " " + RuntimeInformation.OSArchitecture.ToString(), // 系统架构
ProcessorCount = Environment.ProcessorCount + " 核", // CPU核心数
SysRunTime = ComputerUtil.GetRunTime(), // 系统运行时间
RemoteIp = ComputerUtil.GetIpFromOnline(), // 外网地址
LocalIp = App.HttpContext?.Connection?.LocalIpAddress.ToString(), // 本地地址
FrameworkDescription = RuntimeInformation.FrameworkDescription, // NET框架
Environment = App.HostEnvironment.IsDevelopment() ? "Development" : "Production",
Wwwroot = App.WebHostEnvironment.WebRootPath, // 网站根目录
Stage = App.HostEnvironment.IsStaging() ? "Stage环境" : "非Stage环境", // 是否Stage环境
};
}
/// <summary>
/// 获取服务器使用信息
/// </summary>
/// <returns></returns>
[DisplayName("获取服务器使用信息")]
public dynamic GetServerUsed()
{
var programStartTime = Process.GetCurrentProcess().StartTime;
var totalMilliseconds = (DateTime.Now - programStartTime).TotalMilliseconds.ToString();
var ts = totalMilliseconds.Contains('.') ? totalMilliseconds.Split('.')[0] : totalMilliseconds;
var programRunTime = DateTimeUtil.FormatTime(ts.ParseToLong());
var memoryMetrics = ComputerUtil.GetComputerInfo();
return new
{
memoryMetrics.FreeRam, // 空闲内存
memoryMetrics.UsedRam, // 已用内存
memoryMetrics.TotalRam, // 总内存
memoryMetrics.RamRate, // 内存使用率
memoryMetrics.CpuRate, // Cpu使用率
StartTime = programStartTime.ToString("yyyy-MM-dd HH:mm:ss"), // 服务启动时间
RunTime = programRunTime, // 服务运行时间
};
}
/// <summary>
/// 获取服务器磁盘信息
/// </summary>
/// <returns></returns>
[DisplayName("获取服务器磁盘信息")]
public dynamic GetServerDisk()
{
return ComputerUtil.GetDiskInfos();
}
/// <summary>
/// 获取框架主要程序集
/// </summary>
/// <returns></returns>
[DisplayName("获取框架主要程序集")]
public dynamic GetAssemblyList()
{
var furionAssembly = typeof(App).Assembly.GetName();
var sqlSugarAssembly = typeof(ISqlSugarClient).Assembly.GetName();
var yitIdAssembly = typeof(YitIdHelper).Assembly.GetName();
var redisAssembly = typeof(Redis).Assembly.GetName();
var jsonAssembly = typeof(NewtonsoftJsonMvcCoreBuilderExtensions).Assembly.GetName();
var excelAssembly = typeof(IExcelImporter).Assembly.GetName();
var pdfAssembly = typeof(IPdfExporter).Assembly.GetName();
var captchaAssembly = typeof(ICaptcha).Assembly.GetName();
var wechatApiAssembly = typeof(WechatApiClient).Assembly.GetName();
var wechatTenpayAssembly = typeof(WechatTenpayClient).Assembly.GetName();
var ossAssembly = typeof(IOSSServiceFactory).Assembly.GetName();
var parserAssembly = typeof(Parser).Assembly.GetName();
var nestAssembly = typeof(IElasticClient).Assembly.GetName();
var limitAssembly = typeof(IpRateLimitMiddleware).Assembly.GetName();
var htmlParserAssembly = typeof(HtmlParser).Assembly.GetName();
var fluentEmailAssembly = typeof(SmtpClient).Assembly.GetName();
return new[]
{
new { furionAssembly.Name, furionAssembly.Version },
new { sqlSugarAssembly.Name, sqlSugarAssembly.Version },
new { yitIdAssembly.Name, yitIdAssembly.Version },
new { redisAssembly.Name, redisAssembly.Version },
new { jsonAssembly.Name, jsonAssembly.Version },
new { excelAssembly.Name, excelAssembly.Version },
new { pdfAssembly.Name, pdfAssembly.Version },
new { captchaAssembly.Name, captchaAssembly.Version },
new { wechatApiAssembly.Name, wechatApiAssembly.Version },
new { wechatTenpayAssembly.Name, wechatTenpayAssembly.Version },
new { ossAssembly.Name, ossAssembly.Version },
new { parserAssembly.Name, parserAssembly.Version },
new { nestAssembly.Name, nestAssembly.Version },
new { limitAssembly.Name, limitAssembly.Version },
new { htmlParserAssembly.Name, htmlParserAssembly.Version },
new { fluentEmailAssembly.Name, fluentEmailAssembly.Version },
};
}
}