Как я могу разобрать apache2
конфигурационный файл, используя nokogiri
или любой другой XML-парсер? Я пытался разобрать файл, используя Nokogiri::XML
следующим образом:Parsing apache2 config using nokogiri
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/[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
Я обновил вопрос и добавил свой конфиг – RomanKapitonov
Да, как Ковенский сказал, что нет правильного XML, поэтому вы не можете его рассматривать как xml. Какова ваша цель? – davidb
Parse - изменить - сохранить. Я нашел драгоценный камень «treetop». Пытаемся написать парсер сейчас. – RomanKapitonov