From 1828af009857aca081775e3108e7200f697e33d7 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 4 Feb 2022 15:38:09 +0100 Subject: [PATCH 1/2] typo --- LiMan.Api/Controllers/FilesaveController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LiMan.Api/Controllers/FilesaveController.cs b/LiMan.Api/Controllers/FilesaveController.cs index fedf218..5455eeb 100644 --- a/LiMan.Api/Controllers/FilesaveController.cs +++ b/LiMan.Api/Controllers/FilesaveController.cs @@ -124,7 +124,7 @@ namespace LiMan.APi.Controllers [HttpPost()] public async Task>> PostFiles([FromForm] int ticketId, [FromForm] IEnumerable files) { - // max 5 files + // max 10 files var maxAllowedFiles = 10; // max 50 mb long maxFileSize = 1024 * 1024 * 50; From 6f46c1515388eb1789413c91b4ae3b8aeaff9764 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 4 Feb 2022 15:52:14 +0100 Subject: [PATCH 2/2] Fix log x check problemi salvataggio file su share --- LiMan.Api/Controllers/FilesaveController.cs | 207 +++++++++++--------- LiMan.Api/Controllers/TicketController.cs | 2 + LiMan.Api/LiMan.APi.xml | 27 ++- LiMan.UI/LiMan.UI.csproj | 2 +- LiMan.UI/Resources/ChangeLog.html | 2 +- LiMan.UI/Resources/VersNum.txt | 2 +- LiMan.UI/Resources/manifest.xml | 2 +- 7 files changed, 138 insertions(+), 106 deletions(-) diff --git a/LiMan.Api/Controllers/FilesaveController.cs b/LiMan.Api/Controllers/FilesaveController.cs index 5455eeb..bcc0a32 100644 --- a/LiMan.Api/Controllers/FilesaveController.cs +++ b/LiMan.Api/Controllers/FilesaveController.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Threading.Tasks; -using Core; +using Core; using LiMan.APi.Data; using LiMan.DB.DBModels; using Microsoft.AspNetCore.Hosting; @@ -11,6 +6,12 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; +using NLog; +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Threading.Tasks; namespace LiMan.APi.Controllers { @@ -21,14 +22,20 @@ namespace LiMan.APi.Controllers [Route("api/filesave")] public class FilesaveController : ControllerBase { - private readonly IWebHostEnvironment env; - private readonly ILogger logger; + #region Private Fields + private static IConfiguration _configuration; /// - /// Dataservice x accesso DB + /// Classe per logging /// - protected ApiDataService dataService { get; set; } + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + private readonly IWebHostEnvironment env; + + #endregion Private Fields + + #region Public Constructors /// /// Init generico @@ -37,82 +44,46 @@ namespace LiMan.APi.Controllers /// /// /// - public FilesaveController(IConfiguration configuration, ApiDataService DataService, IWebHostEnvironment env, ILogger logger) + public FilesaveController(IConfiguration configuration, ApiDataService DataService, IWebHostEnvironment env) { dataService = DataService; _configuration = configuration; this.env = env; - this.logger = logger; - logger.LogInformation("Avviata classe FilesaveController"); + Log.Info("Avviata classe FilesaveController"); } + #endregion Public Constructors + + #region Protected Properties /// - /// Caricamento file effettivo via POST + /// Dataservice x accesso DB /// - /// TicketId x riferimento - /// Elenco files da caricare + protected ApiDataService dataService { get; set; } + + #endregion Protected Properties + + #region Public Methods + + /// + /// Richiesta di registrazione ticket supporto + /// + /// + /// /// - [HttpPost("single")] - public async Task> PostSingleFile([FromForm] int ticketId, [FromForm] IFormFile file) + // POST api/files/list/1 + [HttpPost("list/{id}")] + public async Task> list(int id, [FromBody] SupportRequest CurrRequest) { - // max 200 mb - long maxFileSize = 1024 * 1024 * 200; - string ticketDir = $"T{ticketId:000000000}"; - var resourcePath = new Uri($"{Request.Scheme}://{Request.Host}/api/filesave/list/{ticketId}"); - List uploadResults = new(); - string fileDir = env.ContentRootPath; - string relDir = env.EnvironmentName; - - var uploadResult = new UploadResult(); - string trustedFileNameForFileStorage; - var untrustedFileName = file.FileName; - uploadResult.FileName = untrustedFileName; - var trustedFileNameForDisplay = WebUtility.HtmlEncode(untrustedFileName); - - if (file.Length == 0) + List result = new List(); + // controllo valori + if (CurrRequest.IsValid) { - logger.LogInformation("{FileName} length is 0 (Err: 1)", trustedFileNameForDisplay); - uploadResult.ErrorCode = 1; + // cerco i files dato ticket + result = await dataService.FileGetFilt(id); + await dataService.recordCall(CurrRequest.CodInst, CurrRequest.CodApp, $"POST:api/files/list:{id}"); } - else if (file.Length > maxFileSize) - { - logger.LogInformation("{FileName} of {Length} bytes is larger than the limit of {Limit} bytes (Err: 2)", trustedFileNameForDisplay, file.Length, maxFileSize); - uploadResult.ErrorCode = 2; - } - else - { - try - { - DateTime oggi = DateTime.Today; - trustedFileNameForFileStorage = Path.GetRandomFileName(); - relDir = _configuration["FileShare"]; - fileDir = Path.Combine(relDir, ticketDir); - if (!Directory.Exists(fileDir)) - { - Directory.CreateDirectory(fileDir); - } - var path = Path.Combine(fileDir, trustedFileNameForFileStorage); - - await using FileStream fs = new(path, FileMode.Create); - await file.CopyToAsync(fs); - - logger.LogInformation("{FileName} saved at {Path}", trustedFileNameForDisplay, path); - uploadResult.Uploaded = true; - uploadResult.StoredFileName = trustedFileNameForFileStorage; - } - catch (IOException ex) - { - logger.LogError("{FileName} error on upload (Err: 3): {Message}", trustedFileNameForDisplay, ex.Message); - uploadResult.ErrorCode = 3; - } - } - - uploadResults.Add(uploadResult); - // salvo su DB - var fatto = dataService.FileAdd(ticketId, ticketDir, uploadResults); - - return new CreatedResult(resourcePath, uploadResult); + return result; } /// @@ -147,12 +118,12 @@ namespace LiMan.APi.Controllers { if (file.Length == 0) { - logger.LogInformation("{FileName} length is 0 (Err: 1)", trustedFileNameForDisplay); + Log.Info($"{trustedFileNameForDisplay} length is 0 (Err: 1)"); uploadResult.ErrorCode = 1; } else if (file.Length > maxFileSize) { - logger.LogInformation("{FileName} of {Length} bytes is larger than the limit of {Limit} bytes (Err: 2)", trustedFileNameForDisplay, file.Length, maxFileSize); + Log.Info($"{trustedFileNameForDisplay} of {file.Length} bytes is larger than the limit of {maxFileSize} bytes (Err: 2)"); uploadResult.ErrorCode = 2; } else @@ -172,13 +143,13 @@ namespace LiMan.APi.Controllers await using FileStream fs = new(path, FileMode.Create); await file.CopyToAsync(fs); - logger.LogInformation("{FileName} saved at {Path}", trustedFileNameForDisplay, path); + Log.Info($"{trustedFileNameForDisplay} saved at {path}"); uploadResult.Uploaded = true; uploadResult.StoredFileName = trustedFileNameForFileStorage; } catch (IOException ex) { - logger.LogError("{FileName} error on upload (Err: 3): {Message}", trustedFileNameForDisplay, ex.Message); + Log.Error($"{trustedFileNameForDisplay} error on upload (Err: 3): {ex.Message}"); uploadResult.ErrorCode = 3; } } @@ -187,7 +158,7 @@ namespace LiMan.APi.Controllers } else { - logger.LogInformation("{FileName} not uploaded because the request exceeded the allowed {Count} of files (Err: 4)", trustedFileNameForDisplay, maxAllowedFiles); + Log.Info($"{trustedFileNameForDisplay} not uploaded because the request exceeded the allowed {maxAllowedFiles} of files (Err: 4)"); uploadResult.ErrorCode = 4; } @@ -195,28 +166,80 @@ namespace LiMan.APi.Controllers } // salvo su DB var fatto = dataService.FileAdd(ticketId, ticketDir, uploadResults); + Log.Info($"Ticket: {ticketId} | dir: {ticketDir} | {uploadResults.Count} files"); return new CreatedResult(resourcePath, uploadResults); } - /// - /// Richiesta di registrazione ticket supporto + /// Caricamento file effettivo via POST /// - /// Obj Richiesta - // POST api/files/list/1 - [HttpPost("list/{id}")] - public async Task> list(int id, [FromBody] SupportRequest CurrRequest) + /// TicketId x riferimento + /// Elenco files da caricare + /// + [HttpPost("single")] + public async Task> PostSingleFile([FromForm] int ticketId, [FromForm] IFormFile file) { - List result = new List(); - // controllo valori - if (CurrRequest.IsValid) + // max 200 mb + long maxFileSize = 1024 * 1024 * 200; + string ticketDir = $"T{ticketId:000000000}"; + var resourcePath = new Uri($"{Request.Scheme}://{Request.Host}/api/filesave/list/{ticketId}"); + List uploadResults = new(); + string fileDir = env.ContentRootPath; + string relDir = env.EnvironmentName; + + var uploadResult = new UploadResult(); + string trustedFileNameForFileStorage; + var untrustedFileName = file.FileName; + uploadResult.FileName = untrustedFileName; + var trustedFileNameForDisplay = WebUtility.HtmlEncode(untrustedFileName); + + if (file.Length == 0) { - // cerco i files dato ticket - result = await dataService.FileGetFilt(id); - await dataService.recordCall(CurrRequest.CodInst, CurrRequest.CodApp, $"POST:api/files/list:{id}"); + Log.Info($"{trustedFileNameForDisplay} length is 0 (Err: 1)"); + uploadResult.ErrorCode = 1; } - return result; + else if (file.Length > maxFileSize) + { + Log.Info($"{trustedFileNameForDisplay} of {file.Length} bytes is larger than the limit of {maxFileSize} bytes (Err: 2)"); + uploadResult.ErrorCode = 2; + } + else + { + try + { + DateTime oggi = DateTime.Today; + trustedFileNameForFileStorage = Path.GetRandomFileName(); + relDir = _configuration["FileShare"]; + fileDir = Path.Combine(relDir, ticketDir); + if (!Directory.Exists(fileDir)) + { + Directory.CreateDirectory(fileDir); + } + var path = Path.Combine(fileDir, trustedFileNameForFileStorage); + + await using FileStream fs = new(path, FileMode.Create); + await file.CopyToAsync(fs); + + Log.Info($"{trustedFileNameForDisplay} saved at {path}"); + uploadResult.Uploaded = true; + uploadResult.StoredFileName = trustedFileNameForFileStorage; + } + catch (IOException ex) + { + Log.Error($"{trustedFileNameForDisplay} error on upload (Err: 3): {ex.Message}"); + uploadResult.ErrorCode = 3; + } + } + + uploadResults.Add(uploadResult); + // salvo su DB + var fatto = dataService.FileAdd(ticketId, ticketDir, uploadResults); + Log.Info($"Ticket: {ticketId} | dir: {ticketDir} | {uploadResults.Count} files"); + + return new CreatedResult(resourcePath, uploadResult); } + + #endregion Public Methods } -} +} \ No newline at end of file diff --git a/LiMan.Api/Controllers/TicketController.cs b/LiMan.Api/Controllers/TicketController.cs index 0965b08..d876543 100644 --- a/LiMan.Api/Controllers/TicketController.cs +++ b/LiMan.Api/Controllers/TicketController.cs @@ -3,6 +3,7 @@ using LiMan.APi.Data; using LiMan.DB.DTO; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using NLog; using System; using System.Collections.Generic; @@ -86,6 +87,7 @@ namespace LiMan.APi.Controllers // restituisco richieste aperte var rawResult= await dataService.TicketByCliente(CurrRequest.CodInst, CurrRequest.CodApp, CurrRequest.MasterKey, 1); result = rawResult.FirstOrDefault(); + Log.Info($"Ticket generated: {result.IdxTicket} | CI: {CurrRequest.CodInst} | CA: {CurrRequest.CodApp}"); await dataService.recordCall(CurrRequest.CodInst, CurrRequest.CodApp, $"POST:api/ticket/sendReq:{CurrRequest.MasterKey}"); return result; } diff --git a/LiMan.Api/LiMan.APi.xml b/LiMan.Api/LiMan.APi.xml index 64f14e3..deb42da 100644 --- a/LiMan.Api/LiMan.APi.xml +++ b/LiMan.Api/LiMan.APi.xml @@ -98,12 +98,12 @@ Controller caricamento file - + - Dataservice x accesso DB + Classe per logging - + Init generico @@ -112,12 +112,17 @@ - + - Caricamento file effettivo via POST + Dataservice x accesso DB - TicketId x riferimento - Elenco files da caricare + + + + Richiesta di registrazione ticket supporto + + + @@ -128,11 +133,13 @@ Elenco files da caricare - + - Richiesta di registrazione ticket supporto + Caricamento file effettivo via POST - Obj Richiesta + TicketId x riferimento + Elenco files da caricare + diff --git a/LiMan.UI/LiMan.UI.csproj b/LiMan.UI/LiMan.UI.csproj index bb72afd..6d5e0b6 100644 --- a/LiMan.UI/LiMan.UI.csproj +++ b/LiMan.UI/LiMan.UI.csproj @@ -2,7 +2,7 @@ net5.0 - 1.1.2202.0414 + 1.1.2202.0415 LiMan.UI LiMan.UI diff --git a/LiMan.UI/Resources/ChangeLog.html b/LiMan.UI/Resources/ChangeLog.html index c4577de..98df7b4 100644 --- a/LiMan.UI/Resources/ChangeLog.html +++ b/LiMan.UI/Resources/ChangeLog.html @@ -1,6 +1,6 @@ License Manager -

Versione: 1.1.2202.0414

+

Versione: 1.1.2202.0415


Note di rilascio:
    diff --git a/LiMan.UI/Resources/VersNum.txt b/LiMan.UI/Resources/VersNum.txt index 41ce8b4..d800794 100644 --- a/LiMan.UI/Resources/VersNum.txt +++ b/LiMan.UI/Resources/VersNum.txt @@ -1 +1 @@ -1.1.2202.0414 +1.1.2202.0415 diff --git a/LiMan.UI/Resources/manifest.xml b/LiMan.UI/Resources/manifest.xml index 67341d8..c5bd112 100644 --- a/LiMan.UI/Resources/manifest.xml +++ b/LiMan.UI/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.1.2202.0414 + 1.1.2202.0415 https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/LiMan.UI.zip https://nexus.steamware.net/repository/SWS/LiMan/stable/LAST/ChangeLog.html false