123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- using FISLib.LiveVideo;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Threading.Tasks;
- using Vinno.FIS.Sonopost.Common;
- using Vinno.FIS.Sonopost.Features.Config;
- using Vinno.FIS.Sonopost.Features.Oled;
- using Vinno.FIS.Sonopost.Helpers;
- using Vinno.FIS.Sonopost.WebApi.Models;
- using Vinno.IUS.Common.Log;
- namespace Vinno.FIS.Sonopost.WebApi.Controllers
- {
- [WebApiController]
- internal class SystemController : BaseController
- {
- /// <summary>
- /// 重置
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result Reset()
- {
- Task.Run(() =>
- {
- Task.Delay(1000);
- OledManager.ShowStatus(OledMessage.Restore);
- SystemHelper.ResetSystem();
- });
- return Result.Success();
- }
- /// <summary>
- /// 重启
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result Reboot()
- {
- Task.Run(() =>
- {
- Task.Delay(1000);
- OledManager.ShowStatus(OledMessage.Reboot);
- SystemHelper.RebootSystem();
- });
- return Result.Success();
- }
- /// <summary>
- /// 删除自定义配置
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result DeleteUserDefinedSetting()
- {
- Task.Run(() =>
- {
- Task.Delay(1000);
- SonopostUserDefinedSettings.Instance.Reset();
- OledManager.ShowStatus(OledMessage.Reboot);
- SystemHelper.RebootSystem();
- });
- return Result.Success();
- }
- /// <summary>
- /// 获取迷你屏语言
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetOledLanguage()
- {
- return Result.Success(OledManager.CurrentLanguage.ToString());
- }
- /// <summary>
- /// 设置迷你屏语言
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result SetOledLanguage(SetLanguageRequest request)
- {
- var language = (Language)Enum.Parse(typeof(Language), request.Language);
- OledManager.SetLanguage(language);
- return Result.Success();
- }
- /// <summary>
- /// 获取页面语言
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetPageLanguage()
- {
- switch (SonopostUserDefinedSettings.Instance.LanguageSetting.PageLanguage)
- {
- case Language.English:
- return Result.Success("en-us");
- case Language.Chinese:
- default:
- return Result.Success("zh-cn");
- }
- }
- /// <summary>
- /// 设置页面语言
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result SetPageLanguage(SetLanguageRequest request)
- {
- if (request == null)
- {
- return Result.Fail();
- }
- if (request.Language.ToLower() == "en-us")
- {
- SonopostUserDefinedSettings.Instance.LanguageSetting.PageLanguage = Language.English;
- }
- else
- {
- SonopostUserDefinedSettings.Instance.LanguageSetting.PageLanguage = Language.Chinese;
- }
- ConfigManager.Save();
- return Result.Success();
- }
- /// <summary>
- /// 设置语言,包含页面语言和OLED语言
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result SetLanguage(SetLanguageRequest request)
- {
- if (request == null)
- {
- return Result.Fail();
- }
- if (request.Language.ToLower() == "en-us")
- {
- SonopostUserDefinedSettings.Instance.LanguageSetting.PageLanguage = Language.English;
- OledManager.SetLanguage(Language.English);
- }
- else
- {
- SonopostUserDefinedSettings.Instance.LanguageSetting.PageLanguage = Language.Chinese;
- OledManager.SetLanguage(Language.Chinese);
- }
- ConfigManager.Save();
- return Result.Success();
- }
- /// <summary>
- /// 获取版本
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result GetVersion()
- {
- string version = VersionCheckManager.GetVersion();
- return Result.Success(version);
- }
- /// <summary>
- /// 获取日志文本
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result GetLogText(SystemGetLogRequest request)
- {
- try
- {
- string path;
- path = Path.Combine(SonopostConstants.DataFolder, request.Path);
- string text = FileHelper.GetText(path);
- return Result.Success(text);
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"[{nameof(SystemController)}]{nameof(GetLogText)} error:{ex}");
- return Result.Fail();
- }
- }
- /// <summary>
- /// 获取日志文件树
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [WebApiAction]
- public Result GetLogFileTree(SystemGetLogRequest request)
- {
- try
- {
- EnumLogType logType;
- var path = Path.Combine(SonopostConstants.DataFolder, request.Key);
- switch (request?.Key)
- {
- case "Logs":
- logType = EnumLogType.Logs;
- break;
- case "SmartLogs":
- logType = EnumLogType.SmartLogs;
- break;
- case "TRTCLogs":
- logType = EnumLogType.TRTCLogs;
- break;
- case "TRTCClientLogs":
- logType = EnumLogType.TRTCClientLogs;
- break;
- default:
- return Result.Fail();
- }
- var tree = GetLogDirSources(path, logType);
- return Result.Success(tree);
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"[{nameof(SystemController)}]{nameof(GetLogFileTree)} error:{ex}");
- return Result.Fail();
- }
- }
- /// <summary>
- /// 读取彩虹图监测设置
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result LoadRainbowImageDetectSetting()
- {
- try
- {
- var fisRainbowImageDetectConfig = new FISRainbowImageDetectConfig()
- {
- IsDetectRainbowImage = SonopostSystemSettings.Instance.RainbowImageDetectSetting.IsDetectRainbowImage,
- ScanIntervalTime = SonopostSystemSettings.Instance.RainbowImageDetectSetting.ScanIntervalTime,
- BeforeDisableIntervalTime = SonopostSystemSettings.Instance.RainbowImageDetectSetting.BeforeDisableIntervalTime,
- BeforeEnableIntervalTime = SonopostSystemSettings.Instance.RainbowImageDetectSetting.BeforeEnableIntervalTime,
- AfterEnableIntervalTime = SonopostSystemSettings.Instance.RainbowImageDetectSetting.AfterEnableIntervalTime,
- };
- return Result.Success(fisRainbowImageDetectConfig);
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Load Rainbow Image Detect Setting Error:{ex}");
- return Result.Fail();
- }
- }
- /// <summary>
- /// 设置彩虹图监测开关
- /// </summary>
- /// <returns></returns>
- [WebApiAction]
- public Result SaveRainbowImageDetectSetting(FISRainbowImageDetectConfig fisRainbowImageDetectConfig)
- {
- try
- {
- if (fisRainbowImageDetectConfig == null || fisRainbowImageDetectConfig.BeforeDisableIntervalTime <= 0 || fisRainbowImageDetectConfig.BeforeEnableIntervalTime <= 0 || fisRainbowImageDetectConfig.AfterEnableIntervalTime <= 0 || fisRainbowImageDetectConfig.ScanIntervalTime <= 0)
- {
- return Result.Fail("PositiveIntFormatError");
- }
- SonopostSystemSettings.Instance.RainbowImageDetectSetting.BeforeEnableIntervalTime = fisRainbowImageDetectConfig.BeforeEnableIntervalTime;
- SonopostSystemSettings.Instance.RainbowImageDetectSetting.BeforeDisableIntervalTime = fisRainbowImageDetectConfig.BeforeDisableIntervalTime;
- SonopostSystemSettings.Instance.RainbowImageDetectSetting.AfterEnableIntervalTime = fisRainbowImageDetectConfig.AfterEnableIntervalTime;
- SonopostSystemSettings.Instance.RainbowImageDetectSetting.ScanIntervalTime = fisRainbowImageDetectConfig.ScanIntervalTime;
- SonopostSystemSettings.Instance.RainbowImageDetectSetting.IsDetectRainbowImage = fisRainbowImageDetectConfig.IsDetectRainbowImage;
- ConfigManager.Save();
- LiveVideoManager.UpdateRainbowImageDetectSetting();
- return Result.Success();
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Set Rainbow Image Detect Setting Error:{ex}");
- return Result.Fail();
- }
- }
- #region Private Methods
- private static dynamic GetLogDirSources(string path, EnumLogType logType)
- {
- int basePathLength = 0;
- switch (logType)
- {
- case EnumLogType.SmartLogs:
- case EnumLogType.TRTCLogs:
- case EnumLogType.TRTCClientLogs:
- case EnumLogType.Logs:
- basePathLength = SonopostConstants.DataFolder.Length + "\\".Length;
- break;
- }
- List<dynamic> array = new List<dynamic>();
- if (!Directory.Exists(path)) return array;
- DirectoryInfo directoryInfo = new DirectoryInfo(path);
- var subDirectories = directoryInfo.GetDirectories()?.OrderBy(x => x.CreationTime);
- if (subDirectories != null)
- {
- foreach (var item in subDirectories)
- {
- array.Add(new
- {
- Name = item.Name,
- Path = item.FullName.Substring(basePathLength),
- Children = GetLogDirSources(item.FullName, logType)
- });
- }
- }
- var fileInfos = directoryInfo.GetFiles()?.OrderBy(x => x.CreationTime);
- if (fileInfos != null)
- {
- foreach (var item in fileInfos)
- {
- array.Add(new
- {
- Name = item.Name,
- Path = item.FullName.Substring(basePathLength)
- });
- }
- }
- return array;
- }
- #endregion Private Methods
- }
- }
|