rtmpdash/Controllers/RtmpAuthController.cs

27 lines
812 B
C#
Raw Normal View History

2021-01-24 04:04:16 +01:00
using System.Linq;
using Microsoft.AspNetCore.Mvc;
2022-12-15 22:36:15 +01:00
using RTMPDash.Backend.Database;
2021-01-24 04:04:16 +01:00
2022-02-09 22:32:17 +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() {
2022-12-15 22:36:15 +01:00
var db = new Database.DbConn();
2022-02-04 04:48:04 +01:00
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
}
}