This commit is contained in:
2022-02-22 18:53:22 +00:00
parent 639e1c0e33
commit 1698c59a73
2 changed files with 168 additions and 1 deletions

2
.vscode/launch.json vendored
View File

@@ -48,7 +48,7 @@
"AYANOVA_DATA_PATH": "c:\\temp\\ravendata",
"AYANOVA_USE_URLS": "http://*:7575;",
//"AYANOVA_PERMANENTLY_ERASE_DATABASE":"true",
"AYANOVA_SERVER_TEST_MODE": "true",
"AYANOVA_SERVER_TEST_MODE": "false",
//"AYANOVA_REPORT_RENDERING_TIMEOUT":"1",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_14\\bin"

View File

@@ -10,6 +10,8 @@ using AyaNova.Models;
using System.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Hosting;
using AyaNova.Util;
using System.Linq;
using System.IO;
namespace AyaNova.Api.Controllers
@@ -196,6 +198,171 @@ namespace AyaNova.Api.Controllers
}));
}
// /// <summary>
// /// Download all logs and server configuration setting in one zip package for technical support purposes
// /// </summary>
// /// <param name="t">download token</param>
// /// <returns>A single zip file</returns>
// [AllowAnonymous]
// [HttpGet("tech-support-info")]
// public async Task<IActionResult> DownloadSupportInfo([FromQuery] string t)
// {
// //NOTE: this route deliberately open even when server closed as a troubleshooting measure
// if (!ModelState.IsValid)
// return BadRequest(new ApiErrorResponse(ModelState));
// var user = await UserBiz.ValidateDownloadTokenAndReturnUserAsync(t, ct);
// if (user == null)
// {
// await Task.Delay(AyaNova.Util.ServerBootConfig.FAILED_AUTH_DELAY);//DOS protection
// return StatusCode(401, new ApiErrorResponse(ApiErrorCode.AUTHENTICATION_FAILED));
// }
// if (!Authorized.HasReadFullRole(user.Roles, AyaType.LogFile) || !Authorized.HasReadFullRole(user.Roles, AyaType.ServerState))
// return StatusCode(403, new ApiNotAuthorizedResponse());
// System.Text.StringBuilder sbRet = new System.Text.StringBuilder();
// sbRet.AppendLine("#########################################################");
// sbRet.AppendLine("SERVER CONFIGURATION");
// sbRet.AppendLine($"AYANOVA_USE_URLS: {ServerBootConfig.AYANOVA_USE_URLS}");
// sbRet.AppendLine($"AYANOVA_DB_CONNECTION: {DbUtil.PasswordRedactedConnectionString(ServerBootConfig.AYANOVA_DB_CONNECTION)}");
// sbRet.AppendLine($"AYANOVA_REPORT_RENDERING_TIMEOUT: {ServerBootConfig.AYANOVA_REPORT_RENDERING_TIMEOUT}");
// sbRet.AppendLine($"AYANOVA_DEFAULT_TRANSLATION: {ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION}");
// sbRet.AppendLine($"AYANOVA_ATTACHMENT_FILES_PATH: {ServerBootConfig.AYANOVA_ATTACHMENT_FILES_PATH}");
// sbRet.AppendLine($"AYANOVA_BACKUP_FILES_PATH: {ServerBootConfig.AYANOVA_BACKUP_FILES_PATH}");
// sbRet.AppendLine($"AYANOVA_TEMP_FILES_PATH: {ServerBootConfig.AYANOVA_TEMP_FILES_PATH}");
// sbRet.AppendLine($"AYANOVA_BACKUP_PG_DUMP_PATH: {ServerBootConfig.AYANOVA_BACKUP_PG_DUMP_PATH}");
// sbRet.AppendLine($"AYANOVA_LOG_PATH: {ServerBootConfig.AYANOVA_LOG_PATH}");
// sbRet.AppendLine($"AYANOVA_LOG_LEVEL: {ServerBootConfig.AYANOVA_LOG_LEVEL}");
// sbRet.AppendLine($"AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG: {ServerBootConfig.AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG}");
// sbRet.AppendLine("#########################################################");
// sbRet.AppendLine("SERVER DIAGNOSTICS");
// foreach (var di in ServerBootConfig.BOOT_DIAGNOSTIC_INFO)
// {
// sbRet.AppendLine($"{di.Key}: {di.Value}");
// }
// sbRet.AppendLine("#########################################################");
// sbRet.AppendLine("DB SERVER DIAGNOSTICS");
// foreach (var di in ServerBootConfig.DBSERVER_DIAGNOSTIC_INFO)
// {
// sbRet.AppendLine($"{di.Key}: {di.Value}");
// }
// //System.IO.Compression.ZipFile.CreateFromDirectory(ServerBootConfig.AYANOVA_LOG_PATH, AttachmentsBackupFile);
// var files = System.IO.Directory.GetFiles(ServerBootConfig.AYANOVA_LOG_PATH, "*.txt").OrderBy(z => new FileInfo(z).LastWriteTime).Select(z => System.IO.Path.GetFileName(z)).ToList();
// //Directory.GetFiles(@“C:\RPA\Vector Reports”,“IW28*”).OrderByAscending(d => new FileInfo(d).GetLastWriteTime)
// sbRet.AppendLine("#########################################################");
// sbRet.AppendLine($"SERVER LOGS");
// foreach (string logfilename in files)
// {
// var logFilePath = System.IO.Path.Combine(ServerBootConfig.AYANOVA_LOG_PATH, logfilename);
// FileStreamOptions fso = new FileStreamOptions();
// fso.Access = FileAccess.Read;
// fso.Mode = FileMode.Open;
// fso.Share = FileShare.ReadWrite;
// using (StreamReader sr = new StreamReader(logFilePath, fso))
// {
// sbRet.AppendLine(sr.ReadToEnd());
// }
// }
// sbRet.AppendLine("#########################################################");
// return Content(sbRet.ToString());
// }
/// <summary>
/// Fetch all logs and server configuration setting for technical support purposes
/// </summary>
/// <returns>text result</returns>
[HttpGet("tech-support-info")]
public ActionResult GetTechSupportInfo()
{
if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.LogFile) || !Authorized.HasReadFullRole(HttpContext.Items, AyaType.ServerState))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
System.Text.StringBuilder sbRet = new System.Text.StringBuilder();
sbRet.AppendLine("#########################################################");
sbRet.AppendLine("SERVER CONFIGURATION");
sbRet.AppendLine($"AYANOVA_USE_URLS: {ServerBootConfig.AYANOVA_USE_URLS}");
sbRet.AppendLine($"AYANOVA_DB_CONNECTION: {DbUtil.PasswordRedactedConnectionString(ServerBootConfig.AYANOVA_DB_CONNECTION)}");
sbRet.AppendLine($"AYANOVA_REPORT_RENDERING_TIMEOUT: {ServerBootConfig.AYANOVA_REPORT_RENDERING_TIMEOUT}");
sbRet.AppendLine($"AYANOVA_DEFAULT_TRANSLATION: {ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION}");
sbRet.AppendLine($"AYANOVA_ATTACHMENT_FILES_PATH: {ServerBootConfig.AYANOVA_ATTACHMENT_FILES_PATH}");
sbRet.AppendLine($"AYANOVA_BACKUP_FILES_PATH: {ServerBootConfig.AYANOVA_BACKUP_FILES_PATH}");
sbRet.AppendLine($"AYANOVA_TEMP_FILES_PATH: {ServerBootConfig.AYANOVA_TEMP_FILES_PATH}");
sbRet.AppendLine($"AYANOVA_BACKUP_PG_DUMP_PATH: {ServerBootConfig.AYANOVA_BACKUP_PG_DUMP_PATH}");
sbRet.AppendLine($"AYANOVA_LOG_PATH: {ServerBootConfig.AYANOVA_LOG_PATH}");
sbRet.AppendLine($"AYANOVA_LOG_LEVEL: {ServerBootConfig.AYANOVA_LOG_LEVEL}");
sbRet.AppendLine($"AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG: {ServerBootConfig.AYANOVA_LOG_ENABLE_LOGGER_DIAGNOSTIC_LOG}");
sbRet.AppendLine("#########################################################");
sbRet.AppendLine("SERVER DIAGNOSTICS");
foreach (var di in ServerBootConfig.BOOT_DIAGNOSTIC_INFO)
{
sbRet.AppendLine($"{di.Key}: {di.Value}");
}
sbRet.AppendLine("#########################################################");
sbRet.AppendLine("DB SERVER DIAGNOSTICS");
foreach (var di in ServerBootConfig.DBSERVER_DIAGNOSTIC_INFO)
{
sbRet.AppendLine($"{di.Key}: {di.Value}");
}
//System.IO.Compression.ZipFile.CreateFromDirectory(ServerBootConfig.AYANOVA_LOG_PATH, AttachmentsBackupFile);
var files = System.IO.Directory.GetFiles(ServerBootConfig.AYANOVA_LOG_PATH, "*.txt").OrderBy(z => new FileInfo(z).LastWriteTime).Select(z => System.IO.Path.GetFileName(z)).ToList();
//Directory.GetFiles(@“C:\RPA\Vector Reports”,“IW28*”).OrderByAscending(d => new FileInfo(d).GetLastWriteTime)
sbRet.AppendLine("#########################################################");
sbRet.AppendLine($"ALL SERVER LOGS");
foreach (string logfilename in files)
{
var logFilePath = System.IO.Path.Combine(ServerBootConfig.AYANOVA_LOG_PATH, logfilename);
FileStreamOptions fso = new FileStreamOptions();
fso.Access = FileAccess.Read;
fso.Mode = FileMode.Open;
fso.Share = FileShare.ReadWrite;
using (StreamReader sr = new StreamReader(logFilePath, fso))
{
sbRet.AppendLine(sr.ReadToEnd());
}
}
sbRet.AppendLine("#########################################################");
return Ok(ApiOkResponse.Response(sbRet.ToString()));
}
//------------