@page @inject IAntiforgery Antiforgery @using Microsoft.AspNetCore.Antiforgery @using Microsoft.AspNetCore.Http @using RTMPDash.DataModels @model DashboardModel @{ ViewData["Title"] = "Dashboard"; var tokenSet = Antiforgery.GetAndStoreTokens(HttpContext); } @if (string.IsNullOrWhiteSpace(HttpContext.Session.GetString("authenticatedUser"))) {

Welcome

If you have an invite, sign up here. If you already have an account, sign back in.

} else { var db = new AppDb.DbConn(); var user = db.Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser"));
Profile URL
Player URL
Stream key
Stream URL
@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); if (restreams > 0) { } else { } } else { } } else { } } else { }
Chat URL
Announcement URL
@if (user.AllowRestream) {
Restream targets
@if (!string.IsNullOrWhiteSpace(user.RestreamTargets) && StreamUtils.IsLive(user.Username) && StreamUtils.GetClientTime(user.Username) > 5000) { var restreams = StreamUtils.CountLiveRestreams(user.Username); if (restreams == 1) { } else if (restreams > 1) { } else { } }
Restream URLs
}
Pronoun (subject)
Pronoun (possessive)
}