summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config.rs4
-rw-r--r--src/gameserver.rs17
-rw-r--r--src/main.rs4
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()