chore: switch to ids for parameter
This commit is contained in:
@@ -106,8 +106,8 @@ impl VoiceClient {
|
|||||||
.to_internal_error()
|
.to_internal_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn remove_user(&self, user: &User, channel_id: &str) -> Result<()> {
|
pub async fn remove_user(&self, user_id: &str, channel_id: &str) -> Result<()> {
|
||||||
self.rooms.remove_participant(channel_id, &user.id)
|
self.rooms.remove_participant(channel_id, user_id)
|
||||||
.await
|
.await
|
||||||
.to_internal_error()
|
.to_internal_error()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Build Stage
|
# Build Stage
|
||||||
FROM ghcr.io/revoltchat/base:latest AS builder
|
FROM ghcr.io/revoltchat/base:latest AS builder
|
||||||
|
FROM debian:12 AS debian
|
||||||
|
|
||||||
# Bundle Stage
|
# Bundle Stage
|
||||||
FROM debian:bullseye-slim
|
FROM gcr.io/distroless/cc-debian12:nonroot
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y ca-certificates && \
|
|
||||||
apt-get clean
|
|
||||||
COPY --from=builder /home/rust/src/target/release/revolt-voice-ingress ./
|
COPY --from=builder /home/rust/src/target/release/revolt-voice-ingress ./
|
||||||
EXPOSE 9000
|
COPY --from=debian /usr/bin/uname /usr/bin/uname
|
||||||
CMD ["./revolt-voice-ingress"]
|
|
||||||
|
USER nonroot
|
||||||
|
CMD ["./revolt-voice-ingress"]
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::env;
|
use std::env;
|
||||||
|
|
||||||
|
|
||||||
use livekit_protocol::WebhookEvent;
|
use livekit_protocol::{TrackType, WebhookEvent};
|
||||||
use revolt_database::{
|
use revolt_database::{
|
||||||
events::client::EventV1, util::reference::Reference, Database, DatabaseInfo,
|
events::client::EventV1, util::reference::Reference, Database, DatabaseInfo,
|
||||||
voice::{create_voice_state, delete_voice_state, update_voice_state_tracks, VoiceClient}
|
voice::{create_voice_state, delete_voice_state, update_voice_state_tracks, VoiceClient}
|
||||||
@@ -85,6 +85,17 @@ async fn ingress(db: &State<Database>, voice_client: &State<VoiceClient>, body:
|
|||||||
.as_channel(db)
|
.as_channel(db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
// remove the user if they try publish a video larger than 1080x720 or they publish data
|
||||||
|
if body.event == "track_published"
|
||||||
|
&& (
|
||||||
|
(track.r#type == TrackType::Video as i32 && (track.width > 1080 || track.height > 720))
|
||||||
|
| (track.r#type == TrackType::Data as i32)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
voice_client.remove_user(user_id, channel_id).await?;
|
||||||
|
delete_voice_state(channel_id, channel.server().as_deref(), user_id).await?;
|
||||||
|
}
|
||||||
|
|
||||||
let partial = update_voice_state_tracks(
|
let partial = update_voice_state_tracks(
|
||||||
channel_id,
|
channel_id,
|
||||||
channel.server().as_deref(),
|
channel.server().as_deref(),
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ pub async fn delete(
|
|||||||
};
|
};
|
||||||
|
|
||||||
for user_id in get_voice_channel_members(channel.id()).await? {
|
for user_id in get_voice_channel_members(channel.id()).await? {
|
||||||
let user = Reference::from_unchecked(user_id).as_user(db).await?;
|
voice_client.remove_user(&user_id, channel.id()).await?;
|
||||||
|
|
||||||
voice_client.remove_user(&user, channel.id()).await?;
|
|
||||||
delete_voice_state(channel.id(), channel.server().as_deref(), &user.id).await?;
|
delete_voice_state(channel.id(), channel.server().as_deref(), &user.id).await?;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ pub async fn remove_member(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if is_in_voice_channel(&user.id, channel.id()).await? {
|
if is_in_voice_channel(&user.id, channel.id()).await? {
|
||||||
voice_client.remove_user(&user, channel.id()).await?;
|
voice_client.remove_user(&user.id, channel.id()).await?;
|
||||||
delete_voice_state(channel.id(), None, &user.id).await?;
|
delete_voice_state(channel.id(), None, &user.id).await?;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ pub async fn ban(
|
|||||||
|
|
||||||
// If the member is in a voice channel while banned kick them from the voice channel
|
// If the member is in a voice channel while banned kick them from the voice channel
|
||||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||||
voice_client.remove_user(&user, &channel_id).await?;
|
voice_client.remove_user(&user.id, &channel_id).await?;
|
||||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?
|
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ pub async fn kick(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||||
voice_client.remove_user(&user, &channel_id).await?;
|
voice_client.remove_user(&user.id, &channel_id).await?;
|
||||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ pub async fn delete(
|
|||||||
|
|
||||||
if server.owner == user.id {
|
if server.owner == user.id {
|
||||||
for channel_id in &server.channels {
|
for channel_id in &server.channels {
|
||||||
voice_client.remove_user(&user, channel_id).await?;
|
voice_client.remove_user(&user.id, channel_id).await?;
|
||||||
delete_voice_state(channel_id, Some(&server.id), &user.id).await?;
|
delete_voice_state(channel_id, Some(&server.id), &user.id).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ pub async fn delete(
|
|||||||
} else {
|
} else {
|
||||||
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
if let Some(channel_id) = get_user_voice_channel_in_server(&user.id, &server.id).await? {
|
||||||
if server.channels.iter().any(|c| c == &channel_id) {
|
if server.channels.iter().any(|c| c == &channel_id) {
|
||||||
voice_client.remove_user(&user, &channel_id).await?;
|
voice_client.remove_user(&user.id, &channel_id).await?;
|
||||||
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
delete_voice_state(&channel_id, Some(&server.id), &user.id).await?;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user