コード例 #1
0
    def __init__(self, server_address, handler, frontend=None, **kwargs):
        stats_collector_instance.Get().SetGaugeValue(
            "frontend_max_active_count", self.request_queue_size)

        if frontend:
            self.frontend = frontend
        else:
            self.frontend = frontend_lib.FrontEndServer(
                certificate=config.CONFIG["Frontend.certificate"],
                private_key=config.CONFIG["PrivateKeys.server_key"],
                max_queue_size=config.CONFIG["Frontend.max_queue_size"],
                message_expiry_time=config.
                CONFIG["Frontend.message_expiry_time"],
                max_retransmission_time=config.
                CONFIG["Frontend.max_retransmission_time"])
        self.server_cert = config.CONFIG["Frontend.certificate"]

        (address, _) = server_address
        version = ipaddress.ip_address(address).version
        if version == 4:
            self.address_family = socket.AF_INET
        elif version == 6:
            self.address_family = socket.AF_INET6

        logging.info("Will attempt to listen on %s", server_address)
        http_server.HTTPServer.__init__(self, server_address, handler,
                                        **kwargs)
コード例 #2
0
 def __init__(self):
     self.frontend = frontend_lib.FrontEndServer(
         certificate=config.CONFIG["Frontend.certificate"],
         private_key=config.CONFIG["PrivateKeys.server_key"],
         max_queue_size=config.CONFIG["Frontend.max_queue_size"],
         message_expiry_time=config.CONFIG["Frontend.message_expiry_time"],
         max_retransmission_time=config.
         CONFIG["Frontend.max_retransmission_time"])
コード例 #3
0
ファイル: worker_test.py プロジェクト: keohaneindustries/grr
  def testEqualTimestampNotifications(self):
    frontend_server = frontend_lib.FrontEndServer(
        certificate=config.CONFIG["Frontend.certificate"],
        private_key=config.CONFIG["PrivateKeys.server_key"],
        message_expiry_time=100,
        threadpool_prefix="notification-test")

    # This schedules 10 requests.
    session_id = flow.StartFlow(
        client_id=self.client_id,
        flow_name="WorkerSendingTestFlow",
        token=self.token)

    # We pretend that the client processed all the 10 requests at once and
    # sends the replies in a single http poll.
    messages = [
        rdf_flows.GrrMessage(
            request_id=i,
            response_id=1,
            session_id=session_id,
            payload=rdf_protodict.DataBlob(string="test%s" % i),
            auth_state="AUTHENTICATED",
            generate_task_id=True) for i in range(1, 11)
    ]
    status = rdf_flows.GrrStatus(status=rdf_flows.GrrStatus.ReturnedStatus.OK)
    statuses = [
        rdf_flows.GrrMessage(
            request_id=i,
            response_id=2,
            session_id=session_id,
            payload=status,
            type=rdf_flows.GrrMessage.Type.STATUS,
            auth_state="AUTHENTICATED",
            generate_task_id=True) for i in range(1, 11)
    ]

    frontend_server.ReceiveMessages(self.client_id, messages + statuses)

    with queue_manager.QueueManager(token=self.token) as q:
      all_notifications = q.GetNotificationsByPriorityForAllShards(
          rdfvalue.RDFURN("aff4:/F"))
      medium_priority = rdf_flows.GrrNotification.Priority.MEDIUM_PRIORITY
      medium_notifications = all_notifications[medium_priority]
      my_notifications = [
          n for n in medium_notifications if n.session_id == session_id
      ]
      # There must not be more than one notification.
      self.assertEqual(len(my_notifications), 1)
      notification = my_notifications[0]
      self.assertEqual(notification.first_queued, notification.timestamp)
      self.assertEqual(notification.last_status, 10)
コード例 #4
0
def TestServer():
  return frontend_lib.FrontEndServer(
      certificate=config.CONFIG["Frontend.certificate"],
      private_key=config.CONFIG["PrivateKeys.server_key"],
      message_expiry_time=MESSAGE_EXPIRY_TIME)
コード例 #5
0
ファイル: frontend_test_lib.py プロジェクト: ehossam/grr
 def InitTestServer(self):
     self.server = frontend_lib.FrontEndServer(
         certificate=config.CONFIG["Frontend.certificate"],
         private_key=config.CONFIG["PrivateKeys.server_key"],
         message_expiry_time=self.MESSAGE_EXPIRY_TIME,
         threadpool_prefix="pool-%s" % self._testMethodName)