using AppLibs.Libs; using AppLibs.Libs.Crypt; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.WebUtilities; using System.Security.Cryptography; using TWASys_App.Models; using TWASys_App.Models.ServerInfo; namespace TWASys_App.Controllers { public class StorageController : Controller { [PageInfor("6101", "Config Storage")] public Task Index() { return this.ViewAsync(); } [PageInfor("6102", "Type Storage")] public Task Type() { return this.ViewAsync(); } [PageInfor("6103", "Validation Domain")] public Task ValidationDomain() { return this.ViewAsync(); } [HttpPost] public async Task AddValidationDomain([FromForm] ValidationDomainModel model) { return Json(await model.AddAsync()); } [HttpPost] public async Task GetValidationDomain([FromForm] ValidationDomainModel model) { return await model.GetValidationDomainAsync(); } [HttpPost] public async Task UpdateValidationDomain([FromForm] ValidationDomainModel model) { return Json(await model.UpdateAsync()); } [HttpPost] public async Task AddType([FromBody] TypeStorageServerModel model) { return Json(await model.AddAsync()); } [HttpPost] public async Task GetTypeStorage([FromForm] TypeStorageServerModel model) { return await model.GetTypeStoragesAsync(); } [HttpGet] public async Task GetTypeStorage() { return await TypeStorageServerModel.GetAllTypeStorage(); } [HttpGet] public async Task GetValidationDomain() { return await ValidationDomainModel.GetAllValidationDomain(); } [HttpPost] public async Task UpdateType([FromBody] TypeStorageServerModel model) { return Json(await model.UpdateAsync()); } [HttpPost] public async Task SetStorageData([FromForm] StorageModel model) { return Json(await model.AddAsync()); } [HttpGet] public async Task GenerationAccessToken() { var t1 = Task.Run(() => { return UUID7.NewUuid7(); }); var t2 = Task.Run(() => { var tokenValue = Base64UrlTextEncoder.Encode( Guid.NewGuid().ToByteArray() .Concat(BitConverter.GetBytes(DateTime.UtcNow.ToFileTimeUtc())) .ToArray() ); using var sha = SHA256.Create(); var idToken = WebEncoders.Base64UrlEncode(sha.ComputeHash( System.Text.Encoding.UTF8.GetBytes(tokenValue) )); return idToken; }); await Task.WhenAll(t1, t2); return Json(new { idToken = t1.Result.ToString(), tokenValue = t2.Result.ToLower() }); } [HttpGet] public async Task GetSysInfo() { var sys = SysInfoReader.Get(); var mac = HwIdReader.Get(); var os = OsInfoReader.Get(); return Json(new { socket = sys.SocketCount, cpuName = sys.CpuName, totalRam = (sys.TotalRamBytes / 1024f / 1024f / 1024f).ToString("F2"), biosSerial = mac.SerialNumber, biosVendor = mac.BiosVendor, biosUUID = mac.ProductUuid, privateIP = NetUtils.GetPrimaryPrivateIPv4String(), privateIPv6 = NetUtils.GetPrimaryPrivateIPv6String(), publicIP = await NetUtils.GetPublicIpAsync(), osPlatform = os.Platform, osName = os.Name, osVersion = os.Version, osKernel = os.Kernel, osArch = os.Architecture }); } } }