Esempio n. 1
0
    def _StartNewWebSocket(self):
        """Start a new WebSocket and thread to listen for incoming data."""
        headers = [
            'User-Agent: ' + http.MakeUserAgentString(),
            'Sec-WebSocket-Protocol: ' + utils.SUBPROTOCOL_NAME
        ]
        if self._get_access_token_callback:
            headers += [
                'Authorization: Bearer ' + self._get_access_token_callback()
            ]

        if self._connection_sid:
            url = utils.CreateWebSocketReconnectUrl(self._tunnel_target,
                                                    self._connection_sid,
                                                    self._total_bytes_received)
            log.info('Reconnecting with URL [%r]', url)
        else:
            url = utils.CreateWebSocketConnectUrl(self._tunnel_target)
            log.info('Connecting with URL [%r]', url)

        self._connect_msg_received = False
        self._websocket_helper = helper.IapTunnelWebSocketHelper(
            url, headers, self._ignore_certs, self._tunnel_target.proxy_info,
            self._OnData, self._OnClose)
        self._websocket_helper.StartReceivingThread()
    def _StartNewWebSocket(self):
        """Start a new WebSocket and thread to listen for incoming data."""
        headers = ['User-Agent: ' + http.MakeUserAgentString()]
        if self._get_access_token_callback:
            headers += [
                'Authorization: Bearer ' + self._get_access_token_callback()
            ]

        use_mtls = False
        if self._caa_config is not None:
            use_mtls = self._caa_config.use_client_certificate
        if self._connection_sid:
            url = utils.CreateWebSocketReconnectUrl(self._tunnel_target,
                                                    self._connection_sid,
                                                    self._total_bytes_received,
                                                    use_mtls)
            log.info('Reconnecting with URL [%r]', url)
        else:
            url = utils.CreateWebSocketConnectUrl(self._tunnel_target,
                                                  use_mtls)
            log.info('Connecting with URL [%r]', url)

        self._connect_msg_received = False
        self._websocket_helper = helper.IapTunnelWebSocketHelper(
            url, headers, self._ignore_certs, self._tunnel_target.proxy_info,
            self._OnData, self._OnClose, self._caa_config)
        self._websocket_helper.StartReceivingThread()
    def _StartNewWebSocket(self):
        """Start a new WebSocket and thread to listen for incoming data."""
        headers = ['User-Agent: ' + transport.MakeUserAgentString()]
        request_reason = properties.VALUES.core.request_reason.Get()
        if request_reason:
            headers += ['X-Goog-Request-Reason: ' + request_reason]

        if self._get_access_token_callback:
            headers += [
                'Authorization: Bearer ' + self._get_access_token_callback()
            ]

        if self._connection_sid:
            url = utils.CreateWebSocketReconnectUrl(self._tunnel_target,
                                                    self._connection_sid,
                                                    self._total_bytes_received)
            log.info('Reconnecting with URL [%r]', url)
        else:
            url = utils.CreateWebSocketConnectUrl(self._tunnel_target)
            log.info('Connecting with URL [%r]', url)

        self._connect_msg_received = False
        self._websocket_helper = helper.IapTunnelWebSocketHelper(
            url, headers, self._ignore_certs, self._tunnel_target.proxy_info,
            self._OnData, self._OnClose)
        self._websocket_helper.StartReceivingThread()
Esempio n. 4
0
 def testCreateReconnectUrl(self, target, sid, ack_bytes, expected_base,
                            expected_query):
     tunnel_target = utils.IapTunnelTargetInfo(*target)
     created_url = utils.CreateWebSocketReconnectUrl(
         tunnel_target, sid, ack_bytes)
     created_url_parts = created_url.split('?', 1)
     self.assertEqual(created_url_parts[0], expected_base)
     self.assertEqual(sorted(created_url_parts[1].split('&')),
                      expected_query)
  def testStartNewWebSocketReconnect(self, websocket_helper_cls_mock,
                                     make_user_agent_mock):
    new_socket = iap_tunnel_websocket.IapTunnelWebSocket(
        self.tunnel_target, GetAccessToken, self.DataCallback,
        self.CloseCallback, ignore_certs=True)
    websocket_helper_mock = mock.MagicMock()
    websocket_helper_cls_mock.return_value = websocket_helper_mock
    make_user_agent_mock.return_value = 'my-user-agent/1234'

    new_socket._connection_sid = 'I am a SID'
    new_socket._total_bytes_received = 4567
    new_socket._connect_msg_received = True
    new_socket._StartNewWebSocket()

    self.assertFalse(new_socket._connect_msg_received)
    url = utils.CreateWebSocketReconnectUrl(
        self.tunnel_target, 'I am a SID', 4567)
    headers = ['User-Agent: my-user-agent/1234',
               'Authorization: Bearer one-access-token']
    websocket_helper_cls_mock.assert_called_once()
    websocket_helper_cls_mock.assert_called_with(
        url, headers, True, None, new_socket._OnData, new_socket._OnClose)
    self.assertIs(new_socket._websocket_helper, websocket_helper_mock)
    websocket_helper_mock.StartReceivingThread.assert_called_once()