30 lines
932 B
C#
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;
|
|
}
|
|
}
|
|
} |