Exemple #1
0
        protected override void NetMsgInfo(NetworkChunk packet, Unpacker unpacker, int clientId)
        {
            if (Clients[clientId].State != ServerClientState.AUTH)
            {
                return;
            }

            var version = unpacker.GetString(SanitizeType.SANITIZE_CC);

            if (string.IsNullOrEmpty(version) || !version.StartsWith(GameContext.NetVersion))
            {
                NetworkServer.Drop(clientId, $"Wrong version. Server is running '{GameContext.NetVersion}' and client '{version}'");
                return;
            }

            var password = unpacker.GetString(SanitizeType.SANITIZE_CC);

            if (!string.IsNullOrEmpty(Config["Password"]) && password != Config["Password"])
            {
                NetworkServer.Drop(clientId, "Wrong password");
                return;
            }

            if (clientId >= NetworkServer.ServerConfig.MaxClients - Config["SvReservedSlots"] &&
                !string.IsNullOrEmpty(Config["SvReservedSlotsPass"]) &&
                password != Config["SvReservedSlotsPass"])
            {
                NetworkServer.Drop(clientId, "This server is full");
                return;
            }

            Clients[clientId].State = ServerClientState.CONNECTING;
            SendMap(clientId);
        }
Exemple #2
0
 protected virtual GameMsg_ClCallVote UnpackClCallVote(Unpacker unpacker,
                                                       ref string failedOn)
 {
     return(new GameMsg_ClCallVote
     {
         Type = unpacker.GetString(CC_TRIM),
         Value = unpacker.GetString(CC_TRIM),
         Reason = unpacker.GetString(CC_TRIM)
     });
 }
Exemple #3
0
 protected virtual GameMsg_ClChangeInfo UnpackClChangeInfo(
     Unpacker unpacker, ref string failedOn)
 {
     return(new GameMsg_ClChangeInfo
     {
         Name = unpacker.GetString(CC_TRIM),
         Clan = unpacker.GetString(CC_TRIM),
         Country = unpacker.GetInt(),
         Skin = unpacker.GetString(CC_TRIM),
         UseCustomColor = unpacker.GetInt() != 0,
         ColorBody = unpacker.GetInt(),
         ColorFeet = unpacker.GetInt()
     });
 }
Exemple #4
0
        protected virtual GameMsg_SvVoteSet UnpackSvVoteSet(Unpacker unpacker,
                                                            ref string failedOn)
        {
            var msg = new GameMsg_SvVoteSet
            {
                Timeout     = unpacker.GetInt(),
                Description = unpacker.GetString(CC_TRIM),
                Reason      = unpacker.GetString(CC_TRIM)
            };

            if (msg.Timeout < 0 || msg.Timeout > 60)
            {
                failedOn = "Timeout";
            }

            return(msg);
        }
Exemple #5
0
 protected virtual GameMsg_SvVoteOptionRemove UnpackSvVoteOptionRemove(
     Unpacker unpacker, ref string failedOn)
 {
     return(new GameMsg_SvVoteOptionRemove
     {
         Description = unpacker.GetString(CC_TRIM)
     });
 }
Exemple #6
0
 protected virtual GameMsg_SvBroadcast UnpackSvBroadcast(Unpacker unpacker,
                                                         ref string error)
 {
     return(new GameMsg_SvBroadcast
     {
         Message = unpacker.GetString()
     });
 }
Exemple #7
0
 protected virtual GameMsg_SvMotd UnpackSvMotd(Unpacker unpacker,
                                               ref string error)
 {
     return(new GameMsg_SvMotd
     {
         Message = unpacker.GetString()
     });
 }
Exemple #8
0
 protected virtual GameMsg_ClSay UnpackClSay(Unpacker unpacker,
                                             ref string failedOn)
 {
     return(new GameMsg_ClSay
     {
         IsTeam = unpacker.GetInt() != 0,
         Message = unpacker.GetString()
     });
 }
Exemple #9
0
        protected override void NetMsgRconAuth(NetworkChunk packet, Unpacker unpacker, int clientId)
        {
            var login    = unpacker.GetString();
            var password = unpacker.GetString();

            SendRconLine(clientId, password);
            if (!packet.Flags.HasFlag(SendFlags.VITAL) || unpacker.Error)
            {
                return;
            }

            if (string.IsNullOrEmpty(Config["SvRconPassword"]) &&
                string.IsNullOrEmpty(Config["SvRconModPassword"]))
            {
                SendRconLine(clientId, "No rcon password set on server. Set sv_rcon_password and/or sv_rcon_mod_password to enable the remote console.");
            }

            var authed = false;

            if (password == Config["SvRconPassword"])
            {
                authed = true;
            }
            else if (password == Config["SvRconModPassword"])
            {
                authed = true;
            }

            if (authed)
            {
                var msg = new MsgPacker((int)NetworkMessages.SV_RCON_AUTH_STATUS);
                msg.AddInt(1);
                msg.AddInt(1);
                SendMsgEx(msg, MsgFlags.VITAL, clientId, true);
            }
        }
Exemple #10
0
        protected virtual GameMsg_SvChat UnpackSvChat(Unpacker unpacker,
                                                      ref string failedOn)
        {
            var msg = new GameMsg_SvChat
            {
                IsTeam   = unpacker.GetInt() != 0,
                ClientId = unpacker.GetInt(),
                Message  = unpacker.GetString()
            };

            if (msg.ClientId < -1)
            {
                failedOn = "ClientId";
            }

            return(msg);
        }
Exemple #11
0
        protected virtual GameMsg_SvVoteOptionListAdd UnpackSvVoteOptionListAdd(
            Unpacker unpacker, ref string failedOn)
        {
            var msg = new GameMsg_SvVoteOptionListAdd
            {
                NumOptions    = unpacker.GetInt(),
                Description0  = unpacker.GetString(CC_TRIM),
                Description1  = unpacker.GetString(CC_TRIM),
                Description2  = unpacker.GetString(CC_TRIM),
                Description3  = unpacker.GetString(CC_TRIM),
                Description4  = unpacker.GetString(CC_TRIM),
                Description5  = unpacker.GetString(CC_TRIM),
                Description6  = unpacker.GetString(CC_TRIM),
                Description7  = unpacker.GetString(CC_TRIM),
                Description8  = unpacker.GetString(CC_TRIM),
                Description9  = unpacker.GetString(CC_TRIM),
                Description10 = unpacker.GetString(CC_TRIM),
                Description11 = unpacker.GetString(CC_TRIM),
                Description12 = unpacker.GetString(CC_TRIM),
                Description13 = unpacker.GetString(CC_TRIM),
                Description14 = unpacker.GetString(CC_TRIM),
            };

            if (msg.NumOptions < 1 || msg.NumOptions > 15)
            {
                failedOn = "NumOptions";
            }

            return(msg);
        }