srt_protocol/settings/
accesscontrol.rs

1use 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}