using Masuit.MyBlogs.Core.Common;
using Masuit.MyBlogs.Core.Common.Mails;
using Masuit.MyBlogs.Core.Extensions.Firewall;
using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
using Masuit.MyBlogs.Core.Models.Entity;
using Masuit.MyBlogs.Core.Models.Enum;
using Masuit.Tools;
using Masuit.Tools.DateTimeExt;
using Masuit.Tools.Logging;
using Masuit.Tools.Models;
using Masuit.Tools.Systems;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace Masuit.MyBlogs.Core.Controllers
{
///
/// 系统设置
///
public class SystemController : AdminController
{
///
/// 系统设置
///
public ISystemSettingService SystemSettingService { get; set; }
///
/// 获取历史性能计数器
///
///
public IActionResult GetCounterHistory()
{
var list = PerfCounter.List.Count < 5000 ? PerfCounter.List : PerfCounter.List.GroupBy(c => c.Time / 60000).Select(g => new PerfCounter.PerformanceCounter()
{
Time = g.Key * 60000,
CpuLoad = g.Average(c => c.CpuLoad),
DiskRead = g.Average(c => c.DiskRead),
DiskWrite = g.Average(c => c.DiskWrite),
Download = g.Average(c => c.Download),
Upload = g.Average(c => c.Upload),
MemoryUsage = g.Average(c => c.MemoryUsage)
}).ToList();
return Ok(new
{
cpu = list.Select(c => new[]
{
c.Time,
c.CpuLoad.ConvertTo()
}),
mem = list.Select(c => new[]
{
c.Time,
c.MemoryUsage.ConvertTo()
}),
read = list.Select(c => new[]
{
c.Time,
c.DiskRead.ConvertTo()
}),
write = list.Select(c => new[]
{
c.Time,
c.DiskWrite.ConvertTo()
}),
down = list.Select(c => new[]
{
c.Time,
c.Download.ConvertTo()
}),
up = list.Select(c => new[]
{
c.Time,
c.Upload.ConvertTo()
})
});
}
///
/// 获取设置信息
///
///
public ActionResult GetSettings()
{
var list = SystemSettingService.GetAll().Select(s => new
{
s.Name,
s.Value
}).ToList();
return ResultData(list);
}
///
/// 保存设置
///
///
///
public async Task Save(string sets)
{
var settings = JsonConvert.DeserializeObject>(sets).ToArray();
var b = await SystemSettingService.AddOrUpdateSavedAsync(s => s.Name, settings) > 0;
var dic = settings.ToDictionary(s => s.Name, s => s.Value); //同步设置
foreach (var (key, value) in dic)
{
CommonHelper.SystemSettings.AddOrUpdate(key, value);
}
return ResultData(null, b, b ? "设置保存成功!" : "设置保存失败!");
}
///
/// 获取状态
///
///
public ActionResult GetStatus()
{
Array array = Enum.GetValues(typeof(Status));
var list = new List