Kick from edge forward
This commit is contained in:
24
NostrStreamer/Controllers/AdminController.cs
Normal file
24
NostrStreamer/Controllers/AdminController.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NostrStreamer.Services.StreamManager;
|
||||
|
||||
namespace NostrStreamer.Controllers;
|
||||
|
||||
[Route("/api/admin")]
|
||||
public class AdminController : Controller
|
||||
{
|
||||
private readonly ILogger<AdminController> _logger;
|
||||
private readonly StreamManagerFactory _streamManagerFactory;
|
||||
|
||||
public AdminController(ILogger<AdminController> logger, StreamManagerFactory streamManagerFactory)
|
||||
{
|
||||
_logger = logger;
|
||||
_streamManagerFactory = streamManagerFactory;
|
||||
}
|
||||
|
||||
[HttpPatch("stream/{id:guid}")]
|
||||
public async Task PublishEvent([FromRoute] Guid id)
|
||||
{
|
||||
var stream = await _streamManagerFactory.ForStream(id);
|
||||
await stream.UpdateEvent();
|
||||
}
|
||||
}
|
@ -118,7 +118,7 @@ public class PlaylistController : Controller
|
||||
{
|
||||
var streamManager = await _streamManagerFactory.ForCurrentStream(pubkey);
|
||||
var userStream = streamManager.GetStream();
|
||||
return Redirect($"{userStream.Id}.m3u8");
|
||||
return Redirect($"stream/{userStream.Id}.m3u8");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -128,7 +128,7 @@ public class PlaylistController : Controller
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
[HttpGet("{id:guid}.m3u8")]
|
||||
[HttpGet("stream/{id:guid}.m3u8")]
|
||||
public async Task CreateMultiBitrate([FromRoute] Guid id)
|
||||
{
|
||||
try
|
||||
|
@ -33,19 +33,19 @@ public class SrsController : Controller
|
||||
}
|
||||
|
||||
var appSplit = req.App.Split("/");
|
||||
var streamManager = await _streamManagerFactory.ForStream(new StreamInfo
|
||||
var info = new StreamInfo
|
||||
{
|
||||
App = appSplit[0],
|
||||
Variant = appSplit.Length > 1 ? appSplit[1] : "",
|
||||
ClientId = req.ClientId!,
|
||||
StreamId = req.StreamId ?? req.ClientId!,
|
||||
StreamKey = req.Stream,
|
||||
EdgeIp = req.Ip!
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
if (req.Action == "on_forward")
|
||||
{
|
||||
var urls = await streamManager.OnForward();
|
||||
var newStream = await _streamManagerFactory.CreateStream(info);
|
||||
var urls = await newStream.OnForward();
|
||||
if (urls.Count > 0)
|
||||
{
|
||||
return new SrsForwardHookReply
|
||||
@ -63,6 +63,7 @@ public class SrsController : Controller
|
||||
};
|
||||
}
|
||||
|
||||
var streamManager = await _streamManagerFactory.ForStream(info);
|
||||
if (req.App.EndsWith("/source"))
|
||||
{
|
||||
if (req.Action == "on_publish")
|
||||
@ -132,7 +133,7 @@ public class SrsHook
|
||||
|
||||
[JsonProperty("client_id")]
|
||||
public string? ClientId { get; set; }
|
||||
|
||||
|
||||
[JsonProperty("stream_id")]
|
||||
public string? StreamId { get; set; }
|
||||
|
||||
|
Reference in New Issue
Block a user