SettingController.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System.Diagnostics;
  2. using bitforum.Models;
  3. using Microsoft.AspNetCore.Authorization;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Microsoft.Extensions.Hosting;
  6. using System.Runtime.InteropServices;
  7. using System.Management;
  8. namespace bitforum.Controllers
  9. {
  10. [Authorize]
  11. [Route("Setting")]
  12. public class SettingController : Controller
  13. {
  14. private readonly ILogger<HomeController> _logger;
  15. private readonly IHostEnvironment _env;
  16. public SettingController(ILogger<HomeController> logger, IHostEnvironment env)
  17. {
  18. _logger = logger;
  19. _env = env;
  20. }
  21. [HttpGet("Server")]
  22. public IActionResult Server()
  23. {
  24. var process = Process.GetCurrentProcess();
  25. var info = new
  26. {
  27. // 앱, 호스트(Host) 관련
  28. EnvironmentName = _env.EnvironmentName,
  29. ContentRootPath = _env.ContentRootPath,
  30. ApplicationName = _env.ApplicationName,
  31. // OS, Framework 관련
  32. OSDescription = RuntimeInformation.OSDescription,
  33. OSArchitecture = RuntimeInformation.OSArchitecture.ToString(),
  34. FrameworkDescription = RuntimeInformation.FrameworkDescription,
  35. ProcessArchitecture = RuntimeInformation.ProcessArchitecture.ToString(),
  36. WorkingSet = (process.WorkingSet64 / 1048576), // 물리 메모리 사용량(바이트)
  37. TotalCpuTime = process.TotalProcessorTime, // 프로세스 실행 시간
  38. // 시스템(환경변수) 관련
  39. MachineName = Environment.MachineName,
  40. CurrentDirectory = Environment.CurrentDirectory,
  41. SystemDirectory = Environment.SystemDirectory,
  42. Is64BitOperatingSystem = Environment.Is64BitOperatingSystem,
  43. Is64BitProcess = Environment.Is64BitProcess,
  44. ProcessorCount = Environment.ProcessorCount,
  45. // 시작 시각 등
  46. TickCount = TimeSpan.FromMicroseconds(Environment.TickCount).ToString(), // 시스템 시작 후 경과 시간(밀리초)
  47. };
  48. // CPU 정보
  49. ViewBag.cpu = new ManagementObjectSearcher("select * from Win32_Processor").Get();
  50. // 메모리 정보
  51. ViewBag.memory = new ManagementObjectSearcher("select * from Win32_MemoryDevice").Get();
  52. // 디스크 정보
  53. ViewBag.disk = new ManagementObjectSearcher("select * from Win32_DiskDrive").Get();
  54. ViewBag.Info = info;
  55. return View();
  56. }
  57. [HttpGet("Envs")]
  58. public IActionResult Envs()
  59. {
  60. ViewBag.EnvVars = Environment.GetEnvironmentVariables(); ;
  61. return View();
  62. }
  63. [HttpGet("Basic")]
  64. public IActionResult Basic()
  65. {
  66. return View();
  67. }
  68. [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  69. public IActionResult Error()
  70. {
  71. return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
  72. }
  73. }
  74. }