Beispiel #1
0
  def testFromProto(self):
    proto = metadata_pb2.ApiGetGrrVersionResult()
    proto.major = 2
    proto.minor = 7
    proto.revision = 1
    proto.release = 8

    version = http.VersionTuple.FromProto(proto)
    self.assertEqual(version.major, 2)
    self.assertEqual(version.minor, 7)
    self.assertEqual(version.revision, 1)
    self.assertEqual(version.release, 8)
Beispiel #2
0
    def FromJson(
        cls,
        json_str: str,
    ) -> "VersionTuple":
        """Creates a version tuple from a JSON response.

    The JSON response must be serialized variant of the `ApiGetGrrVersionResult`
    message.

    Args:
      json_str: A string object with version information JSON data.

    Returns:
      Parsed version tuple.
    """
        result = metadata_pb2.ApiGetGrrVersionResult()
        json_format.Parse(json_str, result, ignore_unknown_fields=True)

        return cls.FromProto(result)
Beispiel #3
0
    def _FetchVersion(self) -> Optional[metadata_pb2.ApiGetGrrVersionResult]:
        """Fetches version information about the GRR server.

    Note that it might be the case that the server version is so old that it
    does not have the method for retrieving server version. In such case, the
    method will return `None`.

    Returns:
      A message with version descriptor (if possible).
    """
        headers = {
            "x-csrftoken": self.csrf_token,
            "x-requested-with": "XMLHttpRequest",
        }

        cookies = {
            "csrftoken": self.csrf_token,
        }

        with requests.Session() as session:
            session.trust_env = self.trust_env
            response = session.get(
                url=f"{self.api_endpoint}/api/v2/metadata/version",
                headers=headers,
                cookies=cookies,
                auth=self.auth,
                proxies=self.proxies,
                verify=self.verify,
                cert=self.cert)

        try:
            self._CheckResponseStatus(response)
        except errors.Error:
            return None

        result = metadata_pb2.ApiGetGrrVersionResult()
        json_str = response.content.decode("utf-8").lstrip(self.JSON_PREFIX)
        json_format.Parse(json_str, result, ignore_unknown_fields=True)

        return result