def __init__(self, parent=None): QtWidgets.QListWidget.__init__(self, parent) self.setAlternatingRowColors(True) self.nm = NetworkManager() self.bus = dbus.SystemBus() nm_bus = self.bus.get_object(NM_BUS_NAME, NM_OBJECT_PATH) nm_interface = dbus.Interface(nm_bus, NM_INTERFACE) nm_interface.connect_to_signal( "DeviceAdded", lambda *args: self.showMessage("A new device added.", True)) nm_interface.connect_to_signal("DeviceAdded", self.fillConnections) nm_interface.connect_to_signal( "DeviceRemoved", lambda *args: self.showMessage("A device removed.", True)) nm_interface.connect_to_signal("DeviceRemoved", self.fillConnections) nm_interface.connect_to_signal("PropertiesChanged", lambda *args: self.stateChanged.emit()) nm_settings_bus = self.bus.get_object(NM_BUS_NAME, NM_SETTINGS_OBJECT_PATH) nm_settings = dbus.Interface(nm_settings_bus, NM_SETTINGS) nm_settings.connect_to_signal( "NewConnection", lambda *args: self.showMessage("A new connection added.", True)) nm_settings.connect_to_signal("NewConnection", self.fillConnections) self.timer = QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.hideMessage) self.msgbox = None self.fillConnections()
def main(): # create the managers eMngr = EventManager() gMngr = GraphicManager(eMngr) iMngr = InputManager(eMngr, gMngr) uMngr = UpdateManager(eMngr) sMngr = SoundManager(eMngr) nMngr = NetworkManager(eMngr) print "starting game" # create file with input playFile = open(sys.argv[1], 'r') # start the managers eMngr.start() gMngr.start() iMngr.start() uMngr.start() sMngr.start() nMngr.start() # create game and start it # FIXME playfile should be passed to the updateManager game = Game(iMngr, uMngr, gMngr, sMngr, nMngr, playFile) game.run() # close the managers eMngr.stop() uMngr.stop() iMngr.stop() gMngr.stop() sMngr.stop() nMngr.stop()
def __init__(self, maxy, maxx, install_config, title, intro, dest, setup_network=False): self.install_config = install_config self.maxy = maxy self.maxx = maxx self.title = title self.intro = intro self.netmgr = None self.dest = dest self.setup_network = setup_network if self.setup_network: self.netmgr = NetworkManager(install_config)
def __init__(self, parent = None): QtWidgets.QListWidget.__init__(self, parent) self.setAlternatingRowColors(True) self.nm = NetworkManager() self.bus = dbus.SystemBus() nm_bus = self.bus.get_object(NM_BUS_NAME, NM_OBJECT_PATH) nm_interface = dbus.Interface(nm_bus, NM_INTERFACE) nm_interface.connect_to_signal("DeviceAdded", lambda *args: self.showMessage("A new device added.", True)) nm_interface.connect_to_signal("DeviceAdded", self.fillConnections) nm_interface.connect_to_signal("DeviceRemoved", lambda *args: self.showMessage("A device removed.", True)) nm_interface.connect_to_signal("DeviceRemoved", self.fillConnections) nm_interface.connect_to_signal("PropertiesChanged", lambda *args: self.stateChanged.emit()) nm_settings_bus = self.bus.get_object(NM_BUS_NAME, NM_SETTINGS_OBJECT_PATH) nm_settings = dbus.Interface(nm_settings_bus, NM_SETTINGS) nm_settings.connect_to_signal("NewConnection", lambda *args: self.showMessage("A new connection added.", True)) nm_settings.connect_to_signal("NewConnection", self.fillConnections) self.timer = QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.hideMessage) self.msgbox = None self.fillConnections()
def __init__(self): httplib.HTTPConnection.debuglevel = self.http_debuglevel self.network = NetworkManager(crawler=self) self.pool = Pool() self.lock = RLock() self.bloom_filters = {} self.name = self.__class__.__name__ self._status = { 'process_count': 0, 'is_stop': True, 'run_seconds': 0, 'crawler_name': self.name, }
def slotCreateVMLesson(self): vmBtn = self.sender() if vmBtn: LogRecord.instance().logger.info(u'开始创建虚拟机') if globalvariable.VM_IS_CREATE_STATUS: LogRecord.instance().logger.info(u'重复点击!') return else: globalvariable.VM_IS_CREATE_STATUS = True LogRecord.instance().logger.info(u'准备获取虚拟机信息!') paramInfo = vmBtn.getVMInfo() LogRecord.instance().logger.info(u'准备获取虚拟机信息完成!') try: vmName = VMOperation.instance().createVMLesson(paramInfo) except: LogRecord.instance().logger.info(u'创建虚拟机异常.........!') LogRecord.instance().logger.info(u'得到创建的虚拟机信息!') if vmName: LogRecord.instance().logger.info(u'创建虚拟机%s成功' % vmName) vmInfo = NetworkManager.instance().getVMInfo(vmName) if vmInfo == None: globalvariable.VM_IS_CREATE_STATUS = False return if len(vmInfo) == 0: globalvariable.VM_IS_CREATE_STATUS = False return vmInfo[0]["vmname"] = vmInfo[0]["name"] if vmInfo: VMOperation.instance().setCurrentVMInfo(vmInfo[0]) if VMOperation.instance().openVM(True): #保存开启虚拟机的名称 #globalvariable.VM_IS_CREATE_STATUS = False WindowMonitor.instance().insertVmId(vmName) else: globalvariable.VM_IS_CREATE_STATUS = False #删除没有成功运行的虚拟机 if VMOperation.instance().removeVMLesson(vmName): LogRecord.instance().logger.info(u"删除后台相应的虚拟机成功") else: LogRecord.instance().logger.info(u'未查询到相应的虚拟机:%s' % vmName) globalvariable.VM_IS_CREATE_STATUS = False else: LogRecord.instance().logger.info(u'创建虚拟机失败') globalvariable.VM_IS_CREATE_STATUS = False #刷新虚拟机界面 self.emit(SIGNAL("refreshVMS"))
class QNetworkManager(QtWidgets.QListWidget): stateChanged=pyqtSignal() def __init__(self, parent = None): QtWidgets.QListWidget.__init__(self, parent) self.setAlternatingRowColors(True) self.nm = NetworkManager() self.bus = dbus.SystemBus() nm_bus = self.bus.get_object(NM_BUS_NAME, NM_OBJECT_PATH) nm_interface = dbus.Interface(nm_bus, NM_INTERFACE) nm_interface.connect_to_signal("DeviceAdded", lambda *args: self.showMessage("A new device added.", True)) nm_interface.connect_to_signal("DeviceAdded", self.fillConnections) nm_interface.connect_to_signal("DeviceRemoved", lambda *args: self.showMessage("A device removed.", True)) nm_interface.connect_to_signal("DeviceRemoved", self.fillConnections) nm_interface.connect_to_signal("PropertiesChanged", lambda *args: self.stateChanged.emit()) nm_settings_bus = self.bus.get_object(NM_BUS_NAME, NM_SETTINGS_OBJECT_PATH) nm_settings = dbus.Interface(nm_settings_bus, NM_SETTINGS) nm_settings.connect_to_signal("NewConnection", lambda *args: self.showMessage("A new connection added.", True)) nm_settings.connect_to_signal("NewConnection", self.fillConnections) self.timer = QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.hideMessage) self.msgbox = None self.fillConnections() def isActive(self, connection): if not self.nm.active_connections: return False return len(self.filterByConnection(connection)) > 0 def getState(self, connection): return self.filterByConnection(connection)[0].state.value def filterByConnection(self, connection): return filter(lambda x: x.connection.settings.uuid == \ connection.settings.uuid and \ unicode(x.connection.settings.id) == \ unicode(connection.settings.id), self.nm.active_connections) def fillConnections(self, *args): self.clearList() actives = self.nm.active_connections for connection in self.nm.connections: item = QtWidgets.QListWidgetItem() item.setSizeHint(QSize(200, 38)) self.addItem(item) self.setItemWidget(item, ConnectionItem(self, connection)) def clearList(self): for i in range(self.count()): item = self.item(i) widget = self.itemWidget(item) widget.available = False del widget, item self.clear() def hideMessage(self): if self.msgbox.isVisible(): self.msgbox.animate(start = CURRENT, stop = BOTCENTER, direction = OUT) def showMessage(self, message, timed=False): if not self.msgbox: self.msgbox = PMessageBox(self.viewport()) self.msgbox.setStyleSheet(PMessageBox.Style) self.msgbox.setMessage(message) self.msgbox.animate(start = BOTCENTER, stop = BOTCENTER) if timed: self.timer.start(2000) def setState(self, sender): if self.isActive(sender.connection): self.disconnect(sender.connection) else: self.connect(sender.connection) def disconnect(self, connection): self.nm.disconnect_connection_devices(connection) self.showMessage("Disconnected from %s... " % connection.settings.id, True) def connect(self, connection): if connection in self.nm.available_connections: self.nm.activate_connection(connection) self.showMessage("Connecting to %s... " % connection.settings.id, True) else: self.showMessage("Device is not ready for %s connection." % connection.settings.id, True)
class QNetworkManager(QtGui.QListWidget): def __init__(self, parent=None): QtGui.QListWidget.__init__(self, parent) self.setAlternatingRowColors(True) self.nm = NetworkManager() self.bus = dbus.SystemBus() nm_bus = self.bus.get_object(NM_BUS_NAME, NM_OBJECT_PATH) nm_interface = dbus.Interface(nm_bus, NM_INTERFACE) nm_interface.connect_to_signal( "DeviceAdded", lambda *args: self.showMessage("A new device added.", True)) nm_interface.connect_to_signal("DeviceAdded", self.fillConnections) nm_interface.connect_to_signal( "DeviceRemoved", lambda *args: self.showMessage("A device removed.", True)) nm_interface.connect_to_signal("DeviceRemoved", self.fillConnections) nm_interface.connect_to_signal( "PropertiesChanged", lambda *args: self.emit(SIGNAL("stateChanged()"))) nm_settings_bus = self.bus.get_object(NM_BUS_NAME, NM_SETTINGS_OBJECT_PATH) nm_settings = dbus.Interface(nm_settings_bus, NM_SETTINGS) nm_settings.connect_to_signal( "NewConnection", lambda *args: self.showMessage("A new connection added.", True)) nm_settings.connect_to_signal("NewConnection", self.fillConnections) self.timer = QTimer() self.timer.setSingleShot(True) self.timer.timeout.connect(self.hideMessage) self.msgbox = None self.fillConnections() def isActive(self, connection): if not self.nm.active_connections: return False return len(self.filterByConnection(connection)) > 0 def getState(self, connection): return self.filterByConnection(connection)[0].state.value def filterByConnection(self, connection): return filter(lambda x: x.connection.settings.uuid == \ connection.settings.uuid and \ unicode(x.connection.settings.id) == \ unicode(connection.settings.id), self.nm.active_connections) def fillConnections(self, *args): self.clearList() actives = self.nm.active_connections for connection in self.nm.connections: item = QtGui.QListWidgetItem() item.setSizeHint(QSize(200, 38)) self.addItem(item) self.setItemWidget(item, ConnectionItem(self, connection)) def clearList(self): for i in range(self.count()): item = self.item(i) widget = self.itemWidget(item) widget.available = False del widget, item self.clear() def hideMessage(self): if self.msgbox.isVisible(): self.msgbox.animate(start=CURRENT, stop=BOTCENTER, direction=OUT) def showMessage(self, message, timed=False): if not self.msgbox: self.msgbox = PMessageBox(self.viewport()) self.msgbox.setStyleSheet(PMessageBox.Style) self.msgbox.setMessage(message) self.msgbox.animate(start=BOTCENTER, stop=BOTCENTER) if timed: self.timer.start(2000) def setState(self, sender): if self.isActive(sender.connection): self.disconnect(sender.connection) else: self.connect(sender.connection) def disconnect(self, connection): self.nm.disconnect_connection_devices(connection) self.showMessage("Disconnected from %s... " % connection.settings.id, True) def connect(self, connection): if connection in self.nm.available_connections: self.nm.activate_connection(connection) self.showMessage("Connecting to %s... " % connection.settings.id, True) else: self.showMessage( "Device is not ready for %s connection." % connection.settings.id, True)
class FileDownloader(object): def __init__(self, maxy, maxx, install_config, title, intro, dest, setup_network=False): self.install_config = install_config self.maxy = maxy self.maxx = maxx self.title = title self.intro = intro self.netmgr = None self.dest = dest self.setup_network = setup_network if self.setup_network: self.netmgr = NetworkManager(install_config) def ask_proceed_unsafe_download(self, fingerprint): msg = ('This server could not prove its authenticity. Its ' 'fingerprint is:\n\n' + fingerprint + '\n\nDo you wish to proceed?\n') conf_message_height = 12 conf_message_width = 80 conf_message_button_y = (self.maxy - conf_message_height) // 2 + 8 r = ConfirmWindow(conf_message_height, conf_message_width, self.maxy, self.maxx, conf_message_button_y, msg).do_action() if not r.success or not r.result.get('yes', False): return False return True def do_setup_network(self): if not self.netmgr.setup_network(): msg = 'Failed to setup network configuration!' conf_message_height = 12 conf_message_width = 80 conf_message_button_y = (self.maxy - conf_message_height) // 2 + 8 ConfirmWindow(conf_message_height, conf_message_width, self.maxy, self.maxx, conf_message_button_y, msg, True).do_action() return False self.netmgr.restart_networkd() return True def display(self): if self.setup_network and not self.do_setup_network(): return ActionResult(False, {'goBack': True}) file_source = {} accepted_chars = list(range(ord('a'), ord('z')+1)) accepted_chars.extend(range(ord('A'), ord('Z')+1)) accepted_chars.extend(range(ord('0'), ord('9')+1)) accepted_chars.extend([ ord('-'), ord('_'), ord('.'), ord('~'), ord(':'), ord('/') ]) result = WindowStringReader(self.maxy, self.maxx, 18, 78, 'url', None, None, accepted_chars, None, None, self.title, self.intro, 10, file_source, 'https://', True).get_user_string(None) if not result.success: return result status_window = Window(10,70, self.maxy, self.maxx, 'Installing Photon', False) status_window.addstr(1, 0, 'Downloading file...') status_window.show_window() fd, temp_file = tempfile.mkstemp() result, msg = CommandUtils.wget(file_source['url'], temp_file, ask_fn=self.ask_proceed_unsafe_download) os.close(fd) if not result: status_window.adderror('Error: ' + msg + ' Press any key to go back...') status_window.content_window().getch() status_window.clearerror() status_window.hide_window() return ActionResult(False, {'goBack': True}) if 'additional_files' not in self.install_config: self.install_config['additional_files'] = [] copy = { temp_file: self.dest } self.install_config['additional_files'].append(copy) return ActionResult(True, None)
class Crawler(object): """定向爬虫类""" http_debuglevel = 0 #: 预定义网页编码。 encoding = None #: 设置User Agent,有时候模拟Google Bot会有事倍功半的效果。 user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' # 页面语言,有些网站会以这个为标记实现国际化 accept_language = 'zh_CN' # 可接受的数据类型 accept_mine = 'text/html,application/xhtml+xml,' \ 'application/xml;q=0.9,*/*;q=0.8' #: 最大重定向次数,防止重定向陷阱。 max_redirects = 20 #: 每个爬虫的最大并发连接数。 max_connections = 10 #: 超时。 timeout = 360 #: 最大失败尝试次数。 max_retries = 1000 #: 每次尝试后递增休眠间隔。 #: 例如 ``sleep_seconds = 2`` ,那么第一次连接失败会休眠2秒,第二次会休眠4秒,第三次会休眠6秒。 sleep_seconds = 1 #: Bloom容量 bloom_capacity = 10000000 #: Bloom预计错误率 bloom_error_rate = 0.0001 #: HTTP代理 proxies = None #: 错误日志存放处 dump_dir = 'dump/' is_stop = True stopped = False name = None retry_with_broken_content = False retry_with_no_content = False #: 如果服务器遇到这些error code,当做正常页面处理 ignore_server_error_code = () #: 如果服务器遇到这些error code,不进行重试,直接忽略掉 do_not_retry_with_server_error_code = () lock = None logger = logging.getLogger('Crawler') def __init__(self): httplib.HTTPConnection.debuglevel = self.http_debuglevel self.network = NetworkManager(crawler=self) self.pool = Pool() self.lock = RLock() self.bloom_filters = {} self.name = self.__class__.__name__ self._status = { 'process_count': 0, 'is_stop': True, 'run_seconds': 0, 'crawler_name': self.name, } # def sync_bloom(self): # """强行同步Bloom到文件""" # # while not self.is_stop: # for key in self.bloom_filters.keys(): # self.bloom_filters[key].sync() # gevent.sleep(1) def work(self): """启动爬虫。""" if self.lock.acquire(blocking=False): self.logger.info('Starting crawler %s' % self.name) self.stopped = False self._status['is_stop'] = False self.pool.spawn(self.run) self.pool.join() self.network.join() self._status['is_stop'] = True self.logger.info('Finished crawler %s' % self.name) self.lock.release() def on_server_error(self, response): """服务器错误回调。 :param response: :raise ServerError: """ self.logger.warning('Something wrong with server.') raise ServerError('Error Code:%s' % response.status_code) def on_proxies_error(self, proxy): pass def on_parse_error(self, error): """页面分析错误回调 :param error: """ def fetch_proxies(self): pass def stop(self): """停止爬虫。 """ self.logger.info('Stopping crawler %s' % self.name) self.stopped = True while not self.network._request_queue.empty(): self.network._request_queue.get() def status(self): """返回爬虫状态。 :return: :rtype: """ return self._status def run(self): """这里编写启动爬虫的工作。 必须重载此函数,推倒第一块多米诺骨牌。 """ raise NotImplementedError
def __init__(self): self.nm = NetworkManager()
class MainImpl: def __init__(self): self.nm = NetworkManager() def show_status(self): for t in self.nm.supported_types: conns = self.nm.get_connections_by_type(t) if len(conns) == 0: continue print("-- %s ----" % (t)) for conn in conns: print("Id: %s" % (conn.settings.id)) print("UUID: %s" % (conn.settings.uuid)) print("State: %s" % (conn.state)) if conn.settings.mac_address is not None: device = self.nm.get_device_by_mac(conn.settings.mac_address) print("Device: %s" % ("Unknown" if device is None else device.interface)) if conn.settings.auto: print("Address: auto (DHCP)") else: print("Address: %s" % (conn.settings.address)) print("Netmask: %s" % (conn.settings.netmask)) print("Gateway: %s" % (conn.settings.gateway)) if conn.settings.dns is not None: print("DNS: %s" % (conn.settings.dns)) def activate_connection(self, conn_id): tconn = None for conn in self.nm.connections: if conn.settings.id == conn_id: tconn = conn break if tconn is None: raise Exception("the specified connection-id does not match an existing connection") if tconn.settings.type not in self.nm.supported_types: raise UnsupportedConnectionType("connection type \"%s\" is not supported" % tconn.settings.type) device = None for d in self.nm.devices: if d.type not in self.types: continue if self.nm.get_type_string(d.type) != conn.settings.type: continue device = d break if device is None: raise NoDeviceFound("there are no network devices available for this connection") try: self.nm.activate_connection(conn, device) except dbus.exceptions.DBusException as e: if str(e).startswith('org.freedesktop.NetworkManager.UnmanagedDevice'): raise Exception("device (%s) not currently managed" % device.interface) else: raise def deactivate_connection(self, conn_id): for active in self.nm.active_connections: if active.connection.settings.id == conn_id: self.nm.deactivate_connection(active.proxy) return raise Exception("the specified connection-id does not match an existing connection")