/**
  * Creates a new A2M_GET_SERVERS_BATCH2 request object, filtering by the
  * given paramters
  *
  * @param int $regionCode The region code to filter servers by region.
  * @param string $startIp This should be the last IP received from the
  *        master server or 0.0.0.0
  * @param string $filter The filters to apply in the form
  *        ("\filtername\value...")
  */
 public function __construct($regionCode = MasterServer::REGION_ALL, $startIp = '0.0.0.0', $filter = '')
 {
     parent::__construct(SteamPacket::A2M_GET_SERVERS_BATCH2_HEADER);
     $this->filter = $filter;
     $this->regionCode = $regionCode;
     $this->startIp = $startIp;
 }
コード例 #2
0
 /**
  * @param byte[] $contentData
  */
 public function __construct($contentData)
 {
     if ($contentData != "" && $contentData != "00000000000000") {
         throw new Exception("Wrong formatted A2A_ACK packet.");
     }
     parent::__construct(SteamPacket::A2A_ACK_HEADER, $contentData);
 }
コード例 #3
0
 /**
  * @param String $contentData
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new Exception("Wrong formatted S2A_RULES packet.");
     }
     parent::__construct(SteamPacket::S2A_RULES_HEADER);
     $contentData = unpack("vrulesNumber/a*rulesData", $contentData);
     $tmpRulesArray = explode("", $contentData["rulesData"]);
     for ($x = 0; $x < sizeof($tmpRulesArray); $x++) {
         $this->rulesArray[$tmpRulesArray[$x]] = $tmpRulesArray[++$x];
     }
 }
コード例 #4
0
 /**
  * Creates a new S2M_HEARTBEAT2 packet object based on the given data
  *
  * @param array $data The data to send with the heartbeat. The data
  *        contents are merged with the values from {@link DEFAULT_DATA}.
  * @throws SteamCondenserException when the required challenge number is
  *         missing
  */
 public function __construct($data = array())
 {
     $data = array_merge(self::$DEFAULT_DATA, $data);
     if (empty($data['challenge'])) {
         throw new SteamCondenserException('You have to provide a challenge number when sending a heartbeat to a master server.');
     }
     $bytes = "\n";
     while (list($k, $v) = each($data)) {
         $bytes .= "\\{$k}\\{$v}";
     }
     $bytes .= "\n";
     parent::__construct(SteamPacket::S2M_HEARTBEAT2_HEADER, $bytes);
 }
コード例 #5
0
 /**
  * @param mixed $contentData
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new Exception("Wrong formatted S2A_PLAYER packet.");
     }
     parent::__construct(SteamPacket::S2A_PLAYER_HEADER, $contentData);
     $this->contentData->getByte();
     $this->playerHash = array();
     while ($this->contentData->remaining() > 0) {
         $playerData = array($this->contentData->getByte(), $this->contentData->getString(), $this->contentData->getLong(), $this->contentData->getFloat());
         $this->playerHash[$playerData[1]] = new SteamPlayer($playerData[0], $playerData[1], $playerData[2], $playerData[3]);
     }
 }
コード例 #6
0
 public function __construct($data)
 {
     parent::__construct(SteamPacket::M2A_SERVER_BATCH_HEADER, $data);
     if ($this->contentData->getByte() != 10) {
         throw new PacketFormatException("Master query response is missing additional 0x0A byte.");
     }
     do {
         $firstOctet = $this->contentData->getByte();
         $secondOctet = $this->contentData->getByte();
         $thirdOctet = $this->contentData->getByte();
         $fourthOctet = $this->contentData->getByte();
         $portNumber = $this->contentData->getShort();
         $portNumber = (($portNumber & 0xff) << 8) + ($portNumber >> 8);
         $this->serverArray[] = "{$firstOctet}.{$secondOctet}.{$thirdOctet}.{$fourthOctet}:{$portNumber}";
     } while ($this->contentData->remaining() > 0);
 }
コード例 #7
0
 /**
  * @param String $contentData
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new Exception("Wrong formatted S2A_RULES packet.");
     }
     parent::__construct(SteamPacket::S2A_RULES_HEADER);
     $contentData = unpack("vrulesNumber/a*rulesData", $contentData);
     $tmpRulesArray = explode("", $contentData["rulesData"]);
     // This is a workaround for servers sending corrupt replies
     if (sizeof($tmpRulesArray) % 2) {
         array_pop($tmpRulesArray);
     }
     for ($x = 0; $x < sizeof($tmpRulesArray); $x++) {
         $this->rulesArray[$tmpRulesArray[$x]] = $tmpRulesArray[++$x];
     }
 }
コード例 #8
0
 /**
  * Creates a new S2A_RULES response object based on the given data
  *
  * @param string $contentData The raw packet data sent by the server
  * @throws PacketFormatException if the packet data is missing
  */
 public function __construct($contentData)
 {
     if (empty($contentData)) {
         throw new PacketFormatException('Wrong formatted S2A_RULES packet.');
     }
     parent::__construct(SteamPacket::S2A_RULES_HEADER, $contentData);
     $rulesCount = $this->contentData->getShort();
     $this->rulesArray = array();
     for ($x = 0; $x < $rulesCount; $x++) {
         $rule = $this->contentData->getString();
         $value = $this->contentData->getString();
         if (empty($rule)) {
             break;
         }
         $this->rulesArray[$rule] = $value;
     }
 }
コード例 #9
0
 /**
  * @param long $challengeNumber
  */
 public function __construct($challengeNumber)
 {
     parent::__construct(SteamPacket::S2C_CHALLENGE_HEADER, $challengeNumber);
 }
コード例 #10
0
 public function __construct($request)
 {
     parent::__construct(0x0, $request);
 }
コード例 #11
0
 /**
  * Creates a new S2A_LOGSTRING object based on the given data
  *
  * @param string $data The raw packet data sent by the server
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::S2A_LOGSTRING_HEADER, $data);
     $this->contentData->getByte();
     $this->message = $this->contentData->getString();
 }
コード例 #12
0
 /**
  * Creates a new A2S_INFO request object
  */
 public function __construct()
 {
     parent::__construct(SteamPacket::A2S_INFO_HEADER, "Source Engine Query");
 }
コード例 #13
0
 /**
  * Creates a new M2S_REQUESTRESTART object based on the given data
  *
  * @param string $data The raw packet data replied from the server
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::C2M_CHECKMD5_HEADER, $data);
     $this->challenge = $this->contentData->getUnsignedLong();
 }
コード例 #14
0
 /**
  * Creates a new M2S_ISVALIDMD5 response object based on the given data
  *
  * @param string $data The raw packet data replied from the server
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::M2C_ISVALIDMD5_HEADER, $data);
     $this->contentData->getByte();
     $this->challenge = $this->contentData->getUnsignedLong();
 }
コード例 #15
0
 public function __construct($commandResponse)
 {
     parent::__construct(SteamPacket::RCON_GOLDSRC_RESPONSE_HEADER, $commandResponse);
 }
コード例 #16
0
 /**
  *
  */
 public function __construct()
 {
     parent::__construct(SteamPacket::A2S_SERVERQUERY_GETCHALLENGE_HEADER);
 }
コード例 #17
0
 /**
  *
  */
 public function __construct()
 {
     parent::__construct(SteamPacket::A2A_PING_HEADER);
 }
コード例 #18
0
ファイル: RCONPacket.php プロジェクト: Arg-xx/steam-condenser
 public function __construct($requestId, $rconHeader, $rconData = null)
 {
     parent::__construct($rconHeader, "{$rconData}");
     $this->requestId = $requestId;
 }