def start_quickscan(self): """ Do necessary checks before starting Scheduler. """ err = self.qscontrol.start(from_gui=True) if err: alertdlg = GenericAlert(_("QuickScan Launcher"), _("QuickScan couldn't be started, reason:\n\n") + str(err), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) resp = alertdlg.run() alertdlg.destroy()
def start_quickscan(self): """ Do necessary checks before starting Scheduler. """ err = self.qscontrol.start(from_gui=True) if err: alertdlg = GenericAlert( _("QuickScan Launcher"), _("QuickScan couldn't be started, reason:\n\n") + str(err), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) resp = alertdlg.run() alertdlg.destroy()
def _check_scans(self): """ Check for finished scans. """ todelete = [ ] for scan, inventory in self.running_scans.items(): try: scan_state = scan.scan_state() except Exception, err: # scan failed to run. # probably a scan with args that requires root and a # normal user tried running. dlg = GenericAlert(_("Scan failed to run!"), (_("You tried running scan for Inventory") + (" %r,\n" % inventory) + _("but it returned the following") + (":\n\n%s" % err)), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy() todelete.append(scan) continue if not scan_state: # scan finished xmlstore = XMLStore(Path.umitdb_ng) try: try: xmlstore.store(scan.get_xml_output_file(), inventory=inventory) except Exception: # failed while adding scan to the database dlg = GenericAlert(_("Database couldn't be updated!"), (_("The scan for the Inventory") + (" %r " % inventory) + _("finished but it couldn't be added to " "the database.") + ("\n\n%s" % traceback.format_exc())), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy() finally: xmlstore.close() # close connection to the database scan.close() todelete.append(scan)
def stop_scheduler(self): """ Stop scheduler if possible. """ err = self.schedcontrol.stop() if err: # user not allowed to stop scheduler alertdlg = GenericAlert(_("Scheduler Controller"), _("The Scheduler couldn't be stopped, reason:\n\n") + str(err), buttons={1: (gtk.RESPONSE_HELP, gtk.STOCK_HELP), 2: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) resp = alertdlg.run() if resp == gtk.RESPONSE_HELP: show_help(self,"scheduler.html#stopping-scheduler") alertdlg.destroy()
def _get_command_from_schemas(self, inventory): """ Get scan command from schemas profiles. """ schemas = ConfigParser() schemas.read(Path.sched_schemas) try: scan_args = schemas.get(inventory, "command") return scan_args except NoSectionError, err: dlg = GenericAlert(_("Scan will not run!"), _("You tried running scan for Inventory") + (" %r,\n" % inventory) + _("but it has no data in Scheduler schemas file, neither in " "database.\n\nError returned:") + (" %s" % err), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy()
def start_scheduler(self): """ Do necessary checks before starting Scheduler. """ err = None if not amiroot(): # running as normal user alertdlg = GenericAlert(_("Scheduler Controller"), _("You are requesting to start Scheduler as a normal \ user.\n\nIn case some scheduled scan contains any \noptions that requires \ root previlegies they will end \nup not running.\n\nIf you don't want to \ start the Scheduler now, \nselect Cancel, if you want to run it as a normal \ user \nanyway, select OK, otherwise, select Help to learn \nhow you can \ start it as root."), buttons={1: (gtk.RESPONSE_HELP, gtk.STOCK_HELP), 2: (gtk.RESPONSE_CANCEL, gtk.STOCK_CANCEL), 3: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) resp = alertdlg.run() if resp == gtk.RESPONSE_OK: err = self.schedcontrol.start(from_gui=True) elif resp == gtk.RESPONSE_HELP: show_help(self,"scheduler.html#starting-scheduler-as-root") alertdlg.destroy() else: # running as root err = self.schedcontrol.start(from_gui=True) if err: alertdlg = GenericAlert(_("Scheduler Controller"), _("The Scheduler couldn't be started, reason:\n\n") + str(err), buttons={1: (gtk.RESPONSE_HELP, gtk.STOCK_HELP), 2: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) resp = alertdlg.run() if resp == gtk.RESPONSE_HELP: show_help(self,"scheduler.html#starting-scheduler") alertdlg.destroy()
def _get_command_from_schemas(self, inventory): """ Get scan command from schemas profiles. """ schemas = ConfigParser() schemas.read(Path.sched_schemas) try: scan_args = schemas.get(inventory, "command") return scan_args except NoSectionError, err: dlg = GenericAlert( _("Scan will not run!"), _("You tried running scan for Inventory") + (" %r,\n" % inventory) + _("but it has no data in Scheduler schemas file, neither in " "database.\n\nError returned:") + (" %s" % err), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy()
def _check_scans(self): """ Check for finished scans. """ todelete = [] for scan, inventory in self.running_scans.items(): try: scan_state = scan.scan_state() except Exception, err: # scan failed to run. # probably a scan with args that requires root and a # normal user tried running. dlg = GenericAlert( _("Scan failed to run!"), (_("You tried running scan for Inventory") + (" %r,\n" % inventory) + _("but it returned the following") + (":\n\n%s" % err)), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy() todelete.append(scan) continue if not scan_state: # scan finished xmlstore = XMLStore(Path.umitdb_ng) try: try: xmlstore.store(scan.get_xml_output_file(), inventory=inventory) except Exception: # failed while adding scan to the database dlg = GenericAlert( _("Database couldn't be updated!"), (_("The scan for the Inventory") + (" %r " % inventory) + _("finished but it couldn't be added to " "the database.") + ("\n\n%s" % traceback.format_exc())), buttons={1: (gtk.RESPONSE_OK, gtk.STOCK_OK)}) dlg.run() dlg.destroy() finally: xmlstore.close() # close connection to the database scan.close() todelete.append(scan)