rust/hedgewars-server/src/server/handlers/lobby.rs
changeset 14783 b3adc030104b
parent 14782 50fcef24003f
child 14785 a1077e8d26f4
equal deleted inserted replaced
14782:50fcef24003f 14783:b3adc030104b
     3 use super::common::rnd_reply;
     3 use super::common::rnd_reply;
     4 use crate::{
     4 use crate::{
     5     protocol::messages::{
     5     protocol::messages::{
     6         add_flags, remove_flags, HWProtocolMessage, HWServerMessage::*, ProtocolFlags as Flags,
     6         add_flags, remove_flags, HWProtocolMessage, HWServerMessage::*, ProtocolFlags as Flags,
     7     },
     7     },
     8     server::{core::HWServer, coretypes::ClientId},
     8     server::{
       
     9         core::HWServer,
       
    10         coretypes::{ClientId, ServerVar},
       
    11     },
     9     utils::is_name_illegal,
    12     utils::is_name_illegal,
    10 };
    13 };
    11 use log::*;
    14 use log::*;
    12 
    15 
    13 pub fn handle(
    16 pub fn handle(
   106                 }
   109                 }
   107             } else {
   110             } else {
   108                 response.add(Warning("No such room.".to_string()).send_self());
   111                 response.add(Warning("No such room.".to_string()).send_self());
   109             }
   112             }
   110         }
   113         }
       
   114         SetServerVar(var) => {
       
   115             if !server.clients[client_id].is_admin() {
       
   116                 response.add(Warning("Access denied.".to_string()).send_self());
       
   117             } else {
       
   118                 match var {
       
   119                     ServerVar::MOTDNew(msg) => server.greetings.for_latest_protocol = msg,
       
   120                     ServerVar::MOTDOld(msg) => server.greetings.for_old_protocols = msg,
       
   121                     ServerVar::LatestProto(n) => server.latest_protocol = n,
       
   122                 }
       
   123             }
       
   124         }
       
   125         GetServerVar => {
       
   126             if !server.clients[client_id].is_admin() {
       
   127                 response.add(Warning("Access denied.".to_string()).send_self());
       
   128             } else {
       
   129                 let vars: Vec<_> = [
       
   130                     ServerVar::MOTDNew(server.greetings.for_latest_protocol.clone()),
       
   131                     ServerVar::MOTDOld(server.greetings.for_old_protocols.clone()),
       
   132                     ServerVar::LatestProto(server.latest_protocol),
       
   133                 ]
       
   134                 .iter()
       
   135                 .flat_map(|v| v.to_protocol())
       
   136                 .collect();
       
   137                 response.add(ServerVars(vars).send_self());
       
   138             }
       
   139         }
   111         Rnd(v) => {
   140         Rnd(v) => {
   112             response.add(rnd_reply(&v).send_self());
   141             response.add(rnd_reply(&v).send_self());
   113         }
   142         }
   114         List => warn!("Deprecated LIST message received"),
   143         List => warn!("Deprecated LIST message received"),
   115         _ => warn!("Incorrect command in lobby state"),
   144         _ => warn!("Incorrect command in lobby state"),