diff --git a/lib/steam-condenser/community/css/css_stats.rb b/lib/steam-condenser/community/css/css_stats.rb index c0b4e52..867ada4 100644 --- a/lib/steam-condenser/community/css/css_stats.rb +++ b/lib/steam-condenser/community/css/css_stats.rb @@ -92,7 +92,6 @@ def initialize(steam_id) :weapons_donated => lifetime_data['wpndonated'].to_i, :windows_broken => lifetime_data['winbroken'].to_i, :zoomed_sniper_kills => lifetime_data['zsniperkills'].to_i, - :kdratio => (@total_stats[:deaths] > 0) ? @last_match_stats[:kills].to_f / @last_match_stats[:deaths] : 0, :accuracy => (@total_stats[:shots] > 0) ? @total_stats[:hits].to_f / @total_stats[:shots] : 0, :kdratio => (@total_stats[:deaths] > 0) ? @total_stats[:kills].to_f / @total_stats[:deaths] : 0, :rounds_lost => @total_stats[:rounds_played] - @total_stats[:rounds_won] diff --git a/lib/steam-condenser/servers/packets/a2m_get_servers_batch2_packet.rb b/lib/steam-condenser/servers/packets/a2m_get_servers_batch2_packet.rb index 1687969..52714a1 100644 --- a/lib/steam-condenser/servers/packets/a2m_get_servers_batch2_packet.rb +++ b/lib/steam-condenser/servers/packets/a2m_get_servers_batch2_packet.rb @@ -33,9 +33,9 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see MasterServer#servers - class A2M_GET_SERVERS_BATCH2_Packet + class A2M_GET_SERVERS_BATCH2_Packet < BasePacket - include BasePacket + HEADER = 0x31 # Creates a master server request, filtering by the given paramters # @@ -45,7 +45,7 @@ class A2M_GET_SERVERS_BATCH2_Packet # @param [String] filter The filters to apply in the form # "\filtername\value..." def initialize(region_code = Servers::MasterServer::REGION_ALL, start_ip = '0.0.0.0:0', filter = '') - super A2M_GET_SERVERS_BATCH2_HEADER + super HEADER @filter = filter @region_code = region_code diff --git a/lib/steam-condenser/servers/packets/a2s_info_packet.rb b/lib/steam-condenser/servers/packets/a2s_info_packet.rb index 1812242..eb1a240 100644 --- a/lib/steam-condenser/servers/packets/a2s_info_packet.rb +++ b/lib/steam-condenser/servers/packets/a2s_info_packet.rb @@ -14,13 +14,13 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_server_info - class A2S_INFO_Packet + class A2S_INFO_Packet < BasePacket - include BasePacket + HEADER = 0x54 # Creates a new A2S_INFO request object def initialize - super A2S_INFO_HEADER, "Source Engine Query\0" + super HEADER, "Source Engine Query\0" end end diff --git a/lib/steam-condenser/servers/packets/a2s_player_packet.rb b/lib/steam-condenser/servers/packets/a2s_player_packet.rb index 6fd0dd8..f1473c7 100644 --- a/lib/steam-condenser/servers/packets/a2s_player_packet.rb +++ b/lib/steam-condenser/servers/packets/a2s_player_packet.rb @@ -17,17 +17,17 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_player_info - class A2S_PLAYER_Packet - - include BasePacket + class A2S_PLAYER_Packet < BasePacket include RequestWithChallenge + HEADER = 0x55 + # Creates a new A2S_PLAYER request object including the challenge number # # @param [Numeric] challenge_number The challenge number received from the # server def initialize(challenge_number = -1) - super A2S_PLAYER_HEADER, challenge_number + super HEADER, challenge_number end end diff --git a/lib/steam-condenser/servers/packets/a2s_rules_packet.rb b/lib/steam-condenser/servers/packets/a2s_rules_packet.rb index 671506b..c26ad9a 100644 --- a/lib/steam-condenser/servers/packets/a2s_rules_packet.rb +++ b/lib/steam-condenser/servers/packets/a2s_rules_packet.rb @@ -18,17 +18,17 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_rules_info - class A2S_RULES_Packet - - include BasePacket + class A2S_RULES_Packet < BasePacket include RequestWithChallenge + HEADER = 0x56 + # Creates a new A2S_RULES request object including the challenge number # # @param [Numeric] challenge_number The challenge number received from the # server def initialize(challenge_number = -1) - super A2S_RULES_HEADER, challenge_number + super HEADER, challenge_number end end diff --git a/lib/steam-condenser/servers/packets/a2s_serverquery_getchallenge_packet.rb b/lib/steam-condenser/servers/packets/a2s_serverquery_getchallenge_packet.rb index 6dfb159..d726490 100644 --- a/lib/steam-condenser/servers/packets/a2s_serverquery_getchallenge_packet.rb +++ b/lib/steam-condenser/servers/packets/a2s_serverquery_getchallenge_packet.rb @@ -15,13 +15,13 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_challenge_number - class A2S_SERVERQUERY_GETCHALLENGE_Packet + class A2S_SERVERQUERY_GETCHALLENGE_Packet < BasePacket - include BasePacket + HEADER = 0x57 # Creates a new A2S_SERVERQUERY_GETCHALLENGE request object def initialize - super A2S_SERVERQUERY_GETCHALLENGE_HEADER + super HEADER end end diff --git a/lib/steam-condenser/servers/packets/base_packet.rb b/lib/steam-condenser/servers/packets/base_packet.rb index 90eda53..8e0d363 100644 --- a/lib/steam-condenser/servers/packets/base_packet.rb +++ b/lib/steam-condenser/servers/packets/base_packet.rb @@ -9,29 +9,12 @@ module SteamCondenser::Servers module Packets - # This module implements the basic functionality used by most of the packets + # This class implements the basic functionality used by most of the packets # used in communication with master, Source or GoldSrc servers. # # @author Sebastian Staudt # @see SteamPacketFactory - module BasePacket - - A2M_GET_SERVERS_BATCH2_HEADER = 0x31 - A2S_INFO_HEADER = 0x54 - A2S_PLAYER_HEADER = 0x55 - A2S_RULES_HEADER = 0x56 - A2S_SERVERQUERY_GETCHALLENGE_HEADER = 0x57 - C2M_CHECKMD5_HEADER = 0x4D - M2A_SERVER_BATCH_HEADER = 0x66 - RCON_GOLDSRC_CHALLENGE_HEADER = 0x63 - RCON_GOLDSRC_NO_CHALLENGE_HEADER = 0x39 - RCON_GOLDSRC_RESPONSE_HEADER = 0x6c - S2A_INFO_DETAILED_HEADER = 0x6D - S2A_INFO2_HEADER = 0x49 - S2A_PLAYER_HEADER = 0x44 - S2A_RULES_HEADER = 0x45 - S2C_CONNREJECT_HEADER = 0x39 - S2C_CHALLENGE_HEADER = 0x41 + class BasePacket # Creates a new packet object based on the given data # diff --git a/lib/steam-condenser/servers/packets/m2a_server_batch_packet.rb b/lib/steam-condenser/servers/packets/m2a_server_batch_packet.rb index 97fc6c0..980e001 100644 --- a/lib/steam-condenser/servers/packets/m2a_server_batch_packet.rb +++ b/lib/steam-condenser/servers/packets/m2a_server_batch_packet.rb @@ -16,9 +16,9 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see MasterServer#servers - class M2A_SERVER_BATCH_Packet + class M2A_SERVER_BATCH_Packet < BasePacket - include BasePacket + HEADER = 0x66 # Returns the list of servers returned from the server in this packet # @@ -31,7 +31,7 @@ class M2A_SERVER_BATCH_Packet # @param [String] data The raw packet data replied from the server # @raise [Error::PacketFormat] if the packet data is not well formatted def initialize(data) - super M2A_SERVER_BATCH_HEADER, data + super HEADER, data unless @content_data.getbyte == 0x0A raise SteamCondenser::Error::PacketFormat, 'Master query response is missing additional 0x0A byte.' diff --git a/lib/steam-condenser/servers/packets/rcon/base_packet.rb b/lib/steam-condenser/servers/packets/rcon/base_packet.rb index 974d05b..250e313 100644 --- a/lib/steam-condenser/servers/packets/rcon/base_packet.rb +++ b/lib/steam-condenser/servers/packets/rcon/base_packet.rb @@ -17,21 +17,7 @@ module RCON # # @author Sebastian Staudt # @see RCONPacketFactory - module BasePacket - - include SteamCondenser::Servers::Packets::BasePacket - - # Header for authentication requests - SERVERDATA_AUTH = 3 - - # Header for replies to authentication attempts - SERVERDATA_AUTH_RESPONSE = 2 - - # Header for command execution requests - SERVERDATA_EXECCOMMAND = 2 - - # Header for packets with the output of a command execution - SERVERDATA_RESPONSE_VALUE = 0 + class BasePacket # Returns the request ID used to identify the RCON communication # @@ -46,9 +32,9 @@ module BasePacket # @param [Fixnum] rcon_header The header for the packet type # @param [String] rcon_data The raw packet data def initialize(request_id, rcon_header, rcon_data) - super rcon_header, "#{rcon_data}\0\0" - - @request_id = request_id + @request_id = request_id + @header_data = rcon_header + @content_data = StringIO.new "#{rcon_data}\0\0" end # Returns the raw data representing this packet diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_auth_request.rb b/lib/steam-condenser/servers/packets/rcon/rcon_auth_request.rb index 21dd9e4..55036fc 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_auth_request.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_auth_request.rb @@ -5,27 +5,30 @@ require 'steam-condenser/servers/packets/rcon/base_packet' -module SteamCondenser::Servers::Packets::RCON +module SteamCondenser::Servers::Packets + module RCON - # This packet class represents a SERVERDATA_AUTH request sent to a Source - # server - # - # It is used to authenticate the client for RCON communication. - # - # @author Sebastian Staudt - # @see SourceServer#rcon_auth - class RCONAuthRequest + # This packet class represents a HEADER request sent to a Source + # server + # + # It is used to authenticate the client for RCON communication. + # + # @author Sebastian Staudt + # @see SourceServer#rcon_auth + class RCONAuthRequest < BasePacket - include BasePacket + # Header for authentication requests + HEADER = 3 - # Creates a RCON authentication request for the given request ID and RCON - # password - # - # @param [Fixnum] request_id The request ID of the RCON connection - # @param [String] rcon_password The RCON password of the server - def initialize(request_id, rcon_password) - super request_id, SERVERDATA_AUTH, rcon_password - end + # Creates a RCON authentication request for the given request ID and RCON + # password + # + # @param [Fixnum] request_id The request ID of the RCON connection + # @param [String] rcon_password The RCON password of the server + def initialize(request_id, rcon_password) + super request_id, HEADER, rcon_password + end + end end end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_auth_response.rb b/lib/steam-condenser/servers/packets/rcon/rcon_auth_response.rb index edbfc55..80da0cc 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_auth_response.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_auth_response.rb @@ -7,7 +7,7 @@ module SteamCondenser::Servers::Packets::RCON - # This packet class represents a SERVERDATA_AUTH_RESPONSE packet sent by a + # This packet class represents a HEADER packet sent by a # Source server # # It is used to indicate the success or failure of an authentication attempt @@ -15,9 +15,10 @@ module SteamCondenser::Servers::Packets::RCON # # @author Sebastian Staudt # @see SourceServer#rcon_auth - class RCONAuthResponse + class RCONAuthResponse < BasePacket - include BasePacket + # Header for replies to authentication attempts + HEADER = 2 # Creates a RCON authentication response for the given request ID # @@ -26,7 +27,7 @@ class RCONAuthResponse # # @param [Fixnum] request_id The request ID of the RCON connection def initialize(request_id) - super request_id, SERVERDATA_AUTH_RESPONSE, '' + super request_id, HEADER, '' end end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_exec_request.rb b/lib/steam-condenser/servers/packets/rcon/rcon_exec_request.rb index 0163726..af7fe41 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_exec_request.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_exec_request.rb @@ -14,9 +14,10 @@ module SteamCondenser::Servers::Packets::RCON # # @author Sebastian Staudt # @see SourceServer#rcon_exec - class RCONExecRequest + class RCONExecRequest < BasePacket - include BasePacket + # Header for command execution requests + EXECCOMMAND = 2 # Creates a RCON command execution request for the given request ID and # command @@ -24,7 +25,7 @@ class RCONExecRequest # @param [Fixnum] request_id The request ID of the RCON connection # @param [String] rcon_command The command to execute on the server def initialize(request_id, rcon_command) - super request_id, SERVERDATA_EXECCOMMAND, rcon_command + super request_id, EXECCOMMAND, rcon_command end end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_exec_response.rb b/lib/steam-condenser/servers/packets/rcon/rcon_exec_response.rb index d244252..a695336 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_exec_response.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_exec_response.rb @@ -7,7 +7,7 @@ module SteamCondenser::Servers::Packets::RCON - # This packet class represents a SERVERDATA_RESPONSE_VALUE packet sent by a + # This packet class represents a HEADER packet sent by a # Source server # # It is used to transport the output of a command from the server to the @@ -15,9 +15,10 @@ module SteamCondenser::Servers::Packets::RCON # # @author Sebastian Staudt # @see SourceServer#rcon_exec - class RCONExecResponse + class RCONExecResponse < BasePacket - include BasePacket + # Header for packets with the output of a command execution + HEADER = 0 # Creates a RCON command response for the given request ID and command # output @@ -26,7 +27,7 @@ class RCONExecResponse # @param [String] command_response The output of the command executed on # the server def initialize(request_id, command_response) - super request_id, SERVERDATA_RESPONSE_VALUE, command_response + super request_id, HEADER, command_response end # Returns the output of the command execution diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_request.rb b/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_request.rb index 0c20701..7799357 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_request.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_request.rb @@ -5,34 +5,34 @@ require 'steam-condenser/servers/packets/base_packet' -module SteamCondenser::Servers::Packets::RCON +module SteamCondenser::Servers::Packets + module RCON - # This packet class represents a RCON request packet sent to a GoldSrc server - # - # It is used to request a command execution on the server. - # - # @author Sebastian Staudt - # @see GoldSrcServer#rcon_exec - class RCONGoldSrcRequest - - include SteamCondenser::Servers::Packets::BasePacket - - # Creates a request for the given request string + # This packet class represents a RCON request packet sent to a GoldSrc server # - # The request string has the form `rcon {challenge number} {RCON password} - # {command}`. + # It is used to request a command execution on the server. # - # @param [String] request The request string to send to the server - def initialize(request) - super 0x00, request - end + # @author Sebastian Staudt + # @see GoldSrcServer#rcon_exec + class RCONGoldSrcRequest < BasePacket - # Returns the raw data representing this packet - # - # @return [String] A string containing the raw data of this request packet - def to_s - [0xFFFFFFFF, @content_data.string].pack('Va*') - end + # Creates a request for the given request string + # + # The request string has the form `rcon {challenge number} {RCON password} + # {command}`. + # + # @param [String] request The request string to send to the server + def initialize(request) + super 0x00, request + end + + # Returns the raw data representing this packet + # + # @return [String] A string containing the raw data of this request packet + def to_s + [0xFFFFFFFF, @content_data.string].pack('Va*') + end + end end end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_response.rb b/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_response.rb index 220180c..0776062 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_response.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_goldsrc_response.rb @@ -5,34 +5,38 @@ require 'steam-condenser/servers/packets/base_packet' -module SteamCondenser::Servers::Packets::RCON +module SteamCondenser::Servers::Packets + module RCON - # This packet class represents a RCON response packet sent by a GoldSrc - # server - # - # It is used to transport the output of a command from the server to the - # client which requested the command execution. - # - # @author Sebastian Staudt - # @see GoldSrcServer#rcon_exec - class RCONGoldSrcResponse + # This packet class represents a RCON response packet sent by a GoldSrc + # server + # + # It is used to transport the output of a command from the server to the + # client which requested the command execution. + # + # @author Sebastian Staudt + # @see GoldSrcServer#rcon_exec + class RCONGoldSrcResponse < BasePacket - include SteamCondenser::Servers::Packets::BasePacket + CHALLENGE_HEADER = 0x63 + NO_CHALLENGE_HEADER = 0x39 + RESPONSE_HEADER = 0x6c - # Creates a RCON command response for the given command output - # - # @param [String] command_response The output of the command executed on - # the server - def initialize(command_response) - super RCON_GOLDSRC_RESPONSE_HEADER, command_response - end + # Creates a RCON command response for the given command output + # + # @param [String] command_response The output of the command executed on + # the server + def initialize(command_response) + super RCON_GOLDSRC_RESPONSE_HEADER, command_response + end - # Returns the output of the command execution - # - # @return [String] The output of the command - def response - @content_data.string[0..-3] - end + # Returns the output of the command execution + # + # @return [String] The output of the command + def response + @content_data.string[0..-3] + end + end end end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_packet_factory.rb b/lib/steam-condenser/servers/packets/rcon/rcon_packet_factory.rb index 871a163..cac15dd 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_packet_factory.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_packet_factory.rb @@ -35,10 +35,10 @@ def self.packet_from_data(raw_data) data = byte_buffer.cstring case header - when BasePacket::SERVERDATA_AUTH_RESPONSE then - return RCONAuthResponse.new(request_id) - when BasePacket::SERVERDATA_RESPONSE_VALUE then - return RCONExecResponse.new(request_id, data) + when RCONAuthResponse::HEADER + RCONAuthResponse.new(request_id) + when RCONExecResponse::HEADER + RCONExecResponse.new(request_id, data) else raise SteamCondenser::Error::PacketFormat, "Unknown packet with header #{header.to_s(16)} received." end diff --git a/lib/steam-condenser/servers/packets/rcon/rcon_terminator.rb b/lib/steam-condenser/servers/packets/rcon/rcon_terminator.rb index 6557b32..e432a61 100644 --- a/lib/steam-condenser/servers/packets/rcon/rcon_terminator.rb +++ b/lib/steam-condenser/servers/packets/rcon/rcon_terminator.rb @@ -16,16 +16,14 @@ module SteamCondenser::Servers::Packets::RCON # # @author Sebastian Staudt # @see SourceServer#rcon_exec - class RCONTerminator - - include BasePacket + class RCONTerminator < BasePacket # Creates a new RCON terminator packet instance for the given request ID # # @param [Fixnum] request_id The request ID for the current RCON # communication def initialize(request_id) - super request_id, SERVERDATA_RESPONSE_VALUE, nil + super request_id, RCONExecResponse::HEADER, nil end end diff --git a/lib/steam-condenser/servers/packets/s2a_info2_packet.rb b/lib/steam-condenser/servers/packets/s2a_info2_packet.rb index cb9684e..85a4e26 100644 --- a/lib/steam-condenser/servers/packets/s2a_info2_packet.rb +++ b/lib/steam-condenser/servers/packets/s2a_info2_packet.rb @@ -15,9 +15,7 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_server_info - class S2A_INFO2_Packet - - include S2A_INFO_BasePacket + class S2A_INFO2_Packet < S2A_INFO_BasePacket EDF_GAME_ID = 0x01 EDF_GAME_PORT = 0x80 @@ -25,12 +23,14 @@ class S2A_INFO2_Packet EDF_SERVER_TAGS = 0x20 EDF_SOURCE_TV = 0x40 + HEADER = 0x49 + # Creates a new S2A_INFO2 response object based on the given data # # @param [String] data The raw packet data replied from the server # @see S2A_INFO_BasePacket#generate_info_hash def initialize(data) - super S2A_INFO2_HEADER, data + super HEADER, data info.merge!({ :protocol_version => @content_data.getbyte, diff --git a/lib/steam-condenser/servers/packets/s2a_info_base_packet.rb b/lib/steam-condenser/servers/packets/s2a_info_base_packet.rb index ab96632..38b88f4 100644 --- a/lib/steam-condenser/servers/packets/s2a_info_base_packet.rb +++ b/lib/steam-condenser/servers/packets/s2a_info_base_packet.rb @@ -13,9 +13,7 @@ module SteamCondenser::Servers::Packets # @author Sebastian Staudt # @see S2A_INFO_DETAILED_Packet # @see S2A_INFO2_Packet - module S2A_INFO_BasePacket - - include BasePacket + class S2A_INFO_BasePacket < BasePacket # Returns the information provided by the server # diff --git a/lib/steam-condenser/servers/packets/s2a_info_detailed_packet.rb b/lib/steam-condenser/servers/packets/s2a_info_detailed_packet.rb index 17fb83b..8471422 100644 --- a/lib/steam-condenser/servers/packets/s2a_info_detailed_packet.rb +++ b/lib/steam-condenser/servers/packets/s2a_info_detailed_packet.rb @@ -15,16 +15,16 @@ module SteamCondenser::Servers::Packets # format. Newer ones use the same format as Source servers now # (see {S2A_INFO2_Packet}). # @see GameServer#update_server_info - class S2A_INFO_DETAILED_Packet + class S2A_INFO_DETAILED_Packet < S2A_INFO_BasePacket - include S2A_INFO_BasePacket + HEADER = 0x6D # Creates a new S2A_INFO_DETAILED response object based on the given data # # @param [String] data The raw packet data replied from the server # @see S2A_INFO_BasePacket#generate_info_hash def initialize(data) - super S2A_INFO_DETAILED_HEADER, data + super HEADER, data info.merge!({ :game_ip => @content_data.cstring, diff --git a/lib/steam-condenser/servers/packets/s2a_logstring_packet.rb b/lib/steam-condenser/servers/packets/s2a_logstring_packet.rb deleted file mode 100644 index 4f123f3..0000000 --- a/lib/steam-condenser/servers/packets/s2a_logstring_packet.rb +++ /dev/null @@ -1,33 +0,0 @@ -# This code is free software; you can redistribute it and/or modify it under -# the terms of the new BSD License. -# -# Copyright (c) 2011-2012, Sebastian Staudt - -require 'steam-condenser/servers/packets/base_packet' - -module SteamCondenser::Servers::Packets - - # This class represents a S2A_LOGSTRING packet used to transfer log messages - # - # @author Sebastian Staudt - class S2A_LOGSTRING_Packet - - include BasePacket - - # Returns the log message contained in this packet - # - # @return [String] The log message - attr_reader :message - - # Creates a new S2A_LOGSTRING object based on the given data - # - # @param [String] data The raw packet data sent by the server - def initialize(data) - super S2A_LOGSTRING_HEADER, data - - @content_data.getbyte - @message = @content_data.string - end - - end -end diff --git a/lib/steam-condenser/servers/packets/s2a_player_packet.rb b/lib/steam-condenser/servers/packets/s2a_player_packet.rb index 213d100..fc4b2e6 100644 --- a/lib/steam-condenser/servers/packets/s2a_player_packet.rb +++ b/lib/steam-condenser/servers/packets/s2a_player_packet.rb @@ -14,9 +14,9 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_player_info - class S2A_PLAYER_Packet + class S2A_PLAYER_Packet < BasePacket - include BasePacket + HEADER = 0x44 # Returns the list of active players provided by the server # @@ -32,7 +32,7 @@ def initialize(content_data) raise SteamCondenser::Error::PacketFormat, 'Wrong formatted S2A_PLAYER packet.' end - super S2A_PLAYER_HEADER, content_data + super HEADER, content_data @content_data.getbyte @player_hash = {} diff --git a/lib/steam-condenser/servers/packets/s2a_rules_packet.rb b/lib/steam-condenser/servers/packets/s2a_rules_packet.rb index 13345be..e3cf8de 100644 --- a/lib/steam-condenser/servers/packets/s2a_rules_packet.rb +++ b/lib/steam-condenser/servers/packets/s2a_rules_packet.rb @@ -14,9 +14,8 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_rules_info - class S2A_RULES_Packet - - include BasePacket + class S2A_RULES_Packet < BasePacket + HEADER = 0x45 # Returns the list of server rules (a.k.a. CVars) with the current values # @@ -31,7 +30,7 @@ def initialize(content_data) raise SteamCondenser::Error::PacketFormat, 'Wrong formatted S2A_RULES response packet.' end - super BasePacket::S2A_RULES_HEADER, content_data + super HEADER, content_data rules_count = @content_data.short diff --git a/lib/steam-condenser/servers/packets/s2c_challenge_packet.rb b/lib/steam-condenser/servers/packets/s2c_challenge_packet.rb index bf1d5ab..967b2be 100644 --- a/lib/steam-condenser/servers/packets/s2c_challenge_packet.rb +++ b/lib/steam-condenser/servers/packets/s2c_challenge_packet.rb @@ -15,16 +15,15 @@ module SteamCondenser::Servers::Packets # # @author Sebastian Staudt # @see GameServer#update_challenge_number - class S2C_CHALLENGE_Packet - - include BasePacket + class S2C_CHALLENGE_Packet < BasePacket + HEADER = 0x41 # Creates a new S2C_CHALLENGE response object based on the given data # # @param [String] challenge_number The raw packet data replied from the # server def initialize(challenge_number) - super S2C_CHALLENGE_HEADER, challenge_number + super HEADER, challenge_number end # Returns the challenge number received from the game server diff --git a/lib/steam-condenser/servers/packets/steam_packet_factory.rb b/lib/steam-condenser/servers/packets/steam_packet_factory.rb index 3e7e087..6a60035 100644 --- a/lib/steam-condenser/servers/packets/steam_packet_factory.rb +++ b/lib/steam-condenser/servers/packets/steam_packet_factory.rb @@ -16,7 +16,6 @@ require 'steam-condenser/servers/packets/s2c_challenge_packet' require 'steam-condenser/servers/packets/a2m_get_servers_batch2_packet' require 'steam-condenser/servers/packets/m2a_server_batch_packet' -require 'steam-condenser/servers/packets/s2a_logstring_packet' require 'steam-condenser/servers/packets/rcon/rcon_goldsrc_response' require 'steam-condenser/error/packet_format' @@ -41,31 +40,31 @@ def self.packet_from_data(raw_data) data = raw_data[1..-1] case header - when BasePacket::S2A_INFO_DETAILED_HEADER + when S2A_INFO_DETAILED_Packet::HEADER return S2A_INFO_DETAILED_Packet.new(data) - when BasePacket::A2S_INFO_HEADER + when A2S_INFO_Packet::HEADER return A2S_INFO_Packet.new - when BasePacket::S2A_INFO2_HEADER + when S2A_INFO2_Packet::HEADER return S2A_INFO2_Packet.new(data) - when BasePacket::A2S_PLAYER_HEADER + when A2S_PLAYER_Packet::HEADER return A2S_PLAYER_Packet.new - when BasePacket::S2A_PLAYER_HEADER + when S2A_PLAYER_Packet::HEADER return S2A_PLAYER_Packet.new(data) - when BasePacket::A2S_RULES_HEADER + when A2S_RULES_Packet::HEADER return A2S_RULES_Packet - when BasePacket::S2A_RULES_HEADER + when S2A_RULES_Packet::HEADER return S2A_RULES_Packet.new(data) - when BasePacket::A2S_SERVERQUERY_GETCHALLENGE_HEADER + when A2S_SERVERQUERY_GETCHALLENGE_Packet::HEADER return A2S_SERVERQUERY_GETCHALLENGE_Packet.new - when BasePacket::S2C_CHALLENGE_HEADER + when S2C_CHALLENGE_Packet::HEADER return S2C_CHALLENGE_Packet.new(data) - when BasePacket::A2M_GET_SERVERS_BATCH2_HEADER + when A2M_GET_SERVERS_BATCH2_Packet::HEADER return A2M_GET_SERVERS_BATCH2_Packet.new(data) - when BasePacket::M2A_SERVER_BATCH_HEADER + when M2A_SERVER_BATCH_Packet::HEADER return M2A_SERVER_BATCH_Packet.new(data) - when BasePacket::RCON_GOLDSRC_CHALLENGE_HEADER, - BasePacket::RCON_GOLDSRC_NO_CHALLENGE_HEADER, - BasePacket::RCON_GOLDSRC_RESPONSE_HEADER + when RCON::RCONGoldSrcResponse::CHALLENGE_HEADER, + RCON::RCONGoldSrcResponse::NO_CHALLENGE_HEADER, + RCON::RCONGoldSrcResponse::RESPONSE_HEADER return RCON::RCONGoldSrcResponse.new(data) else raise SteamCondenser::Error::PacketFormat, "Unknown packet with header 0x#{header.to_s(16)} received." diff --git a/test/steam-condenser/servers/packets/test_steam_packet.rb b/test/steam-condenser/servers/packets/test_steam_packet.rb index e5eacf2..6dcf47f 100644 --- a/test/steam-condenser/servers/packets/test_steam_packet.rb +++ b/test/steam-condenser/servers/packets/test_steam_packet.rb @@ -7,9 +7,7 @@ class TestBasePacket < Test::Unit::TestCase - class GenericPacket - include Servers::Packets::BasePacket - end + GenericPacket = Class.new(Servers::Packets::BasePacket) context 'A packet' do