def setKeyFile(keyfile): if type(keyfile) is str: if doesFileExist(keyfile): serverconfig_backend.setKeyFile(keyfile) else: raise error.ConfigBackendReturnValueError(keyfile, "valid readable file") else: raise error.ConfigBackendReturnTypeError(type(keyfile), "str")
def getKeyFile(): retValue = serverconfig_backend.getKeyFile() if type(retValue) is str: if doesFileExist(retValue): return retValue else: raise error.ConfigBackendReturnValueError(retValue, "valid readable file") elif type(retValue) is type(None): return retValue else: raise error.ConfigBackendReturnTypeError(type(retValue), "str")
def checkDataIntegrity(): """ Beschreibung: Prüft, ob alle Daten im DataBackend korrekt sind (z.B. ob die Clients, die einer Gruppe zugewiesen sind überhaupt existieren, etc) Parameter: keine Rückgabewerte: Keiner (es gibt nur Warnungen aus) Exceptions: <TODO> """ # Rufe die modulinterne Prüfung auf (prüfen der Berechtigungen, etc.) data_backend.checkPermissions() clientnames = data_backend.getClientNames() groupnames = data_backend.getGroupNames() scriptnames = data_backend.getScriptNames() # überprüfe Clients # Später soll hier auch noch geprüft werden, ob z.B. der DNS-Name aufgelöst werden kann, etc. errorcode, allClients = data_backend.getClientsFull() if errorcode is 0: for client in allClients: try: # Prüfe, ob alle benötigten Optionen existieren if not 'created-on' in client: log.writeLogLV(config_backend.getLogfile(), "Client '%s': Benötigte Option ('created-on') nicht gefunden\n" % (client['name']), log.LOGLEVEL["warning"]) if not 'last-seen' in client: log.writeLogLV(config_backend.getLogfile(), "Client '%s': Benötigte Option ('last-seen') nicht gefunden\n" % (client['name']), log.LOGLEVEL["warning"]) # Prüfe, ob die zugewiesenen Skripte existieren if 'scriptmember' in client: for script in ast.literal_eval(client['scriptmember']): if not script in scriptnames: log.writeLogLV(config_backend.getLogfile(), "Client '%s': Zugewiesenes Skript (%s) nicht gefunden\n" % (client['name'], script), log.LOGLEVEL["warning"]) except Exception as e: log.writeLogLV(config_backend.getLogfile(), "Client '%s': Überspringe die Prüfung, da ein Fehler aufgetreten ist (%s)\n" % (client['name'], e), log.LOGLEVEL["warning"]) if config_backend.getDebug(): print traceback.print_exc() # überprüfe Gruppen errorcode, allGroups = data_backend.getGroupsFull() if errorcode is 0: for group in allGroups: try: # Prüfe, ob alle benötigten Optionen existieren if not 'parent' in group: log.writeLogLV(config_backend.getLogfile(), "Gruppe '%s': Benötigte Option ('parent') nicht gefunden\n" % (group['name']), log.LOGLEVEL["warning"]) # Prüfe, ob die Parent-Gruppe existiert elif not group['parent'] in groupnames: log.writeLogLV(config_backend.getLogfile(), "Gruppe '%s': Parent-Gruppe (%s) nicht gefunden\n" % (group['name'], group['parent']), log.LOGLEVEL["warning"]) if 'member' in group: for client in ast.literal_eval(group['member']): if not client in clientnames: log.writeLogLV(config_backend.getLogfile(), "Gruppe '%s': Zugewiesener Client (%s) nicht gefunden\n" % (group['name'], client), log.LOGLEVEL["warning"]) if 'scriptmember' in group: for script in ast.literal_eval(group['scriptmember']): if not script in scriptnames: log.writeLogLV(config_backend.getLogfile(), "Gruppe '%s': Zugewiesenes Script (%s) nicht gefunden\n" % (group['name'], script), log.LOGLEVEL["warning"]) except Exception as e: log.writeLogLV(config_backend.getLogfile(), "Gruppe '%s': Überspringe die Prüfung, da ein Fehler aufgetreten ist (%s)\n" % (group['name'], e), log.LOGLEVEL["warning"]) if config_backend.getDebug(): print traceback.print_exc() # überprüfe Skripte errorcode, allScripts = data_backend.getScriptsFull() if errorcode is 0: for script in allScripts: try: # Prüfe, ob alle benötigten Optionen existieren if not 'path' in script: log.writeLogLV(config_backend.getLogfile(), "Script '%s': Benötigte Option ('path') nicht gefunden\n" % (script['name']), log.LOGLEVEL["warning"]) # Prüfe, ob das Skript im Dateisystem existiert elif not core.doesFileExist(script['path']): log.writeLogLV(config_backend.getLogfile(), "Script '%s': Datei (%s) im Dateisystem nicht gefunden\n" % (script['name'], script['path']), log.LOGLEVEL["warning"]) elif not 'md5' in script: log.writeLogLV(config_backend.getLogfile(), "Script '%s': Benötigte Option ('md5') nicht gefunden\n" % (script['name']), log.LOGLEVEL["warning"]) elif not script['md5'] == core.getMD5(script['path']): log.writeLogLV(config_backend.getLogfile(), "Script '%s': MD5-Summe (%s) stimmt nicht mit der Datei im Dateisystem (%s) überein\n" % (script['name'], script['md5'], core.getMD5(script['path'])), log.LOGLEVEL["warning"]) except Exception as e: log.writeLogLV(config_backend.getLogfile(), "Script '%s': Überspringe die Prüfung, da ein Fehler aufgetreten ist (%s)\n" % (script['name'], e), log.LOGLEVEL["warning"]) if config_backend.getDebug(): print traceback.print_exc()