]> git.lizzy.rs Git - minetest.git/blobdiff - src/network/networkprotocol.h
Refactor around translatePassword
[minetest.git] / src / network / networkprotocol.h
index 18905a22b6a573f1ed0f22d8504b5aa14efd18b3..ba934957d7b70ca31cb67e74127a8f4ee3f7f34a 100644 (file)
@@ -108,6 +108,23 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        PROTOCOL_VERSION 24:
                ContentFeatures version 7
                ContentFeatures: change number of special tiles to 6 (CF_SPECIAL_COUNT)
+       PROTOCOL_VERSION 25:
+               Rename TOCLIENT_ACCESS_DENIED to TOCLIENT_ACCESS_DENIED_LEGAGY
+               Rename TOCLIENT_DELETE_PARTICLESPAWNER to
+                       TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY
+               Rename TOSERVER_PASSWORD to TOSERVER_PASSWORD_LEGACY
+               Rename TOSERVER_INIT to TOSERVER_INIT_LEGACY
+               Rename TOCLIENT_INIT to TOCLIENT_INIT_LEGACY
+               Add TOCLIENT_ACCESS_DENIED new opcode (0x0A), using error codes
+                       for standard error, keeping customisation possible. This
+                       permit translation
+               Add TOCLIENT_DELETE_PARTICLESPAWNER (0x53), fixing the u16 read and
+                       reading u32
+               Add TOSERVER_INIT new opcode (0x02) for client presentation to server
+               Add TOSERVER_AUTH new opcode (0x03) for client authentication
+               Add TOCLIENT_HELLO for presenting server to client after client
+                       presentation
+               Add TOCLIENT_AUTH_ACCEPT to accept connexion from client
 */
 
 #define LATEST_PROTOCOL_VERSION 24
@@ -133,7 +150,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 enum ToClientCommand
 {
-       TOCLIENT_INIT = 0x10,
+       TOCLIENT_HELLO = 0x02,
+       TOCLIENT_AUTH_ACCEPT = 0x03,
+       TOCLIENT_ACCESS_DENIED = 0x0A,
+       /*
+               u16 command
+               u16 reason_length
+               wstring reason
+       */
+
+       TOCLIENT_INIT_LEGACY = 0x10,
        /*
                Server's reply to TOSERVER_INIT.
                Sent second after connected.
@@ -460,7 +486,7 @@ enum ToClientCommand
        TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48,
        /*
                u16 command
-               u32 id
+               u16 id
        */
 
        TOCLIENT_HUDADD = 0x49,
@@ -557,17 +583,41 @@ enum ToClientCommand
                v3f1000 third
        */
 
-       TOCLIENT_NUM_MSG_TYPES = 0x53,
+       TOCLIENT_DELETE_PARTICLESPAWNER = 0x53,
+       /*
+               u16 command
+               u32 id
+       */
+
+       TOCLIENT_NUM_MSG_TYPES = 0x54,
 };
 
 enum ToServerCommand
 {
-       TOSERVER_INIT_LEGACY = 0x10,
+       TOSERVER_INIT = 0x02,
        /*
                Sent first after connected.
 
                [0] u16 TOSERVER_INIT
                [2] u8 SER_FMT_VER_HIGHEST_READ
+               [3] u8 compression_modes
+       */
+
+       TOSERVER_AUTH = 0x03,
+       /*
+               Sent first after presentation (INIT).
+               [0] std::string player_name
+               [0+*] std::string password (new in some version)
+               [0+*+*] u16 minimum supported network protocol version (added sometime)
+               [0+*+*+2] u16 maximum supported network protocol version (added later than the previous one)
+       */
+
+       TOSERVER_INIT_LEGACY = 0x10,
+       /*
+               Sent first after connected.
+
+               [0] u16 TOSERVER_INIT_LEGACY
+               [2] u8 SER_FMT_VER_HIGHEST_READ
                [3] u8[20] player_name
                [23] u8[28] password (new in some version)
                [51] u16 minimum supported network protocol version (added sometime)
@@ -767,6 +817,15 @@ enum ToServerCommand
                        u8[len] field value
        */
 
+       TOSERVER_PASSWORD = 0x3d,
+       /*
+               Sent to change password.
+
+               [0] u16 TOSERVER_PASSWORD
+               [2] std::string old password
+               [2+*] std::string new password
+       */
+
        TOSERVER_REQUEST_MEDIA = 0x40,
        /*
                u16 command
@@ -801,4 +860,37 @@ enum ToServerCommand
        TOSERVER_NUM_MSG_TYPES = 0x44,
 };
 
+enum AccessDeniedCode {
+       SERVER_ACCESSDENIED_WRONG_PASSWORD,
+       SERVER_ACCESSDENIED_UNEXPECTED_DATA,
+       SERVER_ACCESSDENIED_SINGLEPLAYER,
+       SERVER_ACCESSDENIED_WRONG_VERSION,
+       SERVER_ACCESSDENIED_WRONG_CHARS_IN_NAME,
+       SERVER_ACCESSDENIED_WRONG_NAME,
+       SERVER_ACCESSDENIED_TOO_MANY_USERS,
+       SERVER_ACCESSDENIED_EMPTY_PASSWORD,
+       SERVER_ACCESSDENIED_ALREADY_CONNECTED,
+       SERVER_ACCESSDENIED_SERVER_FAIL,
+       SERVER_ACCESSDENIED_CUSTOM_STRING,
+       SERVER_ACCESSDENIED_MAX,
+};
+
+enum NetProtoCompressionMode {
+       NETPROTO_COMPRESSION_ZLIB = 0,
+};
+
+const static std::string accessDeniedStrings[SERVER_ACCESSDENIED_MAX] = {
+       "Invalid password",
+       "Your client sent something the server didn't expect.  Try reconnecting or updating your client",
+       "The server is running in simple singleplayer mode.  You cannot connect.",
+       "Your client's version is not supported.\nPlease contact server administrator.",
+       "Player name contains disallowed characters.",
+       "Player name not allowed.",
+       "Too many users.",
+       "Empty passwords are disallowed.  Set a password and try again.",
+       "Another client is connected with this name.  If your client closed unexpectedly, try again in a minute.",
+       "Server authention failed.  This is likely a server error."
+       "",
+};
+
 #endif