From 95e43ac88a322251a5e5a7d529b7b20a511978fd Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 4 Oct 2023 23:32:24 +0200 Subject: more permissions --- stream/src/lib.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'stream/src/lib.rs') diff --git a/stream/src/lib.rs b/stream/src/lib.rs index 85ff382..e9b9a4b 100644 --- a/stream/src/lib.rs +++ b/stream/src/lib.rs @@ -10,9 +10,10 @@ pub mod segment; use anyhow::{anyhow, bail, Context, Result}; use hls::{hls_master_stream, hls_variant_stream}; -use jellybase::CONF; +use jellybase::{permission::PermissionSetExt, CONF}; use jellycommon::{ stream::{StreamFormat, StreamSpec}, + user::{PermissionSet, UserPermission}, LocalTrack, MediaSource, Node, }; use jhls::jhls_stream; @@ -41,7 +42,14 @@ pub fn stream_head(spec: &StreamSpec) -> StreamHead { } } -pub async fn stream(node: Node, spec: StreamSpec, range: Range) -> Result { +pub async fn stream( + node: Node, + spec: StreamSpec, + range: Range, + perms: &PermissionSet, +) -> Result { + perms.assert(&UserPermission::StreamFormat(spec.format))?; + let (a, b) = duplex(4096); let track_sources = match node @@ -59,8 +67,8 @@ pub async fn stream(node: Node, spec: StreamSpec, range: Range) -> Result StreamFormat::Matroska => remux_stream(node, track_sources, spec, range, b).await?, StreamFormat::HlsMaster => hls_master_stream(node, track_sources, spec, b).await?, StreamFormat::HlsVariant => hls_variant_stream(node, track_sources, spec, b).await?, - StreamFormat::Jhls => jhls_stream(node, track_sources, spec, b).await?, - StreamFormat::Segment => segment_stream(node, track_sources, spec, b).await?, + StreamFormat::Jhls => jhls_stream(node, track_sources, spec, b, perms).await?, + StreamFormat::Segment => segment_stream(node, track_sources, spec, b, perms).await?, } Ok(a) -- cgit v1.2.3-70-g09d2