Hi,
ich hab da ein kleines Problem... wer Lust hat sich mit mir den Kopf zu zerbrechen, gute Ideen sind hochwillkommen. (Vielleicht fehlt mir auch nur der richtige Ansatz zum suchen?)
Und zwar geht es darum, dass in einer Datenbank (postgres) bestimmte Informationen gespeichert sind, und ich hätte gern eine Information darüber, wann darin was geändert wurde, und die entsprechenden diffs - so ähnlich wie man das mit GIT oder SVN in einem Dateienbaum realisieren kann.
Gefunden hab ich dazu dieses hier: https://stackoverflow.com/questions/6365710/database-content-versioning
Aber das ist für mein Interesse recht nährwertlos. Klar kann man in Postgres die redologs arichivieren und damit prinzipiell jede Veränderung nachvollziehen, aber diese Daten kann man nicht filtern und nicht sinnvoll lesen.
Ausserdem brauche ich das nicht für die ganze postgres Installation, sondern nur für eine bestimmte Datenbank und darin selektiv für einzelne Objektbäume.
Hintergrund:
Ich hab eine "gewachsene" ipfw Konfiguration, die über die Jahre recht lang geworden ist, so dass ich sie gar nicht mehr anrühren wollte. Wer schon mit ipfw gearbeitet hat, wird wissen dass das etwas verwickelt wird, wenn man NAT und stateful rules und jails und source-based routing drin hat - man braucht dann bedingte Verzweigungen und subroutines oder dergleichen, und das ganze ist keine Freude mehr zu modifizieren.
Als hab ich mir gesagt, es müsste doch möglich sein, nur die Netzwerk-Topologie und die benötigten Flows aufzulisten, und die sich daraus ergebenden Rules dann automatisch zu erzeugen. Hab einen kurzen Blick auf FirewallBuilder geworfen, fand das aber nicht ganz überzeugend, zumal es ipfw nur am rande mit zu unterstützen scheint. Hab also selber was geschrieben.
Das liegt nun in der Datenbank, und zum Bedienen ist ein Ruby-on-Rails obendrauf, und es ist eigentlich jetzt ein echter Genuß, da was zusammenzuklicken.
Nur eben: der Output (die eigentlichen Rules) ist jetzt sozusagen "kompiliert" - das ist zwar logisch richtig und funktioniert, aber man kanns nicht mehr vernünftig lesen. Und im daily.log sieht es auch nur noch so aus:
Um das zu verstehen, und um Änderungen nachzuvollziehen, muss man jetzt sozusagen die "source" lesen. Die aber ist eine Tabellenhierariche in der Datenbank - da kann man keine Kommentare reinschreiben oder Zeilen auskommentieren oder ein SVN draufsetzen.
Und da fehlt mir grad die zündende Idee wie man das weiter angehen könnte. Wobei die Lösung an sich echt Spass macht, also ich denke schon dass der Ansatz richtig ist.
ich hab da ein kleines Problem... wer Lust hat sich mit mir den Kopf zu zerbrechen, gute Ideen sind hochwillkommen. (Vielleicht fehlt mir auch nur der richtige Ansatz zum suchen?)
Und zwar geht es darum, dass in einer Datenbank (postgres) bestimmte Informationen gespeichert sind, und ich hätte gern eine Information darüber, wann darin was geändert wurde, und die entsprechenden diffs - so ähnlich wie man das mit GIT oder SVN in einem Dateienbaum realisieren kann.
Gefunden hab ich dazu dieses hier: https://stackoverflow.com/questions/6365710/database-content-versioning
Aber das ist für mein Interesse recht nährwertlos. Klar kann man in Postgres die redologs arichivieren und damit prinzipiell jede Veränderung nachvollziehen, aber diese Daten kann man nicht filtern und nicht sinnvoll lesen.
Ausserdem brauche ich das nicht für die ganze postgres Installation, sondern nur für eine bestimmte Datenbank und darin selektiv für einzelne Objektbäume.
Hintergrund:
Ich hab eine "gewachsene" ipfw Konfiguration, die über die Jahre recht lang geworden ist, so dass ich sie gar nicht mehr anrühren wollte. Wer schon mit ipfw gearbeitet hat, wird wissen dass das etwas verwickelt wird, wenn man NAT und stateful rules und jails und source-based routing drin hat - man braucht dann bedingte Verzweigungen und subroutines oder dergleichen, und das ganze ist keine Freude mehr zu modifizieren.
Als hab ich mir gesagt, es müsste doch möglich sein, nur die Netzwerk-Topologie und die benötigten Flows aufzulisten, und die sich daraus ergebenden Rules dann automatisch zu erzeugen. Hab einen kurzen Blick auf FirewallBuilder geworfen, fand das aber nicht ganz überzeugend, zumal es ipfw nur am rande mit zu unterstützen scheint. Hab also selber was geschrieben.
Das liegt nun in der Datenbank, und zum Bedienen ist ein Ruby-on-Rails obendrauf, und es ist eigentlich jetzt ein echter Genuß, da was zusammenzuklicken.
Nur eben: der Output (die eigentlichen Rules) ist jetzt sozusagen "kompiliert" - das ist zwar logisch richtig und funktioniert, aber man kanns nicht mehr vernünftig lesen. Und im daily.log sieht es auch nur noch so aus:
Code:
+01420 8 320 unreach filter-prohib log ip from any to any
+01730 90 20526 unreach filter-prohib log ip from any to any
+03440 726 148982 unreach filter-prohib log ip from any to any
+05270 8 336 unreach filter-prohib log ip from any to any
+05500 482 25709 unreach filter-prohib log ip from any to any
+07680 12 976 unreach filter-prohib log ip from any to any
+10090 262 25082 unreach filter-prohib log ip from any to any
+10690 3 1560 unreach filter-prohib log ip from any to any
Um das zu verstehen, und um Änderungen nachzuvollziehen, muss man jetzt sozusagen die "source" lesen. Die aber ist eine Tabellenhierariche in der Datenbank - da kann man keine Kommentare reinschreiben oder Zeilen auskommentieren oder ein SVN draufsetzen.
Und da fehlt mir grad die zündende Idee wie man das weiter angehen könnte. Wobei die Lösung an sich echt Spass macht, also ich denke schon dass der Ansatz richtig ist.