diff options
| author | troido <troido@protonmail.com> | 2020-04-23 15:20:54 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-23 15:20:54 +0200 |
| commit | 4d1cbdf2fc0d79b99589327eb378306c557d346a (patch) | |
| tree | 9af2fe092fc850b8c314f27e4992a7e9cf124c8e | |
| parent | 904f81b2a31fe30e1f7b11c25a9ce523625f1c6b (diff) | |
tell users when they use a guest account and inform them about server admin
| -rw-r--r-- | src/config.rs | 4 | ||||
| -rw-r--r-- | src/gameserver.rs | 17 | ||||
| -rw-r--r-- | src/main.rs | 4 |
3 files changed, 20 insertions, 5 deletions
diff --git a/src/config.rs b/src/config.rs index 708945d..0adeb9e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -19,4 +19,8 @@ pub struct Config { #[structopt(short, long, env="ASCIIFARM_USER_DIR", help="The directory in which the user sign-in data lives")] pub user_dir: Option<PathBuf>, + + #[structopt(long, env="USER", help="The name(s) of the server admin(s)")] + pub admins: String, + } diff --git a/src/gameserver.rs b/src/gameserver.rs index 195989f..709ee9d 100644 --- a/src/gameserver.rs +++ b/src/gameserver.rs @@ -44,16 +44,18 @@ pub struct GameServer { players: HashMap<(usize, usize), PlayerId>, connections: HashMap<PlayerId, (usize, usize)>, users: Box<dyn UserRegistry>, - servers: Vec<Box<dyn Server>> + servers: Vec<Box<dyn Server>>, + admins: String } impl GameServer { - pub fn new(servers: Vec<Box<dyn Server>>, users: Box<dyn UserRegistry>) -> GameServer { + pub fn new(servers: Vec<Box<dyn Server>>, users: Box<dyn UserRegistry>, admins: String) -> GameServer { GameServer { players: HashMap::new(), connections: HashMap::new(), servers, - users + users, + admins } } @@ -147,7 +149,7 @@ impl GameServer { return Err(merr!(action, "You can not change your name")); } let player = PlayerId{name}; - self.authenticate(&player, auth, id)?; + self.authenticate(&player, auth.clone(), id)?; if self.connections.contains_key(&player) { return Err(merr!("nametaken", "Another connection to this player exists already")); } @@ -157,6 +159,13 @@ impl GameServer { if let Err(_) = self.send(&player, json!(["connected", format!("successfully connected as {}", &player.name)])){ return Err(merr!("server", "unable to send connected message")) } + if auth == Authentication::Guest { + let _ = self.send(&player, json!([ + "message", + format!("You are connected as guest account. Anyone could log in to this account. To register an account for yourself ask one of the server admins: {}", &self.admins), + "server" + ])); + } Ok(Some(Action::Join(player))) } Message::Chat(text) => { diff --git a/src/main.rs b/src/main.rs index af7218c..6e916fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -66,6 +66,8 @@ fn main(){ let config = config::Config::from_args(); + println!("Server admin(s): {}", config.admins); + let adresses = config.address .unwrap_or( (if cfg!(target_os = "linux") { @@ -90,7 +92,7 @@ fn main(){ println!("user auth directory: {:?}", user_dir); let users = auth::FileRegister::new(user_dir); - let mut gameserver = GameServer::new(servers, Box::new(users)); + let mut gameserver = GameServer::new(servers, Box::new(users), config.admins); let content_dir = config.content_dir.unwrap_or( PathBuf::new() |
