diff --git a/Pages/Admin.cshtml b/Pages/Admin.cshtml index af0f979..7909c00 100644 --- a/Pages/Admin.cshtml +++ b/Pages/Admin.cshtml @@ -13,6 +13,7 @@ Response.Redirect("/"); return; } + var stats = StreamUtils.GetStatsObject(); }

Users

@@ -21,7 +22,7 @@ Username Stream status - Actions + c Actions @@ -30,6 +31,9 @@ @user.Username @if (StreamUtils.IsLive(user.Username)) { + var uptimestr = stats.Server.Applications.First(p => p.Name == "ingress").MethodLive.Streams.First(p => p.Name == user.Username).Time; + var uptime = TimeSpan.FromMilliseconds(long.Parse(uptimestr)).StripMilliseconds(); + if (user.AllowRestream && !string.IsNullOrWhiteSpace(user.RestreamTargets)) { var restreams = StreamUtils.CountLiveRestreams(user.Username); if (restreams > 0) { @@ -42,6 +46,7 @@ else { } + } else { diff --git a/Pages/Dashboard.cshtml b/Pages/Dashboard.cshtml index 29c5f31..9f28ddc 100644 --- a/Pages/Dashboard.cshtml +++ b/Pages/Dashboard.cshtml @@ -61,6 +61,9 @@ else {
@if (StreamUtils.IsLive(user.Username)) { + var stats = StreamUtils.GetStatsObject(); + var uptimestr = stats.Server.Applications.First(p => p.Name == "ingress").MethodLive.Streams.First(p => p.Name == user.Username).Time; + var uptime = TimeSpan.FromMilliseconds(long.Parse(uptimestr)).StripMilliseconds(); if (user.AllowRestream && !string.IsNullOrWhiteSpace(user.RestreamTargets)) { if (StreamUtils.GetClientTime(user.Username) > 5000) { var restreams = StreamUtils.CountLiveRestreams(user.Username); @@ -78,6 +81,7 @@ else { else { } + } else { diff --git a/Program.cs b/Program.cs index 6f5dfa1..5c48dfd 100644 --- a/Program.cs +++ b/Program.cs @@ -1,3 +1,4 @@ +using System; using LinqToDB.Data; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; @@ -25,4 +26,9 @@ namespace RTMPDash { webBuilder.UseStartup(); }); } + + public static class TimeExtensions { + public static TimeSpan StripMilliseconds(this TimeSpan time) => + new(time.Days, time.Hours, time.Minutes, time.Seconds); + } } \ No newline at end of file