import socket from rdpy.protocol.rdp import rdp from twisted.internet import reactor __author__ = 'itamar' class RDPClient(rdp.RDPClientObserver): def __init__(self, controller, width, height): super(RDPClient, self).__init__(controller) self._width = width self._height = height def onUpdate(self, destLeft, destTop, destRight, destBottom, width, height, bitsPerPixel, isCompress, data): print "onUpdate", destLeft, destTop, destRight, destBottom, width, height, bitsPerPixel, isCompress, len(data) def onReady(self): """ @summary: Call when stack is ready """ print "onReady" def onClose(self): """ @summary: Call when stack is close """ print "onClose" def closeEvent(self, e): print "closeEvent", e class RDPClientFactory(rdp.ClientFactory): def __init__(self): self._username = "Administrator" self._password = "Password1!" self._domain = "" self._keyboard_layout = "en" self._optimized = False self._security = "rdp" # "ssl" self._width = 200 self._height = 200 def __repr__(self): return "" % (self._width, self._height) def buildObserver(self, controller, addr): """ @summary: Build RFB observer We use a RDPClient as RDP observer @param controller: build factory and needed by observer @param addr: destination address @return: RDPClientQt """ #create client observer self._client = RDPClient(controller, self._width, self._height) controller.setUsername(self._username) controller.setPassword(self._password) controller.setDomain(self._domain) controller.setKeyboardLayout(self._keyboard_layout) controller.setHostname(socket.gethostname()) if self._optimized: controller.setPerformanceSession() controller.setSecurityLevel(self._security) return self._client reactor.connectTCP("10.0.0.1", 3389, RDPClientFactory()) reactor.run()