Der Validator der Website und die IPS Funktion MC_GetModule haben doch gar keine Beziehung zueinander.
Der Validator ist vermutlich nicht aktuell, und kann nur bis 5.3 prüfen.
Hast doch selber geschrieben:
Somit ist es kein Fehler der JSON.
Die wird auch nicht beim öffnen der Konfig einer Instanz geladen oder geprüft.
Sondern nur wenn das Modul geladen wird (LogFile, Meldung im MC) oder wenn du halt MC_GetModule benutzt.
Wenn die Meldung mit Fehler in Zeile 165 in /demel42.symcon.integrity/libs/common.php beim öffnen der Konfig kommt, dann musst du ja PHP Code haben welche diese Zeile durch GetConfigurationForm erreicht.
Welches Modul jetzt aber betroffen ist, weiß du nicht, da alle Module in der Foreach Schleife durchlaufen werden.
Michael
du hast natürlich recht, ich hatte überlesen, das der Fehler in common.php auftritt
ja, und ich sehe das Problem, ich habe in meinem git-Verzeichnis Mist stehe …
wie doof & vielen Dank
das muss ich in meiner Funktion abfangen, kann man ja nicht verhindern und darf nicht zu einem Absturz führen …
@GerhardBS: ich habe eine neue Version in den Modulstore/Beta eingestellt.
Der Grund war (vermutlich), das du in deinem Git-Verzeichnis Verzeichnisse hast, die keine IPS-Module sind.
Die müssten auch unter Kern → Module angemeckert werden.
Das wird nun abgefangen.
Bitte Info nach Test, damit ich das wieder als stabile übernehmen kann
demel
es der Integrity-Test funktioniert wieder und unter Kern → Module Control war tatsächlich noch ein angefangenes Modul mit Fehler. Das ist jetzt auch wieder weg.
Hi Demel42,
ich hätte da vielleicht eine Idee für ein neues Modul a la ccCleaner oder BleachBit. Einige Module erzeugen Variablen oder Profile die vielleicht nie gebraucht werden. Ich habe mal ein Script geschrieben das alle unbenutzten Variablen bzw. Profile listet. Bei mir habe ich 322 unbenutzte Variablen und 250 unbenutzte Profile gefunden.
Als unbenutzte Variable gilt wenn es kein Aktualisierungsdatum und keine Aktionsroutine gibt.
Als unbenutztes Profil gilt wenn es keiner Variablen zugewiesen ist und nicht mit ‚~‘ anfängt, da es vermutlich Standardprofile sind.
Für Benutzer die „nur“ die Basic- oder Professional-Version von IPS benutzen könnte speziell die Variablenprüfung sehr interessant sein.
Hi,
stimmt scheint so. Script sollte anfangs anders aussehen aber ich bin immer wieder auf die Meldung gestoßen das ich, warum auch immer, > 1048576(0?) Byte haben möchte und das nicht geht.
Edit: habs oben geändert. Ich habe jetzt nur 250 ungenutzte Profile.
Ja, ich hab es getestet und meine Profile bereinigt.
Die Überprüfung erfolg hier
if ($profil == IPS_GetVariable($variable)["VariableProfile"] or $profil == IPS_GetVariable($variable)["VariableCustomProfile"]) $gefunden=true;
Jedes Profil wird in jeder Variable gesucht. Einmal wird überprüft ob es als sog. Custom Profile (von dir definiert) verwendet wird, oder ob es als Variable Profile (von einem Modul zugewiesen) verwendet wird. Wird es entweder da oder dort gefunden, dann wird die Variable $gefunden auf true gesetzt und das Profil wird nicht gelöscht.
Hi,
zusätzlich werden die Grundprofile von IPS, starten mit ~, nicht gelöscht denn zukünftig installierte Module könnten sich darauf verlassen das es sie gibt.
Hallo Ralf,
sorry, das ich nicht reagiert hatte, war mit anderen Angelegenheiten sehr beschäftigt.
klar, kann ich das in das Integrity-Modul einbauen
demel
Moin Demel,
kein Problem. War nur so eine Idee von mir weil schon fast alles überprüft wird was man überprüfen kann und die 2 Sachen sind mir noch eingefallen.
Automatisch löschen ist gefährlich und 100te von Warnung ausgeben könnte von richtigen Problemen ablenken. Bisher beschränkte sich das ganze ja auf wenige Meldungen.
@HarmonyFan
ich habe mal gerade den Check eingebaut.
Bei mir kommen da ein paar 100 Variablen … aber das sind alles Variablen von Instanzen (gerne HmIP) - wenn ich die löschen würde, kämen die ja bei nächsten Reboot oder einer Änderung anders jew. Instanz schwuppdiwupp wieder
Wenn ich zusätzlich auf Vorhandensein eines ObjectIdent prüfen (was ja vornehmlich bei Modulen gesetzt wird), sind das bei mir 0 Variablen.
Dann habe ich mal eine Variable von Hand angelegt … die ist gleich Aktualisiert, denn die wird ja initialisiert. Mit „Trick 17“ habe ich dann mal eine nicht initialisierte Variable angelegt (beim erzeugen der Variable den Standardwert gelöscht - gibt zwar eine Fehlermeldung, die Variable ist aber angelegt). Und die wird dann angezeigt.
Die Ausbeute ist aber dann ja gering …
Bei deinem Script prüfst du übrigens nur auf VariableAction == 0 … wäre nicht VariableCustomAction == 1 ebenfalls wichtig?
oder verstehe ich das Ziel nicht so ganz?
@cbeham: auto. Löschen sehe ich erstmal (noch) nicht, die Gefahr was falsches zu löschen ist ja doch nicht zu unterschätzen.