Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a42d581d4 | |||
| 625433a3af | |||
| 782a01a4b0 | |||
| e65105b305 | |||
| 0429ad398a | |||
| 268ee1e2e0 | |||
| d19dc0edb5 |
+1
-1
@@ -311,7 +311,7 @@ MON:IIS02:deploy:
|
|||||||
- dotnet restore "$env:SOL_NAME.sln"
|
- dotnet restore "$env:SOL_NAME.sln"
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
needs: ["MON:test"]
|
needs: ["MON:build"]
|
||||||
script:
|
script:
|
||||||
- dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj
|
- dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj
|
||||||
- dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj
|
- dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj
|
||||||
|
|||||||
+181
-51
@@ -28,6 +28,12 @@ namespace MP.Land.Data
|
|||||||
/// URL dell'API x chiamate gestione licenze
|
/// URL dell'API x chiamate gestione licenze
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static string apiUrl = "https://liman.egalware.com/ELM.API/";
|
private static string apiUrl = "https://liman.egalware.com/ELM.API/";
|
||||||
|
//private static string apiUrl = "https://localhost:44351/";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Chiave redis x info della licenza
|
||||||
|
/// </summary>
|
||||||
|
private static string rkeyAppInfo = "LongCache:AppInfo";
|
||||||
|
|
||||||
private readonly IDistributedCache distributedCache;
|
private readonly IDistributedCache distributedCache;
|
||||||
|
|
||||||
@@ -120,10 +126,26 @@ namespace MP.Land.Data
|
|||||||
|
|
||||||
public DateTime infoExpiry { get; set; } = DateTime.Today.AddDays(1);
|
public DateTime infoExpiry { get; set; } = DateTime.Today.AddDays(1);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Codice cliente/installazione
|
||||||
|
/// </summary>
|
||||||
public string Installazione { get; set; } = "";
|
public string Installazione { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Master key licenza principale
|
||||||
|
/// </summary>
|
||||||
public string MasterKey { get; set; } = "";
|
public string MasterKey { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Numero licenze da DB
|
||||||
|
/// </summary>
|
||||||
|
public int NumLicDb { get; set; } = -1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Numero licenze da auth remota
|
||||||
|
/// </summary>
|
||||||
|
public int NumLicRemote { get; set; } = -1;
|
||||||
|
|
||||||
public bool ValidData
|
public bool ValidData
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -160,7 +182,7 @@ namespace MP.Land.Data
|
|||||||
RestClient client = new RestClient(apiUrl);
|
RestClient client = new RestClient(apiUrl);
|
||||||
//client.Authenticator = new HttpBasicAuthenticator("username", "password");
|
//client.Authenticator = new HttpBasicAuthenticator("username", "password");
|
||||||
string MKeyEnc = HttpUtility.UrlEncode(MasterKey);
|
string MKeyEnc = HttpUtility.UrlEncode(MasterKey);
|
||||||
var request = new RestRequest($"/api/attivazioni/?chiave={MKeyEnc}", Method.Get);
|
var request = new RestRequest($"api/attivazioni/?chiave={MKeyEnc}", Method.Get);
|
||||||
var response = await client.GetAsync(request);
|
var response = await client.GetAsync(request);
|
||||||
// controllo risposta
|
// controllo risposta
|
||||||
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
||||||
@@ -172,6 +194,29 @@ namespace MP.Land.Data
|
|||||||
return await Task.FromResult(answ);
|
return await Task.FromResult(answ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recupera info licenza da remoto
|
||||||
|
/// </summary>
|
||||||
|
private async Task<List<LiManObj.ApplicativoDTO>> OnlineAppInfo()
|
||||||
|
{
|
||||||
|
List<LiManObj.ApplicativoDTO> answ = new List<LiManObj.ApplicativoDTO>();
|
||||||
|
// cerco online
|
||||||
|
RestClient client = new RestClient(apiUrl);
|
||||||
|
string MKeyEnc = HttpUtility.UrlEncode(MasterKey);
|
||||||
|
//string mKey = System.Net.WebUtility.UrlEncode(MasterKey);
|
||||||
|
string reqUrl = $"api/licenza/{Installazione}?CodApp={Applicazione}&Chiave={MKeyEnc}";
|
||||||
|
var request = new RestRequest(reqUrl, Method.Get);
|
||||||
|
var response = await client.GetAsync(request);
|
||||||
|
// controllo risposta
|
||||||
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
||||||
|
{
|
||||||
|
// verifico risposta
|
||||||
|
string rawData = $"{response.Content}";
|
||||||
|
answ = JsonConvert.DeserializeObject<List<LiManObj.ApplicativoDTO>?>(rawData);
|
||||||
|
}
|
||||||
|
return await Task.FromResult(answ);
|
||||||
|
}
|
||||||
|
|
||||||
private void ReportUpdated()
|
private void ReportUpdated()
|
||||||
{
|
{
|
||||||
if (EA_InfoUpdated != null)
|
if (EA_InfoUpdated != null)
|
||||||
@@ -184,6 +229,25 @@ namespace MP.Land.Data
|
|||||||
|
|
||||||
#region Protected Methods
|
#region Protected Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Cerca di recuperare valore INT da elenco AKV
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="varReq">Chiave AKV richiesta</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected int getAVKInt(string varReq)
|
||||||
|
{
|
||||||
|
int answ = -9999;
|
||||||
|
if (AKVList != null && AKVList.Count > 0)
|
||||||
|
{
|
||||||
|
var currRec = AKVList.Where(x => x.NomeVar == varReq).FirstOrDefault();
|
||||||
|
if (currRec != null)
|
||||||
|
{
|
||||||
|
answ = currRec.ValInt ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return answ;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Cerca di recuperare valore string da elenco AKV
|
/// Cerca di recuperare valore string da elenco AKV
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -285,55 +349,6 @@ namespace MP.Land.Data
|
|||||||
return await Task.FromResult(dbResult);
|
return await Task.FromResult(dbResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Init della classe con variabili di base da Redis/DB
|
|
||||||
/// </summary>
|
|
||||||
public bool InitAkv()
|
|
||||||
{
|
|
||||||
bool fatto = false;
|
|
||||||
Applicazione = "MAPO";
|
|
||||||
Installazione = getAVKStr("Installazione");
|
|
||||||
MasterKey = getAVKStr(Applicazione);
|
|
||||||
fatto = !string.IsNullOrEmpty($"{Installazione}{MasterKey}");
|
|
||||||
return fatto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Init della classe con variabili di base da Redis/DB
|
|
||||||
/// </summary>
|
|
||||||
public async Task<bool> RefreshLicense()
|
|
||||||
{
|
|
||||||
bool fatto = false;
|
|
||||||
var onlineAct = await OnlineActivationList();
|
|
||||||
if (onlineAct != null)
|
|
||||||
{
|
|
||||||
if (onlineAct.Count > 0)
|
|
||||||
{
|
|
||||||
// scadenza info a 15 gg...
|
|
||||||
int numDays = 15;
|
|
||||||
infoExpiry = DateTime.Now.AddDays(numDays);
|
|
||||||
ActivList = onlineAct;
|
|
||||||
fatto = await setActivList(onlineAct, numDays);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await Task.Delay(1);
|
|
||||||
return fatto;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> setActivList(List<LiManObj.AttivazioneDTO> newActList, int numDays)
|
|
||||||
{
|
|
||||||
bool fatto = false;
|
|
||||||
string cacheKey = $"{rKeyAttByLic}:{MasterKey}";
|
|
||||||
var rawData = JsonConvert.SerializeObject(newActList);
|
|
||||||
await setRSV(cacheKey, rawData, numDays * cacheFact * 24);
|
|
||||||
fatto = true;
|
|
||||||
if (EA_InfoUpdated != null)
|
|
||||||
{
|
|
||||||
EA_InfoUpdated?.Invoke();
|
|
||||||
}
|
|
||||||
return fatto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verifica attivazione licenza
|
/// Verifica attivazione licenza
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -363,6 +378,121 @@ namespace MP.Land.Data
|
|||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stato server gestione licenze
|
||||||
|
/// </summary>
|
||||||
|
public async Task<string> checkLimanServer()
|
||||||
|
{
|
||||||
|
string answ = "ND";
|
||||||
|
// cerco online
|
||||||
|
RestClient client = new RestClient(apiUrl);
|
||||||
|
var request = new RestRequest($"api/health", Method.Get);
|
||||||
|
var response = await client.GetAsync(request);
|
||||||
|
// controllo risposta
|
||||||
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
||||||
|
{
|
||||||
|
// verifico risposta
|
||||||
|
answ = response.Content.Replace("\"", "");
|
||||||
|
}
|
||||||
|
return await Task.FromResult(answ);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Init della classe con variabili di base da Redis/DB
|
||||||
|
/// </summary>
|
||||||
|
public bool InitAkv()
|
||||||
|
{
|
||||||
|
bool fatto = false;
|
||||||
|
Applicazione = "MAPO";
|
||||||
|
Installazione = getAVKStr("Installazione");
|
||||||
|
MasterKey = getAVKStr(Applicazione);
|
||||||
|
NumLicDb = getAVKInt(Applicazione);
|
||||||
|
fatto = !string.IsNullOrEmpty($"{Installazione}{MasterKey}");
|
||||||
|
return fatto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<List<LiManObj.ApplicativoDTO>> LicAppCache()
|
||||||
|
{
|
||||||
|
List<LiManObj.ApplicativoDTO> dbResult = new List<LiManObj.ApplicativoDTO>();
|
||||||
|
string cacheKey = $"{rkeyAppInfo}:{MasterKey}";
|
||||||
|
trackCache(cacheKey);
|
||||||
|
string rawData = await getRSV(cacheKey);
|
||||||
|
if (!string.IsNullOrEmpty(rawData))
|
||||||
|
{
|
||||||
|
var cacheRes = JsonConvert.DeserializeObject<List<LiManObj.ApplicativoDTO>?>(rawData);
|
||||||
|
if (cacheRes != null)
|
||||||
|
{
|
||||||
|
dbResult = cacheRes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return await Task.FromResult(dbResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Init della classe con variabili di base da Redis/DB
|
||||||
|
/// </summary>
|
||||||
|
public async Task<bool> RefreshLicense()
|
||||||
|
{
|
||||||
|
bool fatto = false;
|
||||||
|
// scadenza info a 15 gg...
|
||||||
|
int numDays = 15;
|
||||||
|
|
||||||
|
// dati applicativo
|
||||||
|
var appData = await OnlineAppInfo();
|
||||||
|
if (appData != null)
|
||||||
|
{
|
||||||
|
if (appData.Count > 0)
|
||||||
|
{
|
||||||
|
fatto = await setAppInfo(appData, numDays);
|
||||||
|
// salvo info licenza...
|
||||||
|
NumLicRemote = appData[0].NumLicenze;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// dati attivazioni
|
||||||
|
var onlineAct = await OnlineActivationList();
|
||||||
|
if (onlineAct != null)
|
||||||
|
{
|
||||||
|
if (onlineAct.Count > 0)
|
||||||
|
{
|
||||||
|
infoExpiry = DateTime.Now.AddDays(numDays);
|
||||||
|
ActivList = onlineAct;
|
||||||
|
fatto = await setActivList(onlineAct, numDays);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await Task.Delay(1);
|
||||||
|
return fatto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> setActivList(List<LiManObj.AttivazioneDTO> newActList, int numDays)
|
||||||
|
{
|
||||||
|
bool fatto = false;
|
||||||
|
string cacheKey = $"{rKeyAttByLic}:{MasterKey}";
|
||||||
|
var rawData = JsonConvert.SerializeObject(newActList);
|
||||||
|
await setRSV(cacheKey, rawData, numDays * cacheFact * 24);
|
||||||
|
fatto = true;
|
||||||
|
if (EA_InfoUpdated != null)
|
||||||
|
{
|
||||||
|
EA_InfoUpdated?.Invoke();
|
||||||
|
}
|
||||||
|
return fatto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> setAppInfo(List<LiManObj.ApplicativoDTO> newAppInfo, int numDays)
|
||||||
|
{
|
||||||
|
bool fatto = false;
|
||||||
|
string cacheKey = $"{rkeyAppInfo}:{MasterKey}";
|
||||||
|
var rawData = JsonConvert.SerializeObject(newAppInfo);
|
||||||
|
await setRSV(cacheKey, rawData, numDays * cacheFact * 24);
|
||||||
|
fatto = true;
|
||||||
|
if (EA_InfoUpdated != null)
|
||||||
|
{
|
||||||
|
EA_InfoUpdated?.Invoke();
|
||||||
|
}
|
||||||
|
return fatto;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<RootNamespace>MP.Land</RootNamespace>
|
<RootNamespace>MP.Land</RootNamespace>
|
||||||
<Version>6.15.2204.1216</Version>
|
<Version>6.15.2204.2612</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
+59
-15
@@ -2,9 +2,10 @@
|
|||||||
@using MP.Land.Data
|
@using MP.Land.Data
|
||||||
|
|
||||||
@inject MessageService AppMService
|
@inject MessageService AppMService
|
||||||
|
@inject LicenseService LicServ
|
||||||
|
|
||||||
<div class="row mx-2">
|
<div class="row mx-2">
|
||||||
<div class="col-12 col-lg-8 offset-lg-2">
|
<div class="col-12 col-lg-10 offset-lg-1">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header text-center">
|
<div class="card-header text-center">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -28,28 +29,71 @@
|
|||||||
<img src="img/LogoMapoFull.png" class="img-fluid" />
|
<img src="img/LogoMapoFull.png" class="img-fluid" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-3"></div>
|
<div class="col-lg-3"></div>
|
||||||
<div class="col-12">
|
<div class="col-6">
|
||||||
<h4 class="card-title">@Messaggio</h4>
|
<h4 class="card-title">@Messaggio</h4>
|
||||||
|
<br />
|
||||||
<p>MoonPro / MAPO sono una suite di applicazioni e dispositivi hw dedicati per l'IOT,l'industry 4.0 e la gestione automatizzata dei processi produttivi.</p>
|
<p>MoonPro / MAPO sono una suite di applicazioni e dispositivi hw dedicati per l'IOT,l'industry 4.0 e la gestione automatizzata dei processi produttivi.</p>
|
||||||
|
<hr />
|
||||||
<p>Per maggiori informazioni <a href="http://www.steamware.net/iot" target="_blank">visita il link</a> sul nostro sito.</p>
|
<p>Per maggiori informazioni <a href="http://www.steamware.net/iot" target="_blank">visita il link</a> sul nostro sito.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-6 text-right">
|
||||||
|
<div runat="server" id="divCheck" class="@mainCss">
|
||||||
|
<h4>Info installazione</h4>
|
||||||
|
<hr />
|
||||||
|
<div class="d-flex justify-content-between @remSrvCss">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="fa fa-server" aria-hidden="true"></i> Remote Server:
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<b>@ServerStatus</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="fa fa-certificate" aria-hidden="true"></i> Cliente:
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<b>@Installazione</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="fa fa-desktop" aria-hidden="true"></i> App:
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<b>@Applicazione</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="fa fa-users" aria-hidden="true"></i> Licenze:
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<b title="# Licenze locali / # Licenze Remote">@Licenze</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-between @expDateCss">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="far fa-calendar-check" aria-hidden="true"></i> Scadenza:
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<b>@($"{Scadenza:yyyy/MM/dd}")</b>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<div class="px-2">
|
||||||
|
<i class="fa fa-key" aria-hidden="true"></i> Key
|
||||||
|
</div>
|
||||||
|
<div class="px-2">
|
||||||
|
<span Font-Size="0.6em" class="small">@MastKey</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@code {
|
|
||||||
|
|
||||||
protected string Titolo = "";
|
|
||||||
protected string Messaggio = "";
|
|
||||||
|
|
||||||
protected override void OnInitialized()
|
|
||||||
{
|
|
||||||
Titolo = "MES | SCADA | IOT";
|
|
||||||
Messaggio = "Soluzione integrata per la gestione della produzione";
|
|
||||||
AppMService.ShowSearch = false;
|
|
||||||
AppMService.PageName = "About";
|
|
||||||
AppMService.PageIcon = "fas fa-info-circle pr-2";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
using System.Net.Http;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Components.Forms;
|
||||||
|
using Microsoft.AspNetCore.Components.Routing;
|
||||||
|
using Microsoft.AspNetCore.Components.Web;
|
||||||
|
using Microsoft.AspNetCore.Components.Web.Virtualization;
|
||||||
|
using Microsoft.JSInterop;
|
||||||
|
using MP.Land;
|
||||||
|
using MP.Land.Shared;
|
||||||
|
using MP.Land.Data;
|
||||||
|
|
||||||
|
namespace MP.Land.Pages
|
||||||
|
{
|
||||||
|
public partial class About
|
||||||
|
{
|
||||||
|
protected string Titolo = "";
|
||||||
|
protected string Messaggio = "";
|
||||||
|
|
||||||
|
protected string ServerStatus = "SrvState";
|
||||||
|
protected string Installazione = "Inst";
|
||||||
|
protected string Applicazione = "App";
|
||||||
|
protected string Licenze = "#";
|
||||||
|
protected DateTime Scadenza = DateTime.Today;
|
||||||
|
protected string MastKey = "########################";
|
||||||
|
|
||||||
|
protected string mainCss = "alert alert-info";
|
||||||
|
protected string remSrvCss = "bg-danger text-warning";
|
||||||
|
protected string expDateCss = "bg-danger text-warning";
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
updatePageHead();
|
||||||
|
|
||||||
|
await reloadLicenseData();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task reloadLicenseData()
|
||||||
|
{
|
||||||
|
int cDelay = 5;
|
||||||
|
// recupero dati
|
||||||
|
await Task.Delay(cDelay);
|
||||||
|
LicServ.InitAkv();
|
||||||
|
Installazione = LicServ.Installazione;
|
||||||
|
Applicazione = LicServ.Applicazione;
|
||||||
|
MastKey = LicServ.MasterKey;
|
||||||
|
await Task.Delay(cDelay);
|
||||||
|
var fatto = await LicServ.RefreshLicense();
|
||||||
|
await Task.Delay(cDelay);
|
||||||
|
Licenze = $"{LicServ.NumLicDb}/{LicServ.NumLicRemote}";
|
||||||
|
// verifico stati
|
||||||
|
ServerStatus = await LicServ.checkLimanServer();
|
||||||
|
bool okRemoteSrv = ServerStatus == "OK";
|
||||||
|
bool okScadenza = LicServ.checkLicenseActive(LicServ.MasterKey);
|
||||||
|
bool okNumLic = (LicServ.NumLicDb <= LicServ.NumLicRemote);
|
||||||
|
|
||||||
|
// aggiornamento css secondo status colore da check
|
||||||
|
mainCss = okNumLic ? "alert alert-success shadowBox" : "alert alert-warning shadowBox";
|
||||||
|
expDateCss = okScadenza ? "d-flex justify-content-between" : "d-flex justify-content-between bg-danger text-warning";
|
||||||
|
remSrvCss = okRemoteSrv ? "d-flex justify-content-between" : "d-flex justify-content-between bg-danger text-warning";
|
||||||
|
await Task.Delay(cDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updatePageHead()
|
||||||
|
{
|
||||||
|
Titolo = "MES | SCADA | IOT";
|
||||||
|
Messaggio = "Soluzione integrata per la gestione della produzione";
|
||||||
|
AppMService.ShowSearch = false;
|
||||||
|
AppMService.PageName = "About";
|
||||||
|
AppMService.PageIcon = "fas fa-info-circle pr-2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<body>
|
<body>
|
||||||
<i>Modulo gestione Programmi MAPO</i>
|
<i>Modulo gestione Programmi MAPO</i>
|
||||||
<h4>Versione: 6.15.2204.1216</h4>
|
<h4>Versione: 6.15.2204.2612</h4>
|
||||||
<br />
|
<br />
|
||||||
Note di rilascio:
|
Note di rilascio:
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
6.15.2204.1216
|
6.15.2204.2612
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<item>
|
<item>
|
||||||
<version>6.15.2204.1216</version>
|
<version>6.15.2204.2612</version>
|
||||||
<url>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/MP.Land.zip</url>
|
<url>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/MP.Land.zip</url>
|
||||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/ChangeLog.html</changelog>
|
<changelog>https://nexus.steamware.net/repository/SWS/MP-LAND/stable/LAST/ChangeLog.html</changelog>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
|
|||||||
@@ -63,6 +63,52 @@ a,
|
|||||||
.footer {
|
.footer {
|
||||||
line-height: 1.8em;
|
line-height: 1.8em;
|
||||||
}
|
}
|
||||||
|
.textTrim {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.maxChar {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
.max5Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 5rem;
|
||||||
|
}
|
||||||
|
.max10Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 10rem;
|
||||||
|
}
|
||||||
|
.max20Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 20rem;
|
||||||
|
}
|
||||||
|
.max30Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 30rem;
|
||||||
|
}
|
||||||
|
.max40Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 40rem;
|
||||||
|
}
|
||||||
|
.max50Char {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 50rem;
|
||||||
|
}
|
||||||
/*------------------------------------------------------------------
|
/*------------------------------------------------------------------
|
||||||
[ Shortcuts / .shortcuts ]
|
[ Shortcuts / .shortcuts ]
|
||||||
*/
|
*/
|
||||||
@@ -76,7 +122,7 @@ a,
|
|||||||
min-width: 9rem;
|
min-width: 9rem;
|
||||||
min-height: 5rem;
|
min-height: 5rem;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.66666667rem 0;
|
padding: 2rem/3 0;
|
||||||
margin: 0 2px 1em;
|
margin: 0 2px 1em;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -89,13 +135,13 @@ a,
|
|||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-radius: 0.5rem;
|
border-radius: 1rem/2;
|
||||||
}
|
}
|
||||||
.shortcuts .shortcut-sm {
|
.shortcuts .shortcut-sm {
|
||||||
min-width: 4.5rem;
|
min-width: 4.5rem;
|
||||||
min-height: 3rem;
|
min-height: 3rem;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 0.25rem 0;
|
padding: 1rem/4 0;
|
||||||
margin: 0 2px 1em;
|
margin: 0 2px 1em;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -108,7 +154,7 @@ a,
|
|||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
|
||||||
border: 1px solid #ddd;
|
border: 1px solid #ddd;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-radius: 0.5rem;
|
border-radius: 1rem/2;
|
||||||
}
|
}
|
||||||
.shortcuts .shortcut .shortcut-icon {
|
.shortcuts .shortcut .shortcut-icon {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -63,6 +63,50 @@ a, .btn-link {
|
|||||||
line-height: 1.8em;
|
line-height: 1.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.textTrim {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.maxChar {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max5Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max10Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max20Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 20rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max30Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 30rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max40Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 40rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.max50Char {
|
||||||
|
.maxChar;
|
||||||
|
width: 50rem;
|
||||||
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------
|
/*------------------------------------------------------------------
|
||||||
[ Shortcuts / .shortcuts ]
|
[ Shortcuts / .shortcuts ]
|
||||||
*/
|
*/
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.min.css');h1,h2,h3,h4,h5,h6,b,display-1,display-2,display-3,display-4{font-family:'Lato',sans-serif}html,body,.textCondensed{font-family:'Roboto Condensed',sans-serif}a,.btn-link{color:#0366d6}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac}.content{padding-top:1.1rem}.valid.modified:not([type=checkbox]){outline:1px solid #26b050}.invalid{outline:1px solid #f00}.validation-message{color:#f00}.textStriked{text-decoration:line-through}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem}.footer{line-height:1.8em}.shortcuts{text-align:center}.shortcuts .shortcut-icon{font-size:2rem}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:.66666667rem 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:.5rem}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:.25rem 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:.5rem}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333}.shortcuts .shortcut:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0)}.shortcuts .shortcut-sm:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0)}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.shortcuts .shortcut:hover .shortcut-icon{color:#c93}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666}@media(max-width:640px){.shortcuts .shortcut{min-width:8rem;min-height:4rem}body{font-size:.8em}}
|
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.min.css');h1,h2,h3,h4,h5,h6,b,display-1,display-2,display-3,display-4{font-family:'Lato',sans-serif}html,body,.textCondensed{font-family:'Roboto Condensed',sans-serif}a,.btn-link{color:#0366d6}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac}.content{padding-top:1.1rem}.valid.modified:not([type=checkbox]){outline:1px solid #26b050}.invalid{outline:1px solid #f00}.validation-message{color:#f00}.textStriked{text-decoration:line-through}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem}.footer{line-height:1.8em}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.maxChar{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.max5Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:5rem}.max10Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:10rem}.max20Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:20rem}.max30Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:30rem}.max40Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:40rem}.max50Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:50rem}.shortcuts{text-align:center}.shortcuts .shortcut-icon{font-size:2rem}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:2rem/3 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:1rem/4 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333}.shortcuts .shortcut:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0)}.shortcuts .shortcut-sm:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0)}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.shortcuts .shortcut:hover .shortcut-icon{color:#c93}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666}@media(max-width:640px){.shortcuts .shortcut{min-width:8rem;min-height:4rem}body{font-size:.8em}}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Version>6.15.2204.1416</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -36,5 +37,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\MP.Data\MP.Data.csproj" />
|
<ProjectReference Include="..\MP.Data\MP.Data.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
|
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -28,6 +28,13 @@
|
|||||||
<a class="dismiss">🗙</a>
|
<a class="dismiss">🗙</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@* Riconnessione server app: https://www.syncfusion.com/faq/how-do-i-reconnect-blazor-server-side-automatically *@
|
||||||
|
<script>
|
||||||
|
Blazor.defaultReconnectionHandler._reconnectCallback = function (d) {
|
||||||
|
document.location.reload();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script src="_framework/blazor.server.js"></script>
|
<script src="_framework/blazor.server.js"></script>
|
||||||
<script src="lib/Chart.js/chart.js"></script>
|
<script src="lib/Chart.js/chart.js"></script>
|
||||||
<script src="lib/luxon/luxon.js"></script>
|
<script src="lib/luxon/luxon.js"></script>
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
<body>
|
<body>
|
||||||
<i>Modulo statistiche MAPO</i>
|
<i>Modulo MON MAPO</i>
|
||||||
<h4>Versione: 6.15.2204.1414</h4>
|
<h4>Versione: 6.15.2204.1416</h4>
|
||||||
<br />
|
<br /> Note di rilascio:
|
||||||
Note di rilascio:
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b>Ultime modifiche:</b>
|
<b>Ultime modifiche:</b>
|
||||||
<ul>{{LAST-CHANGES}}</ul>
|
<ul>{{LAST-CHANGES}}</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>v.1.* →</b>
|
<b>v.6.15.* →</b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Prima release dotnet5</li>
|
<li>Prima release dotnet6</li>
|
||||||
<li>Integrazione EFCore</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
6.15.2204.1414
|
6.15.2204.1416
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<item>
|
<item>
|
||||||
<version>6.15.2204.1414</version>
|
<version>6.15.2204.1416</version>
|
||||||
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
|
<url>https://nexus.steamware.net/repository/SWS/MP-MON/stable/LAST/MP.Mon.zip</url>
|
||||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
|
<changelog>https://nexus.steamware.net/repository/SWS/MP-MON/stable/LAST/ChangeLog.html</changelog>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
</item>
|
</item>
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
param([string]$ProjectDir, [string]$ProjectPath);
|
||||||
|
|
||||||
|
$FileMajMin = "..\MajMin.vers"
|
||||||
|
$FileVers = "Resources\VersNum.txt"
|
||||||
|
$FileManIn = "Resources\manifest-original.xml"
|
||||||
|
$FileManOut = "Resources\manifest.xml"
|
||||||
|
$FileCLogIn = "Resources\ChangeLog-original.html"
|
||||||
|
$FileCLogOut = "Resources\ChangeLog.html"
|
||||||
|
$MajMin = Get-Content $FileMajMin
|
||||||
|
$currentDate = get-date -format yyMM;
|
||||||
|
$currentTime = get-date -format dHH;
|
||||||
|
$find = "<Version>(.|\n)*?</Version>";
|
||||||
|
$currRelNum = $MajMin + $currentDate +"." + $currentTime
|
||||||
|
$replace = "<Version>" + $MajMin + $currentDate +"." + $currentTime + "</Version>";
|
||||||
|
$csproj = Get-Content $ProjectPath
|
||||||
|
$csprojUpdated = $csproj -replace $find, $replace
|
||||||
|
|
||||||
|
Set-Content -Path $ProjectPath -Value $csprojUpdated
|
||||||
|
Set-Content -Path $FileVers -Value $currRelNum
|
||||||
|
|
||||||
|
# replace x manifest
|
||||||
|
$manData = Get-Content $FileManIn
|
||||||
|
$manData = $manData -replace "1.0.0.0", $currRelNum
|
||||||
|
$manData = $manData -replace "{{DIRNAME}}", "MP-MON"
|
||||||
|
$manData = $manData -replace "{{BRANCHNAME}}", "stable/LAST"
|
||||||
|
$manData = $manData -replace "{{PACKNAME}}", "MP.Mon"
|
||||||
|
Set-Content -Path $FileManOut -Value $manData
|
||||||
|
|
||||||
|
# replace x ChangeLog
|
||||||
|
$clogData = Get-Content $FileCLogIn
|
||||||
|
$clogData = $clogData -replace "{{CURRENT-REL}}", $currRelNum
|
||||||
|
Set-Content -Path $FileCLogOut -Value $clogData
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<RootNamespace>MP.Stats</RootNamespace>
|
<RootNamespace>MP.Stats</RootNamespace>
|
||||||
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
|
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
|
||||||
<Version>6.15.2204.1414</Version>
|
<Version>6.15.2204.1416</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<body>
|
<body>
|
||||||
<i>Modulo statistiche MAPO</i>
|
<i>Modulo statistiche MAPO</i>
|
||||||
<h4>Versione: 6.15.2204.1414</h4>
|
<h4>Versione: 6.15.2204.1416</h4>
|
||||||
<br />
|
<br />
|
||||||
Note di rilascio:
|
Note di rilascio:
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
6.15.2204.1414
|
6.15.2204.1416
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<item>
|
<item>
|
||||||
<version>6.15.2204.1414</version>
|
<version>6.15.2204.1416</version>
|
||||||
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
|
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
|
||||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
|
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
|
|||||||
Reference in New Issue
Block a user