aboutsummaryrefslogtreecommitdiffstats
path: root/mumlib/src
diff options
context:
space:
mode:
Diffstat (limited to 'mumlib/src')
-rw-r--r--mumlib/src/command.rs22
-rw-r--r--mumlib/src/config.rs14
-rw-r--r--mumlib/src/lib.rs1
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()