Code reorg
This commit is contained in:
@@ -163,6 +163,11 @@ namespace EgwControlCenter.App
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Evento completamento caricamento app
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private async void BlazorForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
SetPosition();
|
||||
@@ -183,6 +188,11 @@ namespace EgwControlCenter.App
|
||||
await ACService.SendStats();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Evento post resize
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void BlazorForm_Resize(object sender, EventArgs e)
|
||||
{
|
||||
CheckFormVisibility();
|
||||
|
||||
@@ -291,6 +291,7 @@ namespace EgwControlCenter.Core
|
||||
CloudCallActive = false;
|
||||
return tVal;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Chiamata verifica attivazioni
|
||||
/// </summary>
|
||||
@@ -449,61 +450,6 @@ namespace EgwControlCenter.Core
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info di reboot effettuato (spostando da req/run a done...)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendRebooted()
|
||||
{
|
||||
// preparo un task di reboot da inviare
|
||||
var task2send = new Dictionary<string, string>();
|
||||
task2send.Add("ExecStart", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
await CurrCheck.TaskSetRunning(DeviceName, task2send);
|
||||
await Task.Delay(500);
|
||||
await CurrCheck.TaskSetDone(DeviceName, task2send);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info licenza (se disponibili)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendLicInfo()
|
||||
{
|
||||
if (CurrCheck.LicenceFilesDict.Count > 0)
|
||||
{
|
||||
// serializzo risultato
|
||||
string rawData = JsonConvert.SerializeObject(CurrCheck.LicenceFilesDict);
|
||||
Dictionary<string, string> licInfo = new Dictionary<string, string>();
|
||||
// chiave: LicInfo
|
||||
licInfo.Add("LicInfo", rawData);
|
||||
// invio!
|
||||
await CurrCheck.TaskSetDone(DeviceName, licInfo);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Invia info configurazione (directory)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendConfTarget()
|
||||
{
|
||||
// preparo un task di conf da inviare
|
||||
var task2send = new Dictionary<string, string>();
|
||||
string rawConf = JsonConvert.SerializeObject(CurrCheck.CurrPatrolCont.TargetList);
|
||||
task2send.Add("TargetList", rawConf);
|
||||
await Task.Delay(500);
|
||||
await CurrCheck.TaskSetDone(DeviceName, task2send);
|
||||
}
|
||||
/// <summary>
|
||||
/// Invia info satats preliminari
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendStats()
|
||||
{
|
||||
// invio statistiche esecuzione...
|
||||
await DoSendRunStats();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce un codice di auth temporaneo INT da impiegare x autorizzare
|
||||
/// </summary>
|
||||
@@ -589,6 +535,62 @@ namespace EgwControlCenter.Core
|
||||
ReportConfigUpd();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info configurazione (directory)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendConfTarget()
|
||||
{
|
||||
// preparo un task di conf da inviare
|
||||
var task2send = new Dictionary<string, string>();
|
||||
string rawConf = JsonConvert.SerializeObject(CurrCheck.CurrPatrolCont.TargetList);
|
||||
task2send.Add("TargetList", rawConf);
|
||||
await Task.Delay(500);
|
||||
await CurrCheck.TaskSetDone(DeviceName, task2send);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info licenza (se disponibili)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendLicInfo()
|
||||
{
|
||||
if (CurrCheck.LicenceFilesDict.Count > 0)
|
||||
{
|
||||
// serializzo risultato
|
||||
string rawData = JsonConvert.SerializeObject(CurrCheck.LicenceFilesDict);
|
||||
Dictionary<string, string> licInfo = new Dictionary<string, string>();
|
||||
// chiave: LicInfo
|
||||
licInfo.Add("LicInfo", rawData);
|
||||
// invio!
|
||||
await CurrCheck.TaskSetDone(DeviceName, licInfo);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info di reboot effettuato (spostando da req/run a done...)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendRebooted()
|
||||
{
|
||||
// preparo un task di reboot da inviare
|
||||
var task2send = new Dictionary<string, string>();
|
||||
task2send.Add("ExecStart", $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
await CurrCheck.TaskSetRunning(DeviceName, task2send);
|
||||
await Task.Delay(500);
|
||||
await CurrCheck.TaskSetDone(DeviceName, task2send);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia info satats preliminari
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendStats()
|
||||
{
|
||||
// invio statistiche esecuzione...
|
||||
await DoSendRunStats();
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
@@ -654,7 +656,7 @@ namespace EgwControlCenter.Core
|
||||
// serializzo risultato
|
||||
string rawData = JsonConvert.SerializeObject(CurrCheck.LicenceFilesDict);
|
||||
Dictionary<string, string> licInfo = new Dictionary<string, string>();
|
||||
// chiave: LicInfo
|
||||
// chiave: LicInfo
|
||||
licInfo.Add("LicInfo", rawData);
|
||||
// invio!
|
||||
await CurrCheck.TaskSetDone(DeviceName, licInfo);
|
||||
@@ -671,7 +673,7 @@ namespace EgwControlCenter.Core
|
||||
var statsData = StatsCollector.CurrentInfo();
|
||||
string rawData = JsonConvert.SerializeObject(statsData);
|
||||
Dictionary<string, string> statsInfo = new Dictionary<string, string>();
|
||||
// chiave: RunStats
|
||||
// chiave: RunStats
|
||||
statsInfo.Add("RunStats", rawData);
|
||||
// invio!
|
||||
await CurrCheck.TaskSetDone(DeviceName, statsInfo);
|
||||
@@ -936,7 +938,8 @@ namespace EgwControlCenter.Core
|
||||
else
|
||||
{
|
||||
// se valido sovrascrivo e salvo!
|
||||
CurrCheck.CurrPatrolCont.TargetList= newTargetList;
|
||||
CurrCheck.CurrPatrolCont.TargetList = newTargetList;
|
||||
CurrCheck.SaveConfig();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -66,7 +66,12 @@ namespace EgwControlCenter.Core
|
||||
/// <summary>
|
||||
/// Upsert di parametri operativi (gestiti in remoto)
|
||||
/// </summary>
|
||||
ParamUpsert
|
||||
ParamUpsert,
|
||||
|
||||
/// <summary>
|
||||
/// Upsert valori TargetList (gestiti in remoto)
|
||||
/// </summary>
|
||||
TargetListUpsert
|
||||
}
|
||||
|
||||
public enum TipoLicenza
|
||||
|
||||
@@ -105,6 +105,11 @@ namespace EgwControlCenter.Core
|
||||
/// </summary>
|
||||
public PatrolSettings CurrPatrolCont { get; set; } = new PatrolSettings();
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario files licenze trovati
|
||||
/// </summary>
|
||||
public Dictionary<string, string> LicenceFilesDict { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// Elenco degli oggetti stato dei programmi monitorati
|
||||
/// </summary>
|
||||
@@ -579,6 +584,18 @@ namespace EgwControlCenter.Core
|
||||
return taskReq;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia un dizionario di task completato (x richieste o salvataggio da EgwACC)
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="taskRes"></param
|
||||
/// <returns></returns>
|
||||
public async Task<string> TaskSetDone(string devName, Dictionary<string, string> taskRes)
|
||||
{
|
||||
string answ = await TaskPostInfo(devName, taskRes, "done");
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia un dizionario che dovrebbe comprendere tutte le richieste task 8da chiudere) + eventuali altri dati da salvare
|
||||
/// </summary>
|
||||
@@ -592,60 +609,108 @@ namespace EgwControlCenter.Core
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Metodo effettivo invio post info sul task
|
||||
/// Aggiorna info files licenza (se configurato e se trovate)
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="taskRes"></param
|
||||
/// <param name="action"></param>
|
||||
/// <param name="doRefresh"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<string> TaskPostInfo(string devName, Dictionary<string, string> taskRes, string action)
|
||||
public bool UpdateLicenceInfo()
|
||||
{
|
||||
string answ = "";
|
||||
try
|
||||
/*-------------------------------------------
|
||||
* Ricerca licenze: algoritmo
|
||||
* - parte da un percorso di base
|
||||
* - cerca x ogni cartella la sottocartella /Config/ i files *.ini
|
||||
* - prende i files che contengono "Licence="
|
||||
* - considera solo i file con valore valido x Licence
|
||||
* - prende il relativo file *.lic indicato (stessa folder)
|
||||
* - legge e riporta intero contenuto nel record dizionario:
|
||||
* - chiave = percorso file *.lic
|
||||
* - valore = contenuto file
|
||||
*-------------------------------------------*/
|
||||
|
||||
bool fatto = false;
|
||||
// nuovo obj licenze...
|
||||
Dictionary<string, string> newLicDict = new Dictionary<string, string>();
|
||||
// ciclo SOLO gli oggetti licenza info
|
||||
var licTgt = CurrPatrolCont
|
||||
.TargetList
|
||||
.Where(x => x.ApplicationType == CoreEnum.AppType.LicenceApp)
|
||||
.ToList();
|
||||
int numFound = 0;
|
||||
foreach (var item in licTgt)
|
||||
{
|
||||
// preparo richiesta...
|
||||
TaskResultDTO currReq = new TaskResultDTO()
|
||||
try
|
||||
{
|
||||
AppKey = CurrPatrolCont.AppKey,
|
||||
CodImp = CodImpiego,
|
||||
MastKey = "",
|
||||
DataPayload = taskRes
|
||||
};
|
||||
// client chiamate rest
|
||||
var client = new RestClient(restOptStd);
|
||||
// Chiamo il metodo!
|
||||
var actReq = new RestRequest($"/api/apptask/{action}/{devName}", Method.Post);
|
||||
string payload = JsonConvert.SerializeObject(currReq);
|
||||
actReq.AddJsonBody(payload);
|
||||
// effettuo vera chiamata
|
||||
var currResp = await client.PostAsync(actReq);
|
||||
if (currResp.StatusCode == System.Net.HttpStatusCode.OK && currResp.Content != null)
|
||||
{
|
||||
answ = $"{currResp.Content}";
|
||||
// verifico contenuto secondo tipo
|
||||
if (item != null && item.IsEnabled)
|
||||
{
|
||||
// processo la folder indicata e cerco tutte le macchine contenute
|
||||
if (Directory.Exists(item.BasePath))
|
||||
{
|
||||
// recupero elenco sottodirectory = possibili conf applicativi
|
||||
var dirList = Directory.GetDirectories(item.BasePath);
|
||||
// ciclo x cercare i files...
|
||||
foreach (var currDir in dirList)
|
||||
{
|
||||
string prgName = Path.GetFileName(currDir);
|
||||
// compongo ricerca della cartella Config dentro la folder target
|
||||
string confPath = Path.Combine(currDir, "Config");
|
||||
// verifico se esiste directory...
|
||||
if (Directory.Exists(confPath))
|
||||
{
|
||||
// cerco se ci sia un file di quelli richiesti...
|
||||
var fileFound = Directory.GetFiles(confPath, item.SearchPattern);
|
||||
if (fileFound != null && fileFound.Count() > 0)
|
||||
{
|
||||
// ciclo su tutti i file candidati...
|
||||
foreach (var file in fileFound)
|
||||
{
|
||||
// vincolo dei soli file con nome uguale alla folder ancestor...
|
||||
string iniName = Path.GetFileName(file);
|
||||
if (iniName.StartsWith($"{prgName}."))
|
||||
{
|
||||
string licName = LicSearchFileName(file);
|
||||
if (!string.IsNullOrEmpty(licName))
|
||||
{
|
||||
var contDir = Path.GetDirectoryName(file);
|
||||
if (!string.IsNullOrEmpty(contDir))
|
||||
{
|
||||
string licPath = Path.Combine(contDir, licName);
|
||||
if (File.Exists(licPath))
|
||||
{
|
||||
// leggo il contenuto e salvo...
|
||||
var licContent = File.ReadAllText(licPath);
|
||||
if (!newLicDict.ContainsKey(licPath))
|
||||
{
|
||||
newLicDict.Add(licPath, licContent);
|
||||
numFound++;
|
||||
}
|
||||
else
|
||||
{
|
||||
newLicDict[licPath] = licContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Errore in ricezione REST services TaskPostInfo | action: {action} | statusCode{currResp.StatusCode} | content: {currResp.Content}");
|
||||
Log.Error($"Eccezione in UpdateLicenceInfo{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in fase gestione REST services TaskPostInfo | action: {action}{Environment.NewLine}{exc}");
|
||||
}
|
||||
// aggiorno obj...
|
||||
LicenceFilesDict = newLicDict;
|
||||
// salvo info licenze...
|
||||
SaveLicDict();
|
||||
fatto = numFound > 0;
|
||||
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invia un dizionario di task completato (x richieste o salvataggio da EgwACC)
|
||||
/// </summary>
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="taskRes"></param
|
||||
/// <returns></returns>
|
||||
public async Task<string> TaskSetDone(string devName, Dictionary<string, string> taskRes)
|
||||
{
|
||||
string answ = await TaskPostInfo(devName, taskRes, "done");
|
||||
return answ;
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -675,7 +740,6 @@ namespace EgwControlCenter.Core
|
||||
{
|
||||
switch (item.ApplicationType)
|
||||
{
|
||||
|
||||
case CoreEnum.AppType.Machine:
|
||||
// processo la folder indicata e cerco tutte le macchine contenute
|
||||
if (Directory.Exists(item.BasePath))
|
||||
@@ -786,151 +850,6 @@ namespace EgwControlCenter.Core
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiorna info files licenza (se configurato e se trovate)
|
||||
/// </summary>
|
||||
/// <param name="doRefresh"></param>
|
||||
/// <returns></returns>
|
||||
public bool UpdateLicenceInfo()
|
||||
{
|
||||
/*-------------------------------------------
|
||||
* Ricerca licenze: algoritmo
|
||||
* - parte da un percorso di base
|
||||
* - cerca x ogni cartella la sottocartella /Config/ i files *.ini
|
||||
* - prende i files che contengono "Licence="
|
||||
* - considera solo i file con valore valido x Licence
|
||||
* - prende il relativo file *.lic indicato (stessa folder)
|
||||
* - legge e riporta intero contenuto nel record dizionario:
|
||||
* - chiave = percorso file *.lic
|
||||
* - valore = contenuto file
|
||||
*-------------------------------------------*/
|
||||
|
||||
bool fatto = false;
|
||||
// nuovo obj licenze...
|
||||
Dictionary<string, string> newLicDict = new Dictionary<string, string>();
|
||||
// ciclo SOLO gli oggetti licenza info
|
||||
var licTgt = CurrPatrolCont
|
||||
.TargetList
|
||||
.Where(x => x.ApplicationType == CoreEnum.AppType.LicenceApp)
|
||||
.ToList();
|
||||
int numFound = 0;
|
||||
foreach (var item in licTgt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// verifico contenuto secondo tipo
|
||||
if (item != null && item.IsEnabled)
|
||||
{
|
||||
// processo la folder indicata e cerco tutte le macchine contenute
|
||||
if (Directory.Exists(item.BasePath))
|
||||
{
|
||||
// recupero elenco sottodirectory = possibili conf applicativi
|
||||
var dirList = Directory.GetDirectories(item.BasePath);
|
||||
// ciclo x cercare i files...
|
||||
foreach (var currDir in dirList)
|
||||
{
|
||||
string prgName = Path.GetFileName(currDir);
|
||||
// compongo ricerca della cartella Config dentro la folder target
|
||||
string confPath = Path.Combine(currDir, "Config");
|
||||
// verifico se esiste directory...
|
||||
if (Directory.Exists(confPath))
|
||||
{
|
||||
// cerco se ci sia un file di quelli richiesti...
|
||||
var fileFound = Directory.GetFiles(confPath, item.SearchPattern);
|
||||
if (fileFound != null && fileFound.Count() > 0)
|
||||
{
|
||||
// ciclo su tutti i file candidati...
|
||||
foreach (var file in fileFound)
|
||||
{
|
||||
// vincolo dei soli file con nome uguale alla folder ancestor...
|
||||
string iniName = Path.GetFileName(file);
|
||||
if (iniName.StartsWith($"{prgName}."))
|
||||
{
|
||||
string licName = LicSearchFileName(file);
|
||||
if (!string.IsNullOrEmpty(licName))
|
||||
{
|
||||
var contDir = Path.GetDirectoryName(file);
|
||||
if (!string.IsNullOrEmpty(contDir))
|
||||
{
|
||||
string licPath = Path.Combine(contDir, licName);
|
||||
if (File.Exists(licPath))
|
||||
{
|
||||
// leggo il contenuto e salvo...
|
||||
var licContent = File.ReadAllText(licPath);
|
||||
if (!newLicDict.ContainsKey(licPath))
|
||||
{
|
||||
newLicDict.Add(licPath, licContent);
|
||||
numFound++;
|
||||
}
|
||||
else
|
||||
{
|
||||
newLicDict[licPath] = licContent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in UpdateLicenceInfo{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
// aggiorno obj...
|
||||
LicenceFilesDict = newLicDict;
|
||||
// salvo info licenze...
|
||||
SaveLicDict();
|
||||
fatto = numFound > 0;
|
||||
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Processa il file ini (se esistente) cercando file licenza e se lo trova restituisce il nome del file...
|
||||
/// </summary>
|
||||
/// <param name="iniPath">File ini da processare</param>
|
||||
/// <param name="maxLines">max num di linee da verificare</param>
|
||||
/// <returns></returns>
|
||||
private string LicSearchFileName(string iniPath, int maxLines = 20)
|
||||
{
|
||||
string answ = "";
|
||||
string licToken = "Licence=";
|
||||
if (File.Exists(iniPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(iniPath))
|
||||
{
|
||||
for (int i = 0; i < maxLines; i++)
|
||||
{
|
||||
if (reader.EndOfStream)
|
||||
break;
|
||||
|
||||
var line = reader.ReadLine();
|
||||
if (!string.IsNullOrEmpty(line))
|
||||
{
|
||||
if (line.Contains(licToken))
|
||||
{
|
||||
answ = line.Replace(licToken, "").Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"Error during LicSearchFileName: {Environment.NewLine}{ex}");
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Properties
|
||||
@@ -946,11 +865,6 @@ namespace EgwControlCenter.Core
|
||||
/// </summary>
|
||||
protected List<TargetStatus> ListStatus { get; set; } = new List<TargetStatus>();
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario files licenze trovati
|
||||
/// </summary>
|
||||
public Dictionary<string, string> LicenceFilesDict { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Private Fields
|
||||
@@ -995,7 +909,9 @@ namespace EgwControlCenter.Core
|
||||
private string CodImpiego { get; set; } = "";
|
||||
|
||||
private string ConfName { get; set; } = "";
|
||||
|
||||
private Dictionary<string, ReleaseDTO> CriticalRelCurrent { get; set; } = new Dictionary<string, ReleaseDTO>();
|
||||
|
||||
private string DataDir { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
@@ -1007,8 +923,20 @@ namespace EgwControlCenter.Core
|
||||
}
|
||||
|
||||
private string ERName { get; set; } = "EnrollReq.json";
|
||||
private string LSName { get; set; } = "LastStatus.json";
|
||||
|
||||
/// <summary>
|
||||
/// Path file salvataggio LicenceInfo
|
||||
/// </summary>
|
||||
private string LicInfoPath
|
||||
{
|
||||
get => Path.Combine(DataDir, LIName);
|
||||
//get => Path.Combine(ApplicationDeployment.CurrentDeployment.DataDirectory, LSName);
|
||||
}
|
||||
|
||||
private string LIName { get; set; } = "LicInfo.json";
|
||||
|
||||
private string LSName { get; set; } = "LastStatus.json";
|
||||
|
||||
private SubLicManager SLicManager { get; set; } = new SubLicManager();
|
||||
|
||||
/// <summary>
|
||||
@@ -1018,14 +946,6 @@ namespace EgwControlCenter.Core
|
||||
{
|
||||
get => Path.Combine(DataDir, LSName);
|
||||
}
|
||||
/// <summary>
|
||||
/// Path file salvataggio LicenceInfo
|
||||
/// </summary>
|
||||
private string LicInfoPath
|
||||
{
|
||||
get => Path.Combine(DataDir, LIName);
|
||||
//get => Path.Combine(ApplicationDeployment.CurrentDeployment.DataDirectory, LSName);
|
||||
}
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
@@ -1317,6 +1237,46 @@ namespace EgwControlCenter.Core
|
||||
ReloadData();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Processa il file ini (se esistente) cercando file licenza e se lo trova restituisce il nome del file...
|
||||
/// </summary>
|
||||
/// <param name="iniPath">File ini da processare</param>
|
||||
/// <param name="maxLines">max num di linee da verificare</param>
|
||||
/// <returns></returns>
|
||||
private string LicSearchFileName(string iniPath, int maxLines = 20)
|
||||
{
|
||||
string answ = "";
|
||||
string licToken = "Licence=";
|
||||
if (File.Exists(iniPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(iniPath))
|
||||
{
|
||||
for (int i = 0; i < maxLines; i++)
|
||||
{
|
||||
if (reader.EndOfStream)
|
||||
break;
|
||||
|
||||
var line = reader.ReadLine();
|
||||
if (!string.IsNullOrEmpty(line))
|
||||
{
|
||||
if (line.Contains(licToken))
|
||||
{
|
||||
answ = line.Replace(licToken, "").Trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"Error during LicSearchFileName: {Environment.NewLine}{ex}");
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera oggetto releaseDTO da file indicato
|
||||
/// </summary>
|
||||
@@ -1415,11 +1375,23 @@ namespace EgwControlCenter.Core
|
||||
var rawData = File.ReadAllText(LicInfoPath);
|
||||
if (!string.IsNullOrEmpty(rawData))
|
||||
{
|
||||
LicenceFilesDict = JsonConvert.DeserializeObject<Dictionary<string,string>>(rawData) ?? new Dictionary<string, string>();
|
||||
LicenceFilesDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData) ?? new Dictionary<string, string>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua salvataggio obj status
|
||||
/// </summary>
|
||||
private void SaveLicDict()
|
||||
{
|
||||
var rawData = JsonConvert.SerializeObject(LicenceFilesDict, Formatting.Indented);
|
||||
if (rawData != null && rawData.Length > 2)
|
||||
{
|
||||
File.WriteAllText(LicInfoPath, rawData);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua salvataggio obj status
|
||||
/// </summary>
|
||||
@@ -1448,15 +1420,48 @@ namespace EgwControlCenter.Core
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua salvataggio obj status
|
||||
/// Metodo effettivo invio post info sul task
|
||||
/// </summary>
|
||||
private void SaveLicDict()
|
||||
/// <param name="devName"></param>
|
||||
/// <param name="taskRes"></param
|
||||
/// <param name="action"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<string> TaskPostInfo(string devName, Dictionary<string, string> taskRes, string action)
|
||||
{
|
||||
var rawData = JsonConvert.SerializeObject(LicenceFilesDict, Formatting.Indented);
|
||||
if (rawData != null && rawData.Length > 2)
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
File.WriteAllText(LicInfoPath, rawData);
|
||||
// preparo richiesta...
|
||||
TaskResultDTO currReq = new TaskResultDTO()
|
||||
{
|
||||
AppKey = CurrPatrolCont.AppKey,
|
||||
CodImp = CodImpiego,
|
||||
MastKey = "",
|
||||
DataPayload = taskRes
|
||||
};
|
||||
// client chiamate rest
|
||||
var client = new RestClient(restOptStd);
|
||||
// Chiamo il metodo!
|
||||
var actReq = new RestRequest($"/api/apptask/{action}/{devName}", Method.Post);
|
||||
string payload = JsonConvert.SerializeObject(currReq);
|
||||
actReq.AddJsonBody(payload);
|
||||
// effettuo vera chiamata
|
||||
var currResp = await client.PostAsync(actReq);
|
||||
if (currResp.StatusCode == System.Net.HttpStatusCode.OK && currResp.Content != null)
|
||||
{
|
||||
answ = $"{currResp.Content}";
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Error($"Errore in ricezione REST services TaskPostInfo | action: {action} | statusCode{currResp.StatusCode} | content: {currResp.Content}");
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Eccezione in fase gestione REST services TaskPostInfo | action: {action}{Environment.NewLine}{exc}");
|
||||
}
|
||||
|
||||
return answ;
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
Reference in New Issue
Block a user