2012-04-03 7 views
0

Wie kann ich apache2 Konfigurationsdatei mit nokogiri oder einem anderen XML-Parser analysieren? Ich habe versucht, die Datei mit Nokogiri::XML die folgenden Art und Weise zu analysieren:Analyse der Apache2-Konfiguration mit Nokogiri

parsed = Nokogiri::XML(File.open("/home/user/config")) 

Das hat nicht geholfen. Beim Versuch, das Objekt zu inspizieren parsed.errors mit i folgenden erhalten:

[#<Nokogiri::XML::SyntaxError: Start tag expected, '<' not found>] 

Gibt es irgendwelche Edelsteine ​​oder irgendetwas andere Apache-Konfiguration, bearbeiten zu analysieren und speichern?

UPD:

Hier ist meine Config-Datei:

LoadModule passenger_module /home/user/.rvm/gems/[email protected]/gems/passenger-3.0.11/ext/apache2/mod_passenger.so 
PassengerRoot /home/user/.rvm/gems/[email protected]/gems/passenger-3.0.11 
PassengerRuby /home/user/.rvm/wrappers/[email protected]/ruby 

<VirtualHost *:80> 
ServerAdmin [email protected] 

    RailsEnv staging 

DocumentRoot /path_to_project/public 
    Alias /webdav /path_to_project/public/dir 
    Alias /webdav-some-dir path_to_project/public/dir/another_dir 

ServerSignature On 
    <Directory path_to_project/public> 

     AllowOverride all  
     Options -MultiViews 
    AddDefaultCharset utf-8 

    </Directory> 

<Location /webdav> 
     DAV On 
     AuthType Basic 
     AuthName "webdav" 
     AuthUserFile /var/www/project_name/passwd.dav 
    PassengerEnabled off 
    Require globalAdministrator 
    <Limit GET OPTIONS PROPFIND> 
     Require user username #valid-user 
    </Limit> 
    <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #globalAdministrator 
    </Limit> 
    </Location> 
    <LocationMatch "/webdav/.+/.+/.+/.+/.+/.+"> 
    <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </LocationMatch> 

<Location /webdav-some-dir> 
     DAV On 
     AuthType Basic 
     AuthName "webdav" 
     AuthUserFile /var/www/project_name/passwd.dav 
    PassengerEnabled off 
    Require globalAdministrator 
    <Limit GET OPTIONS PROPFIND> 
     Require user username #valid-user 
    </Limit> 
    <Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </Location> 
    <LocationMatch "/webdav-some-dir/.+/.+/.+/.+/.+"> 
    <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
     Require user username #valid-user 
    </Limit> 
    </LocationMatch> 

ErrorLog ${APACHE_LOG_DIR}/error.log 

LogLevel warn 

CustomLog ${APACHE_LOG_DIR}/access.log combined 

Antwort

0
Hash.from_xml(File.open("/path/to/config", "r").read) 

Wenn dies nicht funktioniert, Sie schould auch den Inhalt der Konfigurationsdatei hier posten ...

+0

Ich habe die Frage aktualisiert und fügte meine config – RomanKapitonov

+0

Yeah wie Kovensky sagte, das ist kein gültiges XML, so kann man es nicht wie xml behandeln. Was ist dein Ziel? – davidb

+0

Analysieren - bearbeiten - speichern. Ich habe ein Juwel 'Treetop' gefunden. Versuche jetzt einen Parser zu schreiben. – RomanKapitonov

4

Apache-Konfigurationsdateien sind nicht gültig XML. Es hat XML-ähnliche (höchstwahrscheinlich SGML-ähnliche) Tags zum Gruppieren von Optionen, aber es ist in keiner Weise XML. Probieren Sie das Juwel apache_config zum Analysieren der Konfigurationsdatei aus. obwohl es nicht gepflegt scheint.

0

Was möchten Sie erreichen? Ich denke, Ihre App sollte nicht über die Apache-Setup, das es läuft unter ...

+0

Ich muss die Konfiguration für einige Benutzer ändern, um den Zugriff auf einige Webdav-Verzeichnisse zu verbieten oder zu erlauben. Ich möchte die Konfiguration ändern und einen eleganten Neustart durchführen. – RomanKapitonov