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); }
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) }); }
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() }); }
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); }
protected virtual GameMsg_SvVoteOptionRemove UnpackSvVoteOptionRemove( Unpacker unpacker, ref string failedOn) { return(new GameMsg_SvVoteOptionRemove { Description = unpacker.GetString(CC_TRIM) }); }
protected virtual GameMsg_SvBroadcast UnpackSvBroadcast(Unpacker unpacker, ref string error) { return(new GameMsg_SvBroadcast { Message = unpacker.GetString() }); }
protected virtual GameMsg_SvMotd UnpackSvMotd(Unpacker unpacker, ref string error) { return(new GameMsg_SvMotd { Message = unpacker.GetString() }); }
protected virtual GameMsg_ClSay UnpackClSay(Unpacker unpacker, ref string failedOn) { return(new GameMsg_ClSay { IsTeam = unpacker.GetInt() != 0, Message = unpacker.GetString() }); }
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); } }
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); }
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); }