diff options
| author | Eskil <eskilq@kth.se> | 2020-11-03 22:02:11 +0100 |
|---|---|---|
| committer | Eskil <eskilq@kth.se> | 2020-11-03 22:02:11 +0100 |
| commit | 831182b69eb1bbfedfad1288b73a822241f18d25 (patch) | |
| tree | 658ad93f339ade36a992643bdff91bf18ec0c347 /mumlib | |
| parent | 8fb4edd72dfcb2b71e91eedc5861360101374967 (diff) | |
| parent | f169a04da325b6467335812a53b315f1ecc8c7ad (diff) | |
| download | mum-831182b69eb1bbfedfad1288b73a822241f18d25.tar.gz | |
Merge branch 'server-status' into 'main'
Add support for mumctl server list
Closes #29
See merge request gustav/mum!27
Diffstat (limited to 'mumlib')
| -rw-r--r-- | mumlib/src/command.rs | 22 | ||||
| -rw-r--r-- | mumlib/src/config.rs | 14 | ||||
| -rw-r--r-- | mumlib/src/lib.rs | 1 |
3 files changed, 34 insertions, 3 deletions
diff --git a/mumlib/src/command.rs b/mumlib/src/command.rs index e404056..9b0c9ed 100644 --- a/mumlib/src/command.rs +++ b/mumlib/src/command.rs @@ -18,11 +18,27 @@ pub enum Command { }, ServerDisconnect, Status, + ServerStatus { + host: String, + port: u16, + }, } #[derive(Debug, Deserialize, Serialize)] pub enum CommandResponse { - ChannelList { channels: Channel }, - ServerConnect { welcome_message: Option<String> }, - Status { server_state: Server }, + ChannelList { + channels: Channel, + }, + ServerConnect { + welcome_message: Option<String>, + }, + Status { + server_state: Server, + }, + ServerStatus { + version: u32, + users: u32, + max_users: u32, + bandwidth: u32, + }, } diff --git a/mumlib/src/config.rs b/mumlib/src/config.rs index e6b97fd..ae569aa 100644 --- a/mumlib/src/config.rs +++ b/mumlib/src/config.rs @@ -1,6 +1,8 @@ +use crate::DEFAULT_PORT; use serde::{Deserialize, Serialize}; use std::convert::TryFrom; use std::fs; +use std::net::{SocketAddr, ToSocketAddrs}; use std::path::Path; use toml::value::Array; use toml::Value; @@ -58,6 +60,18 @@ pub struct ServerConfig { pub password: Option<String>, } +impl ServerConfig { + pub fn to_socket_addr(&self) -> Option<SocketAddr> { + match (self.host.as_str(), self.port.unwrap_or(DEFAULT_PORT)) + .to_socket_addrs() + .map(|mut e| e.next()) + { + Ok(Some(addr)) => Some(addr), + _ => None, + } + } +} + pub fn get_cfg_path() -> String { if let Ok(var) = std::env::var("XDG_CONFIG_HOME") { let path = format!("{}/mumdrc", var); diff --git a/mumlib/src/lib.rs b/mumlib/src/lib.rs index a54990e..439efa9 100644 --- a/mumlib/src/lib.rs +++ b/mumlib/src/lib.rs @@ -7,6 +7,7 @@ use colored::*; use log::*; pub const SOCKET_PATH: &str = "/var/tmp/mumd"; +pub const DEFAULT_PORT: u16 = 64738; pub fn setup_logger<T: Into<fern::Output>>(target: T, color: bool) { fern::Dispatch::new() |
