|
46 | 46 |
|
47 | 47 | using Swan; |
48 | 48 |
|
49 | | -using static System.Net.WebRequestMethods; |
50 | 49 | using static CumulusMX.EmailSender; |
51 | 50 |
|
52 | 51 | using File = System.IO.File; |
@@ -589,6 +588,8 @@ public void Initialise(int HTTPport, bool DebugEnabled, string startParms) |
589 | 588 |
|
590 | 589 | boolWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); |
591 | 590 |
|
| 591 | + LogMessage("Dotnet Version: " + RuntimeInformation.FrameworkDescription); |
| 592 | + |
592 | 593 | // Some .NET 8 clutures use a non-"standard" minus symbol, this causes all sorts of parsing issues down the line and for external scripts |
593 | 594 | // the simplest solution is to override this and set all cultures to use the hypen-minus |
594 | 595 | if (CultureInfo.CurrentCulture.NumberFormat.NegativeSign != "-") |
@@ -3911,6 +3912,7 @@ private void ReadIniFile() |
3911 | 3912 | WllApiKey = ini.GetValue("WLL", "WLv2ApiKey", string.Empty); |
3912 | 3913 | WllApiSecret = ini.GetValue("WLL", "WLv2ApiSecret", string.Empty); |
3913 | 3914 | WllStationId = ini.GetValue("WLL", "WLStationId", -1, -1); |
| 3915 | + WllStationUuid = ini.GetValue("WLL", "WLStationUuid", ""); |
3914 | 3916 | WllTriggerDataStoppedOnBroadcast = ini.GetValue("WLL", "DataStoppedOnBroadcast", true); |
3915 | 3917 | WLLAutoUpdateIpAddress = ini.GetValue("WLL", "AutoUpdateIpAddress", true); |
3916 | 3918 | WllBroadcastDuration = ini.GetValue("WLL", "BroadcastDuration", WllBroadcastDuration); |
@@ -5608,6 +5610,7 @@ internal void WriteIniFile() |
5608 | 5610 | ini.SetValue("WLL", "WLv2ApiKey", Crypto.EncryptString(WllApiKey, Program.InstanceId, "WllApiKey")); |
5609 | 5611 | ini.SetValue("WLL", "WLv2ApiSecret", Crypto.EncryptString(WllApiSecret, Program.InstanceId, "WllApiSecret")); |
5610 | 5612 | ini.SetValue("WLL", "WLStationId", WllStationId); |
| 5613 | + ini.SetValue("WLL", "WLStationUuid", WllStationUuid); |
5611 | 5614 | ini.SetValue("WLL", "DataStoppedOnBroadcast", WllTriggerDataStoppedOnBroadcast); |
5612 | 5615 | ini.SetValue("WLL", "PrimaryRainTxId", WllPrimaryRain); |
5613 | 5616 | ini.SetValue("WLL", "PrimaryTempHumTxId", WllPrimaryTempHum); |
@@ -7301,6 +7304,7 @@ public void WriteStringsFile() |
7301 | 7304 | internal string WllApiKey; |
7302 | 7305 | internal string WllApiSecret; |
7303 | 7306 | internal int WllStationId; |
| 7307 | + internal string WllStationUuid; |
7304 | 7308 | internal int WllParentId; |
7305 | 7309 | internal bool WllTriggerDataStoppedOnBroadcast; // trigger a data stopped state if broadcasts stop being received but current data is OK |
7306 | 7310 | /// <value>Read-only setting, default 20 minutes (1200 sec)</value> |
@@ -11140,17 +11144,17 @@ private async Task<bool> UploadString(HttpClient httpclient, bool incremental, s |
11140 | 11144 | if (FtpOptions.PhpCompression == "gzip") |
11141 | 11145 | { |
11142 | 11146 | using var zipped = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Compress, true); |
11143 | | - await zipped.WriteAsync(byteData, 0, byteData.Length, cancellationToken); |
| 11147 | + await zipped.WriteAsync(byteData.AsMemory(0, byteData.Length), cancellationToken); |
11144 | 11148 | } |
11145 | 11149 | else if (FtpOptions.PhpCompression == "deflate") |
11146 | 11150 | { |
11147 | 11151 | using var zipped = new System.IO.Compression.DeflateStream(ms, System.IO.Compression.CompressionMode.Compress, true); |
11148 | | - await zipped.WriteAsync(byteData, 0, byteData.Length, cancellationToken); |
| 11152 | + await zipped.WriteAsync(byteData.AsMemory(0, byteData.Length), cancellationToken); |
11149 | 11153 | } |
11150 | 11154 |
|
11151 | 11155 | ms.Position = 0; |
11152 | 11156 | byte[] compressed = new byte[ms.Length]; |
11153 | | - await ms.ReadAsync(compressed, 0, compressed.Length, cancellationToken); |
| 11157 | + await ms.ReadAsync(compressed.AsMemory(0, compressed.Length), cancellationToken); |
11154 | 11158 |
|
11155 | 11159 | outStream = new MemoryStream(compressed); |
11156 | 11160 | streamContent = new StreamContent(outStream); |
@@ -12498,7 +12502,6 @@ public void RealtimeFTPLogin() |
12498 | 12502 | Credentials = new NetworkCredential(FtpOptions.Username, FtpOptions.Password), |
12499 | 12503 | }; |
12500 | 12504 |
|
12501 | | - RealtimeFTP.Config.SocketPollInterval = 20000; // increase beyond the timeout value |
12502 | 12505 | RealtimeFTP.Config.LogPassword = false; |
12503 | 12506 |
|
12504 | 12507 | SetRealTimeFtpLogging(FtpOptions.Logging); |
@@ -12908,50 +12911,80 @@ public async Task GetLatestVersion() |
12908 | 12911 | var body = await retval.Content.ReadAsStringAsync(); |
12909 | 12912 | var releases = body.FromJson<List<GithubRelease>>(); |
12910 | 12913 |
|
12911 | | - var latestBuild = releases.Find(x => !x.draft && x.prerelease == beta); |
| 12914 | + var latestBeta = releases.Find(x => !x.draft && x.prerelease); |
12912 | 12915 | var latestLive = releases.Find(x => !x.draft && !x.prerelease); |
12913 | 12916 | var cmxBuild = int.Parse(Build); |
12914 | | - var veryLatest = Math.Max(int.Parse(latestBuild.tag_name[1..]), int.Parse(latestLive.tag_name[1..])); |
| 12917 | + int veryLatest; |
| 12918 | + if (latestBeta == null) |
| 12919 | + veryLatest = int.Parse(latestLive.tag_name[1..]); |
| 12920 | + else |
| 12921 | + veryLatest = Math.Max(int.Parse(latestBeta.tag_name[1..]), int.Parse(latestLive.tag_name[1..])); |
12915 | 12922 |
|
12916 | 12923 | if (string.IsNullOrEmpty(latestLive.name)) |
12917 | 12924 | { |
12918 | 12925 | if (releases.Count == 0) |
12919 | 12926 | { |
12920 | 12927 | LogMessage("Failed to get the latest build version from GitHub"); |
12921 | 12928 | } |
| 12929 | + return; |
12922 | 12930 | } |
12923 | | - else if (string.IsNullOrEmpty(latestBuild.name)) |
12924 | | - { |
12925 | | - LogMessage($"Failed to get the latest {(beta ? "beta" : "release")} build version from GitHub"); |
12926 | | - } |
12927 | | - else if (beta && int.Parse(latestLive.tag_name[1..]) > cmxBuild) |
12928 | | - { |
12929 | | - var msg = $"You are running a beta version of Cumulus MX, and a later release build {latestLive.name} is available."; |
12930 | | - LogConsoleMessage(msg, ConsoleColor.Cyan); |
12931 | | - LogWarningMessage(msg); |
12932 | | - UpgradeAlarm.LastMessage = $"Release build {latestLive.name} is available"; |
12933 | | - UpgradeAlarm.Triggered = true; |
12934 | | - LatestBuild = latestLive.tag_name[1..]; |
12935 | | - } |
12936 | | - else if (int.Parse(latestBuild.tag_name[1..]) > cmxBuild) |
| 12931 | + else if (latestBeta != null && string.IsNullOrEmpty(latestBeta.name)) |
12937 | 12932 | { |
12938 | | - var msg = $"You are not running the latest {(beta ? "beta" : "release")} version of Cumulus MX, build {latestBuild.name} is available."; |
12939 | | - LogConsoleMessage(msg, ConsoleColor.Cyan); |
12940 | | - LogWarningMessage(msg); |
12941 | | - UpgradeAlarm.LastMessage = $"{(beta ? "Beta" : "Release")} build {latestBuild.name} is available"; |
12942 | | - UpgradeAlarm.Triggered = true; |
12943 | | - LatestBuild = latestBuild.tag_name[1..]; |
| 12933 | + LogMessage("Failed to get the latest beta build version from GitHub"); |
| 12934 | + return; |
12944 | 12935 | } |
12945 | | - else if (int.Parse(latestBuild.tag_name[1..]) == cmxBuild) |
| 12936 | + |
| 12937 | + if (beta) |
12946 | 12938 | { |
12947 | | - LogMessage($"This Cumulus MX instance is running the latest {(beta ? "beta" : "release")} version"); |
12948 | | - UpgradeAlarm.Triggered = false; |
12949 | | - LatestBuild = latestBuild.tag_name[1..]; |
| 12939 | + if (int.Parse(latestLive.tag_name[1..]) > cmxBuild) |
| 12940 | + { |
| 12941 | + var msg = $"You are running a beta version of Cumulus MX, and a later release build {latestLive.name} is available."; |
| 12942 | + LogConsoleMessage(msg, ConsoleColor.Cyan); |
| 12943 | + LogWarningMessage(msg); |
| 12944 | + UpgradeAlarm.LastMessage = $"Release build {latestLive.name} is available"; |
| 12945 | + UpgradeAlarm.Triggered = true; |
| 12946 | + LatestBuild = latestLive.tag_name[1..]; |
| 12947 | + } |
| 12948 | + else if (latestBeta != null && int.Parse(latestBeta.tag_name[1..]) == cmxBuild) |
| 12949 | + { |
| 12950 | + LogMessage($"This Cumulus MX instance is running the latest beta version"); |
| 12951 | + UpgradeAlarm.Triggered = false; |
| 12952 | + LatestBuild = latestLive.tag_name[1..]; |
| 12953 | + } |
| 12954 | + else if (latestBeta != null && int.Parse(latestBeta.tag_name[1..]) > cmxBuild) |
| 12955 | + { |
| 12956 | + LogMessage($"This Cumulus MX beta instance is not running the latest beta version of Cumulsus MX, build {latestBeta.name} is available."); |
| 12957 | + UpgradeAlarm.Triggered = false; |
| 12958 | + LatestBuild = latestLive.tag_name[1..]; |
| 12959 | + } |
| 12960 | + else |
| 12961 | + { |
| 12962 | + LogWarningMessage($"This Cumulus MX instance appears to be running a beta test version. This build={Build}, latest available build={veryLatest}"); |
| 12963 | + LatestBuild = veryLatest.ToString(); |
| 12964 | + } |
12950 | 12965 | } |
12951 | | - else if (int.Parse(latestBuild.tag_name[1..]) < cmxBuild) |
| 12966 | + else // Live release |
12952 | 12967 | { |
12953 | | - LogWarningMessage($"This Cumulus MX instance appears to be running a test version. This build={Build}, latest available build={veryLatest}"); |
12954 | | - LatestBuild = veryLatest.ToString(); |
| 12968 | + if (int.Parse(latestLive.tag_name[1..]) > cmxBuild) |
| 12969 | + { |
| 12970 | + var msg = $"You are not running the latest version of Cumulus MX, build {latestLive.name} is available."; |
| 12971 | + LogConsoleMessage(msg, ConsoleColor.Cyan); |
| 12972 | + LogWarningMessage(msg); |
| 12973 | + UpgradeAlarm.LastMessage = $"Release build {latestLive.name} is available"; |
| 12974 | + UpgradeAlarm.Triggered = true; |
| 12975 | + LatestBuild = latestBeta != null ? latestBeta.tag_name[1..] : latestLive.tag_name[1..]; |
| 12976 | + } |
| 12977 | + else if (int.Parse(latestLive.tag_name[1..]) == cmxBuild) |
| 12978 | + { |
| 12979 | + LogMessage($"This Cumulus MX instance is running the latest release version"); |
| 12980 | + UpgradeAlarm.Triggered = false; |
| 12981 | + LatestBuild = latestBeta != null ? latestBeta.tag_name[1..] : latestLive.tag_name[1..]; |
| 12982 | + } |
| 12983 | + else |
| 12984 | + { |
| 12985 | + LogWarningMessage($"This Cumulus MX instance appears to be running a test version. This build={Build}, latest available build={veryLatest}"); |
| 12986 | + LatestBuild = veryLatest.ToString(); |
| 12987 | + } |
12955 | 12988 | } |
12956 | 12989 | } |
12957 | 12990 | catch (Exception ex) |
|
0 commit comments