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();
}
@@ -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
|