rust/hedgewars-server/src/utils.rs
author S.D.
Tue, 27 Sep 2022 14:59:03 +0300
changeset 15900 fc3cb23fd26f
parent 15853 7d0f747afcb8
child 15901 4c58b320056c
permissions -rw-r--r--
Allow to see rooms of incompatible versions in the lobby For the new clients the room version is shown in a separate column. There is also a hack for previous versions clients: the room vesion specifier is prepended to the room names for rooms of incompatible versions, and the server shows 'incompatible version' error if the client tries to join them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14478
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
     1
use base64::encode;
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
     2
use std::iter::Iterator;
12126
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12125
diff changeset
     3
14804
b3adc030104b implement server vars
alfadur
parents: 14802
diff changeset
     4
pub const SERVER_VERSION: u32 = 3;
15832
ee84e417d8d0 Add parser and idempotention tests for server messages
unc0rr
parents: 15822
diff changeset
     5
pub const SERVER_MESSAGE: &str = &"Hedgewars server https://www.hedgewars.org/";
13416
cdf69667593b partial room implementation
alfadur
parents: 12137
diff changeset
     6
14478
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
     7
pub fn is_name_illegal(name: &str) -> bool {
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
     8
    name.len() > 40
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
     9
        || name.trim().is_empty()
14802
01f8ab45f806 fix lobby joining
alfadur
parents: 14800
diff changeset
    10
        || name.trim() != name
14478
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
    11
        || name
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
    12
            .chars()
15047
a479916799ea use contains where possible
alfadur
parents: 14851
diff changeset
    13
            .any(|c| "$()*+?[]^{|}\x7F".contains(c) || ('\x00'..='\x1F').contains(&c))
13423
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    14
}
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    15
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    16
pub fn to_engine_msg<T>(msg: T) -> String
14478
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
    17
where
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
    18
    T: Iterator<Item = u8> + Clone,
13423
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    19
{
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    20
    let mut tmp = Vec::new();
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    21
    tmp.push(msg.clone().count() as u8);
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    22
    tmp.extend(msg);
87a6cad20c90 Implement game start & engine messages
alfadur
parents: 13416
diff changeset
    23
    encode(&tmp)
13775
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    24
}
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    25
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    26
pub fn protocol_version_string(protocol_number: u16) -> &'static str {
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    27
    match protocol_number {
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    28
        17 => "0.9.7-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    29
        19 => "0.9.7",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    30
        20 => "0.9.8-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    31
        21 => "0.9.8",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    32
        22 => "0.9.9-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    33
        23 => "0.9.9",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    34
        24 => "0.9.10-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    35
        25 => "0.9.10",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    36
        26 => "0.9.11-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    37
        27 => "0.9.11",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    38
        28 => "0.9.12-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    39
        29 => "0.9.12",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    40
        30 => "0.9.13-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    41
        31 => "0.9.13",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    42
        32 => "0.9.14-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    43
        33 => "0.9.14",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    44
        34 => "0.9.15-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    45
        35 => "0.9.14.1",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    46
        37 => "0.9.15",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    47
        38 => "0.9.16-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    48
        39 => "0.9.16",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    49
        40 => "0.9.17-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    50
        41 => "0.9.17",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    51
        42 => "0.9.18-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    52
        43 => "0.9.18",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    53
        44 => "0.9.19-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    54
        45 => "0.9.19",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    55
        46 => "0.9.20-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    56
        47 => "0.9.20",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    57
        48 => "0.9.21-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    58
        49 => "0.9.21",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    59
        50 => "0.9.22-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    60
        51 => "0.9.22",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    61
        52 => "0.9.23-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    62
        53 => "0.9.23",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    63
        54 => "0.9.24-dev",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    64
        55 => "0.9.24",
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    65
        56 => "0.9.25-dev",
14477
a077aac9df01 Start database interaction implementation
unc0rr
parents: 14436
diff changeset
    66
        57 => "0.9.25",
a077aac9df01 Start database interaction implementation
unc0rr
parents: 14436
diff changeset
    67
        58 => "1.0.0-dev",
15467
eb1c407a9e8f add protocol version
alfadur
parents: 15047
diff changeset
    68
        59 => "1.0.0",
15468
c03b2e263488 add smth
alfadur
parents: 15467
diff changeset
    69
        60 => "1.0.1-dev",
14478
98ef2913ec73 Apply rustfmt to all files
unc0rr
parents: 14477
diff changeset
    70
        _ => "Unknown",
13775
5fb40c8e5542 port some legacy protocol support
alfadur
parents: 13500
diff changeset
    71
    }
14477
a077aac9df01 Start database interaction implementation
unc0rr
parents: 14436
diff changeset
    72
}