Beispiel #1
0
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")
Beispiel #2
0
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")
Beispiel #3
0
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()