using AppLibs.Libs; using TWASys_App.Models; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Connections.Features; using System.Diagnostics.Metrics; using System.Security.Cryptography; using System.Text.Encodings; using System.Text; using AppLibs.Libs.Crypt; 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()); } [HttpGet] public async Task GenerationAccessToken() { var t1 = Task.Run(() => { var g = Guid.NewGuid(); return Base64UrlTextEncoder.Encode(g.ToByteArray().Concat(BitConverter.GetBytes(DateTime.UtcNow.ToFileTime())).ToArray()); }); var t2 = Task.Run(() => { var g = Guid.NewGuid(); var bytes = BitConverter.GetBytes(DateTime.UtcNow.Ticks); Array.Resize(ref bytes, 16); byte[] data = new byte[32]; bytes.CopyTo(data, 0); g.ToByteArray().CopyTo(data, 16); var hash = new CRC64(); return hash.HashToString(data); }); await Task.WhenAll(t1, t2); return Json(new { idToken = t2.Result.ToLower(), tokenValue = t1.Result }); } [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 }); } } }