Разбор конфигурации apache2 с использованием nokogiri - PullRequest
0 голосов
/ 03 апреля 2012

Как я могу разобрать apache2 файл конфигурации, используя nokogiri или любой другой xml-анализатор? Я попытался проанализировать файл, используя Nokogiri::XML следующим образом:

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

Это не помогло. При попытке осмотреть объект с помощью parsed.errors я получаю следующее:

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

Существуют ли какие-либо гемы или что-то еще, чтобы проанализировать конфигурацию apache, отредактировать и сохранить ее?

UPD:

Вот мой конфигурационный файл:

LoadModule passenger_module /home/user/.rvm/gems/ree-1.8.7-2012.02@gemset/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/user/.rvm/gems/ree-1.8.7-2012.02@gemset/gems/passenger-3.0.11
PassengerRuby /home/user/.rvm/wrappers/ree-1.8.7-2012.02@gemset/ruby

<VirtualHost *:80>
ServerAdmin user@localhost

    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

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012

Файлы конфигурации Apache не являются допустимыми XML. У него есть XML-подобные (скорее всего, SGML-подобные) теги для группировки параметров, но это никак не XML. Попробуйте гем apache_config для анализа файла конфигурации; хотя кажется, что он не поддерживается.

0 голосов
/ 04 апреля 2012

Чего ты пытаешься достичь? Я думаю, что ваше приложение не должно беспокоиться о настройке apache, под которой он работает ...

0 голосов
/ 03 апреля 2012
Hash.from_xml(File.open("/path/to/config", "r").read)

Если это не работает, вы также должны опубликовать содержимое файла конфигурации здесь ....

...