Konfigurationsdatei mit PHP bearbeiten

Alles, was PHP betrifft, kann hier besprochen werden.

Konfigurationsdatei mit PHP bearbeiten

Postby domatrix » 21. April 2007 19:57

Hallo,

ich möchte gerne eine beliebige Konfigurationsdatei in PHP bearbeiten. Mit PHP kann man ja prima INI Dateien bearbeiten. Ich suche nach einer Möglichkeit Dateien wie "smb.conf" oder "rules" (Firewall) zu bearbeiten.


Die Dateien sind immer gleich aufgebaut, Befehle werden in Zeilen geschrieben. Wenn der erste Buchstabe in der Zeile ein "#" ist, dann handelt es sich um ein Kommentar

Beispiel:
Code: Select all
# Dies ist ein kommentar
wert=test


Soweit so gut. Leider kann man jetzt nicht sagen, dass Zeile 56 aus der smb.conf immer denselben Befehl hat, also muss man die Befehle filtern.

Kennt jemand eine gute Methode um folgendes zu lösen?

- Eine Textdatei Zeile für Zeile zu durchsuchen
- Zeilen wie die untere auszulesen?

Code: Select all
GROUP
ACCEPT   net   fw   tcp   22,80,20,21    -
ACCEPT   net   fw   tcp   443   -


Bin für jeden Tipp dankbar![/code]
domatrix
 
Posts: 14
Joined: 21. April 2007 15:14

Postby boppy » 21. April 2007 20:34

Also PHP.net sagt zum Datei auslesen:
Code: Select all
$handle = fopen ("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo $buffer;
}
fclose ($handle);


Dann musst du den Buffer eben auswerten. Sprich: strpos, explode, substr und trim... allein mit diesen funktionen solltest du in der lage sein, eine INI Datei auszulesen! aber ein bisschen nutzen von php.net und google traue ich dir zu ;)
...in diesem Sinne
yours boppy

Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
User avatar
boppy
AF Moderator
 
Posts: 501
Joined: 27. December 2002 02:15
Location: W-E-City

Postby domatrix » 22. April 2007 18:09

Danke!

Hat alles super geklappt! Habe nachdem ich die Daten ausgelesen habe, alle Daten temporär in eine MySQL Datenbank geschrieben um diese zu bearbeiten. Sobald der Benutzer auf speichern klickt, dann werden alle Daten aus der MySQL Datenbank in einen String umgewandelt und in die

/etc/shorewall/rules

Datei geschrieben, wobei die alten Daten ersetzt werden.

MfG
domatrix
domatrix
 
Posts: 14
Joined: 21. April 2007 15:14

Postby KingCrunch » 22. April 2007 18:39

Wieso denn den Umweg über die Datenbank? Oo Is ja richtig umständlich :D

Mögliche Alternative (es gibt einige Varianten):
1. Request:
- Datei auslesen
- Zur Bearbeitung anzeigen
Nutzer ändert die, blabla, drückt auf Speichern
2. Requets:
- Datei speichern (überschreiben)

Aus welchen Grund speicherst du den Inhalt der Datei ausgerechnet in einer Datenbank zwischen? Wenn du unbedingt einen Zwischenspeicher brauchst, wieso nimmst du dann nicht Sessions?

Für temporäre Daten (temporär im Sinne von schätzungsweise <1 Tag) ist eine Datenbank denkbar ungeeignet. Da is sogar nen Zwischenspeicher in einer Datei sinnvoller.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby domatrix » 22. April 2007 19:15

Ja, das ist mir bewusst, aber das Problem war ja auch, dass nicht alle Infos in der /etc/shorewall/rules Datei gerspeichert werden.


Ich habe z.B. eine Funktion geschrieben, die erlaubt einen Port zu benennen, also man kann sagen, dass Port 22 für SSH-Server benutzt wird. Da es etliche Programme gibt, die nicht offiziell eingetragene Ports verwenden, wie z.B. UT-Server, oder weitere Spiele, kann es durchaus sinnvol sein, diese Ports zu kommentieren.

Die MySQL Datenbank ist nicht mehr temporär, ich habe mir überlegt diese als Teil des PHP Skriptes zu verwenden, da dort viele Informationen dauerhaft gespeichert werden sollen. Man soll also auch noch nach dem Speichern wissen, was man für Port 22 als Kommentar verwendet hat.

Vielen Dank für alle Antworten

MfG domatrix
domatrix
 
Posts: 14
Joined: 21. April 2007 15:14


Return to PHP

Who is online

Users browsing this forum: No registered users and 4 guests