def _connect( self ):
try:
self._socket = gevent.ssl.wrap_socket( gevent.socket.socket( gevent.socket.AF_INET,
gevent.socket.SOCK_STREAM ),
cert_reqs = gevent.ssl.CERT_NONE )
self._socket.connect( ( self._destServer, self._destPort ) )
self._log( "Connected" )
headers = rSequence()
headers.addSequence( Symbols.base.HCP_IDENT, AgentId( ( self._oid, self._iid, self._sid, self._plat, self._arch ) ).toJson() )
headers.addStringA( Symbols.base.HOST_NAME, hashlib.md5( str( self._sid ) ).hexdigest() )
headers.addIpv4( Symbols.base.IP_ADDRESS, "%d.%d.%d.%d" % ( random.randint( 0, 254 ),
random.randint( 0, 254 ),
random.randint( 0, 254 ),
random.randint( 0, 254 ) ) )
if self._enrollmentToken is not None:
headers.addBuffer( Symbols.hcp.ENROLLMENT_TOKEN, self._enrollmentToken )
self._sendFrame( HcpModuleId.HCP, [ headers ], timeout = 30, isNotHbs = True )
self._log( "Handshake sent" )
self._threads.add( gevent.spawn( self._recvThread ) )
self._threads.add( gevent.spawn_later( 1, self._syncHcpThread ) )
self._threads.add( gevent.spawn_later( 10, self._syncHbsThread ) )
self._threads.add( gevent.spawn_later( 2, lambda: self._connectedEvent.set() ) )
return True
except:
self._log( "Failed to connect over TLS: %s" % traceback.format_exc() )
return False
评论列表
文章目录