rtmpdash/Controllers/RtmpAuthController.cs

30 lines
932 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!.Username);
if (!user!.AllowRestream || string.IsNullOrWhiteSpace(user.RestreamTargets))
Response.Headers.Add("x-rtmp-target", "rtmp://127.0.0.1/src/" + user!.Username);
else
Response.Headers.Add("x-rtmp-target",
"rtmp://127.0.0.1/src/" + user!.Username + "," + user.RestreamTargets);
Response.StatusCode = 302;
return "authorized as " + user!.Username;
}
}
}