Nginx configuration Parser
Project description
An nginx configuration parser that uses Pyparsing.
You can parse a nginx configuration file with load or loads method:
>>> from nginxparser_eb import load
>>> load(open("/etc/nginx/sites-enabled/foo.conf"))
[['server'], [
['listen', '80'],
['server_name', 'foo.com'],
['root', '/home/ubuntu/sites/foo/']]]]
Same as other serialization modules also you can export configuration with
>>> from nginxparser_eb import load
>>> load(open("/etc/nginx/sites-enabled/foo.conf"))
[['server'], [
['listen', '80'],
['server_name', 'foo.com'],
['root', '/home/ubuntu/sites/foo/']]]]
Same as other serialization modules also you can export configuration with dump and dumps methods.
>>> from nginxparser_eb import dumps
>>> dumps([['server'], [
['listen', '80'],
['server_name', 'foo.com'],
['root', '/home/ubuntu/sites/foo/']]])
'server {
listen 80;
server_name foo.com;
root /home/ubuntu/sites/foo/;
}'
Installation
The Nginx parser is now available via pip:
pip install nginxparser_eb
Troubleshooting
Exception like this may occur:
ParseException: Expected {Group:({W:(ABCD...) [{Suppress:(<SPC><TAB><CR><LF>) !W:({};)}] Suppress:(";")}) | Forward: ...} (at char 0), (line:1, col:1)
It may be caused by importing Cmd2 package which modifies pyparsing globals. In particular, the following code causes the trouble:
pyparsing.ParserElement.setDefaultWhitespaceChars(' \t')
In this setting the pyparser parser stops parsing after a new line.
From this reason, importing pyparsing modifies set white space chars back to
pyparsing.ParserElement.setDefaultWhitespaceChars(" \n\t\r")
Credits
Based on the https://github.com/fatiherikli/nginxparser and CertBot Nginx parser.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.