srt_protocol/settings/
accesscontrol.rs1use std::{convert::TryInto, marker::PhantomData, net::SocketAddr};
2
3use crate::{packet::RejectReason, settings::KeySettings};
4
5pub struct AcceptParameters {
6 key_settings: Option<KeySettings>,
7}
8
9impl AcceptParameters {
10 pub fn new() -> AcceptParameters {
11 AcceptParameters { key_settings: None }
12 }
13
14 pub fn set_key_settings(&mut self, passphrase: impl Into<String>, size: u16) -> &mut Self {
15 self.key_settings = Some(KeySettings {
16 key_size: size.try_into().unwrap(),
17 passphrase: passphrase.into().try_into().unwrap(),
18 });
19 self
20 }
21
22 pub fn take_key_settings(&mut self) -> Option<KeySettings> {
23 self.key_settings.take()
24 }
25}
26
27impl Default for AcceptParameters {
28 fn default() -> Self {
29 AcceptParameters::new()
30 }
31}
32
33pub trait StreamAcceptor {
34 fn accept(
35 &mut self,
36 streamid: Option<&str>,
37 ip: SocketAddr,
38 ) -> Result<AcceptParameters, RejectReason>;
39}
40
41#[derive(Default, Clone, Copy)]
42pub struct AllowAllStreamAcceptor {
43 _hidden: PhantomData<()>,
44}
45
46impl StreamAcceptor for AllowAllStreamAcceptor {
47 fn accept(
48 &mut self,
49 _streamid: Option<&str>,
50 _ip: SocketAddr,
51 ) -> Result<AcceptParameters, RejectReason> {
52 Ok(AcceptParameters::default())
53 }
54}