This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -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"
|
||||
|
||||
@@ -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()));
|
||||
|
||||
|
||||
}
|
||||
|
||||
//------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user