27 lines
803 B
C#
27 lines
803 B
C#
using System.Linq;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using RTMPDash.DataModels;
|
|
|
|
namespace RTMPDash.Controllers;
|
|
|
|
[ApiController, Route("/api/authenticate")]
|
|
public class RtmpAuthController : ControllerBase {
|
|
[HttpGet]
|
|
public string Get() {
|
|
var db = new AppDb.DbConn();
|
|
if (!db.Users.Any(p => p.StreamKey == Request.Query["name"])) {
|
|
Response.StatusCode = 403;
|
|
return "unauthorized";
|
|
}
|
|
|
|
var user = db.Users.FirstOrDefault(p => p.StreamKey == Request.Query["name"]);
|
|
|
|
Response.Headers.Add("x-rtmp-user", user!.IsPrivate ? user!.PrivateAccessKey : user!.Username);
|
|
|
|
if (user.AllowRestream && !string.IsNullOrWhiteSpace(user.RestreamTargets))
|
|
Response.Headers.Add("x-rtmp-target", user.RestreamTargets);
|
|
|
|
Response.StatusCode = 302;
|
|
return "authorized as " + user!.Username;
|
|
}
|
|
} |