Further refactor & cleanup

This commit is contained in:
Laura Hausmann 2022-12-15 22:41:27 +01:00
parent 32f191f7e3
commit 4b6d8084ca
Signed by: zotan
GPG key ID: D044E84C5BE01605
5 changed files with 17 additions and 16 deletions

View file

@ -11,6 +11,7 @@ namespace RTMPDash.Backend;
public static class Migrations { public static class Migrations {
private const int DbVer = 2; private const int DbVer = 2;
// ReSharper disable once InconsistentNaming
private static readonly List<Migration> _migrations = new() { private static readonly List<Migration> _migrations = new() {
new Migration(1, "ALTER TABLE Users ADD IsPrivate INTEGER DEFAULT 0 NOT NULL"), new Migration(1, "ALTER TABLE Users ADD IsPrivate INTEGER DEFAULT 0 NOT NULL"),
new Migration(1, "ALTER TABLE Users ADD PrivateAccessKey TEXT"), new Migration(1, "ALTER TABLE Users ADD PrivateAccessKey TEXT"),

View file

@ -1,6 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net.Http;
using System.Xml.Serialization; using System.Xml.Serialization;
namespace RTMPDash.Backend; namespace RTMPDash.Backend;
@ -22,7 +22,7 @@ public static class StreamUtils {
var dbUser = db.Users.First(p => p.Username == user); var dbUser = db.Users.First(p => p.Username == user);
return dbUser.RestreamTargets.Split(",") return dbUser.RestreamTargets.Split(",")
.Count(target => stats.Server.Applications.First(p => p.Name == "ingress") .Count(target => stats.Server.Applications.First(p => p.Name == "ingress")
.MethodLive.Streams.Any(p => p.Name == user && p.Clients.Any(c => c.Address == target.Replace("rtmp://", "")))); .MethodLive.Streams.Any(p => p.Name == user && p.Clients.Any(c => c.Address == target.Replace("rtmp://", ""))));
} }
public static int CountLiveRestreams(string user, string privateAccesskey, StatsObject stats) { public static int CountLiveRestreams(string user, string privateAccesskey, StatsObject stats) {
@ -30,13 +30,13 @@ public static class StreamUtils {
var dbUser = db.Users.First(p => p.Username == user); var dbUser = db.Users.First(p => p.Username == user);
return dbUser.RestreamTargets.Split(",") return dbUser.RestreamTargets.Split(",")
.Count(target => stats.Server.Applications.First(p => p.Name == "ingress") .Count(target => stats.Server.Applications.First(p => p.Name == "ingress")
.MethodLive.Streams.Any(p => p.Name == privateAccesskey && p.Clients.Any(c => c.Address == target.Replace("rtmp://", "")))); .MethodLive.Streams.Any(p => p.Name == privateAccesskey && p.Clients.Any(c => c.Address == target.Replace("rtmp://", ""))));
} }
public static List<string> ListLiveUsers() => GetStatsObject().Server.Applications.First(p => p.Name == "ingress").MethodLive.Streams.Select(p => p.Name).ToList(); public static List<string> ListLiveUsers() => GetStatsObject().Server.Applications.First(p => p.Name == "ingress").MethodLive.Streams.Select(p => p.Name).ToList();
public static StatsObject GetStatsObject() { public static StatsObject GetStatsObject() {
var obj = (StatsObject)Serializer.Deserialize(new WebClient().OpenRead(Program.RtmpStatsUrl)!); var obj = (StatsObject)Serializer.Deserialize(new HttpClient().GetStreamAsync(Program.RtmpStatsUrl).Result);
return obj; return obj;
} }
} }

View file

@ -1,5 +1,5 @@
@page @page
@inject IAntiforgery _antiforgery @inject IAntiforgery Antiforgery
@using Microsoft.AspNetCore.Antiforgery @using Microsoft.AspNetCore.Antiforgery
@using Microsoft.AspNetCore.Http @using Microsoft.AspNetCore.Http
@using RTMPDash.Backend @using RTMPDash.Backend
@ -7,7 +7,7 @@
@model DashboardModel @model DashboardModel
@{ @{
ViewData["Title"] = "Dashboard"; ViewData["Title"] = "Dashboard";
var tokenSet = _antiforgery.GetAndStoreTokens(HttpContext); var tokenSet = Antiforgery.GetAndStoreTokens(HttpContext);
} }
@if (string.IsNullOrWhiteSpace(HttpContext.Session.GetString("authenticatedUser"))) { @if (string.IsNullOrWhiteSpace(HttpContext.Session.GetString("authenticatedUser"))) {

View file

@ -7,9 +7,9 @@
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>@ViewData["Title"] - @Program.SiteName</title> <title>@ViewData["Title"] - @Program.SiteName</title>
<link rel="stylesheet" href="~/css/dark-mode.css"/> <link rel="stylesheet" href="/css/dark-mode.css"/>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css"/> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="~/css/site.css"/> <link rel="stylesheet" href="/css/site.css"/>
</head> </head>
<body> <body>
<script> <script>
@ -83,11 +83,11 @@
darkSwitch.offsetHeight; darkSwitch.offsetHeight;
label.classList.remove('notransition'); label.classList.remove('notransition');
</script> </script>
<script src="~/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/dark-mode-switch.js"></script> <script src="/js/dark-mode-switch.js"></script>
<script src="~/js/site.js"></script> <script src="/js/site.js"></script>
@await RenderSectionAsync("Scripts", false) @await RenderSectionAsync("Scripts", false)
</body> </body>
</html> </html>

View file

@ -1,2 +1,2 @@
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>