rmux-server 0.7.0

Tokio daemon and request dispatcher for the RMUX terminal multiplexer.
Documentation
mod preset;
mod runner;

use rmux_proto::RmuxError;

use super::settings::WebShareSettings;

pub(crate) use runner::TunnelHandle;

#[derive(Debug)]
pub(crate) struct TunnelInfo {
    pub(crate) handle: TunnelHandle,
    pub(crate) provider: String,
    pub(crate) public_url: String,
}

pub(crate) async fn start_provider(
    name: &str,
    settings: &WebShareSettings,
) -> Result<TunnelInfo, RmuxError> {
    let preset = preset::load(name)?;
    runner::start(preset, settings).await
}

#[cfg(test)]
mod tests {
    use super::preset::{available_from, parse, PresetSource};

    #[test]
    fn embedded_presets_are_valid() {
        for (name, content) in super::preset::embedded() {
            parse(name, PresetSource::Embedded, content).expect("embedded preset parses");
        }
    }

    #[test]
    fn available_presets_are_sorted_and_unique() {
        let names = available_from([("b".to_owned(), ""), ("a".to_owned(), "")], Vec::new());
        assert_eq!(names, vec!["a", "b"]);
    }
}