rtmpdash/Controllers/RtmpAuthController.cs

27 lines
804 B
C#
Raw Normal View History

2021-01-24 04:04:16 +01:00
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using RTMPDash.DataModels;
2022-02-04 04:48:04 +01:00
namespace RTMPDash.Controllers;
2021-01-24 04:04:16 +01:00
2022-02-04 04:48:04 +01:00
[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";
}
2021-01-24 04:04:16 +01:00
2022-02-04 04:48:04 +01:00
var user = db.Users.FirstOrDefault(p => p.StreamKey == Request.Query["name"]);
2021-01-24 04:04:16 +01:00
2022-02-04 04:48:04 +01:00
Response.Headers.Add("x-rtmp-user", user!.IsPrivate ? user!.PrivateAccessKey : user!.Username);
2021-01-24 04:04:16 +01:00
2022-02-04 04:48:04 +01:00
if (user.AllowRestream && !string.IsNullOrWhiteSpace(user.RestreamTargets))
Response.Headers.Add("x-rtmp-target", user.RestreamTargets);
Response.StatusCode = 302;
return "authorized as " + user!.Username;
2021-01-24 04:04:16 +01:00
}
}