Exemplo n.º 1
0
def build_database_from_stub(reflection_client):
    """Build descriptor pool and symbol database from reflection service.

    Args:
        reflection_client: ServerReflectionStub. GRPC reflection client

    Returns:
        tuple (descriptor pool, symbol database)
    """
    services_response = funcy.first(
        # Note that this is stupid, but grpc has problems iterating over lists
        reflection_client.ServerReflectionInfo(x
                                               for x in [GET_SERVICES_REQUEST]
                                               ))
    service_names = [
        service.name
        for service in services_response.list_services_response.service
    ]
    file_requests = (reflection_pb2.ServerReflectionRequest(
        file_containing_symbol=service_name) for service_name in service_names)
    file_descriptor_proto_bytes = get_proto_bytes_for_requests(
        reflection_client, file_requests)

    descriptor_pool = DescriptorPool()
    add_protos_to_descriptor_pool(reflection_client, descriptor_pool,
                                  file_descriptor_proto_bytes)

    symbol_database = SymbolDatabase(descriptor_pool)
    return (descriptor_pool, symbol_database)
Exemplo n.º 2
0
 def reset_grpc_db(self):
     reset_cached_client()
     if self.reset_descriptor_pool:
         _descriptor_pool._DEFAULT = DescriptorPool()
         _symbol_database._DEFAULT = SymbolDatabase(
             pool=_descriptor_pool.Default())
Exemplo n.º 3
0
def RegisterProtoDescriptors(
    db: symbol_database.SymbolDatabase,
    *additional_descriptors: descriptor.FileDescriptor,
) -> None:
    """Registers all API-releated descriptors in a given symbol DB."""
    db.RegisterFileDescriptor(apple_firmware_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(artifact_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(client_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(config_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(cron_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(flow_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(hunt_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(metadata_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(output_plugin_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(reflection_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(stats_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(user_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(vfs_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(yara_pb2.DESCRIPTOR)

    db.RegisterFileDescriptor(checks_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(deprecated_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(flows_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(jobs_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(osquery_pb2.DESCRIPTOR)
    db.RegisterFileDescriptor(timeline_pb2.DESCRIPTOR)

    db.RegisterFileDescriptor(
        wrappers_pb2.DESCRIPTOR)  # type: ignore[attr-defined]

    for d in additional_descriptors:
        db.RegisterFileDescriptor(d)