diff --git a/OrcanodeMonitor/Core/Fetcher.cs b/OrcanodeMonitor/Core/Fetcher.cs index 8f4261e..d8dce62 100644 --- a/OrcanodeMonitor/Core/Fetcher.cs +++ b/OrcanodeMonitor/Core/Fetcher.cs @@ -35,7 +35,8 @@ public class Fetcher private static string _orcaHelloHydrophonesUrl = "https://aifororcasdetections2.azurewebsites.net/api/hydrophones"; private static DateTime _unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); private static string _iftttServiceKey = Environment.GetEnvironmentVariable("IFTTT_SERVICE_KEY") ?? ""; - private static string _defaultS3Bucket = "streaming-orcasound-net"; + private static string _defaultProdS3Bucket = "audio-orcasound-net"; + private static string _defaultDevS3Bucket = "dev-streaming-orcasound-net"; public static string IftttServiceKey => _iftttServiceKey; /// @@ -365,12 +366,12 @@ public async static Task UpdateDataplicityDataAsync(OrcanodeMonitorContext conte string dataplicityName = name.ToString(); node.DataplicityName = dataplicityName; - if (node.S3Bucket.IsNullOrEmpty()) + if (node.S3Bucket.IsNullOrEmpty() || (node.OrcasoundStatus == OrcanodeOnlineStatus.Absent)) { - node.S3Bucket = _defaultS3Bucket; + node.S3Bucket = dataplicityName.ToLower().StartsWith("dev") ? _defaultDevS3Bucket : _defaultProdS3Bucket; } - if (node.S3NodeName.IsNullOrEmpty()) + if (node.S3NodeName.IsNullOrEmpty() || (node.OrcasoundStatus == OrcanodeOnlineStatus.Absent)) { // Fill in a non-authoritative default S3 node name. // Orcasound is authoritative here since our default is @@ -747,6 +748,12 @@ public async static Task UpdateS3DataAsync(OrcanodeMonitorContext context, Orcan node.LatestRecordedUtc = null; return; } + if (response.StatusCode == HttpStatusCode.Forbidden) + { + // Access denied. + node.LatestRecordedUtc = DateTime.MinValue; + return; + } if (!response.IsSuccessStatusCode) { return; diff --git a/OrcanodeMonitor/Models/Orcanode.cs b/OrcanodeMonitor/Models/Orcanode.cs index 2bd2c48..9a95799 100644 --- a/OrcanodeMonitor/Models/Orcanode.cs +++ b/OrcanodeMonitor/Models/Orcanode.cs @@ -18,6 +18,7 @@ public enum OrcanodeOnlineStatus Online, Unintelligible, Hidden, + Unauthorized, } public enum OrcanodeUpgradeStatus { @@ -287,6 +288,10 @@ public OrcanodeOnlineStatus S3StreamStatus { return OrcanodeOnlineStatus.Absent; } + if (LatestRecordedUtc == DateTime.MinValue) + { + return OrcanodeOnlineStatus.Unauthorized; + } if (!ManifestUpdatedUtc.HasValue || !LastCheckedUtc.HasValue) { return OrcanodeOnlineStatus.Absent; diff --git a/OrcanodeMonitor/Pages/Index.cshtml b/OrcanodeMonitor/Pages/Index.cshtml index 39962df..7b766f7 100644 --- a/OrcanodeMonitor/Pages/Index.cshtml +++ b/OrcanodeMonitor/Pages/Index.cshtml @@ -88,7 +88,7 @@ else { - + @Html.DisplayFor(modelItem => item.S3StreamStatus)