Skip to content

Commit

Permalink
Allow 'default' along with 'default_server' in Nginx (#5788)
Browse files Browse the repository at this point in the history
* test default detection

* Allow 'default' along with 'default_server' in Nginx

* Test that default gets written out as default_server in canonical string

* remove superfulous parens
  • Loading branch information
ohemorange authored and bmw committed Mar 26, 2018
1 parent 8d0d42a commit e9707eb
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 4 deletions.
2 changes: 2 additions & 0 deletions certbot-nginx/certbot_nginx/obj.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ def fromstring(cls, str_addr):
ssl = True
elif nextpart == 'default_server':
default = True
elif nextpart == 'default':
default = True
elif nextpart == "ipv6only=on":
ipv6only = True

Expand Down
8 changes: 5 additions & 3 deletions certbot-nginx/certbot_nginx/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,9 +391,11 @@ def duplicate_vhost(self, vhost_template, delete_default=False, only_directives=
for addr in new_vhost.addrs:
addr.default = False
for directive in enclosing_block[new_vhost.path[-1]][1]:
if (len(directive) > 0 and directive[0] == 'listen'
and 'default_server' in directive):
del directive[directive.index('default_server')]
if len(directive) > 0 and directive[0] == 'listen':
if 'default_server' in directive:
del directive[directive.index('default_server')]
if 'default' in directive:
del directive[directive.index('default')]
return new_vhost


Expand Down
7 changes: 6 additions & 1 deletion certbot-nginx/certbot_nginx/tests/obj_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ def setUp(self):
self.addr5 = Addr.fromstring("myhost")
self.addr6 = Addr.fromstring("80 default_server spdy")
self.addr7 = Addr.fromstring("unix:/var/run/nginx.sock")
self.addr8 = Addr.fromstring("*:80 default ssl")

def test_fromstring(self):
self.assertEqual(self.addr1.get_addr(), "192.168.1.1")
Expand Down Expand Up @@ -46,6 +47,8 @@ def test_fromstring(self):
self.assertFalse(self.addr6.ssl)
self.assertTrue(self.addr6.default)

self.assertTrue(self.addr8.default)

self.assertEqual(None, self.addr7)

def test_str(self):
Expand All @@ -55,6 +58,7 @@ def test_str(self):
self.assertEqual(str(self.addr4), "*:80 default_server ssl")
self.assertEqual(str(self.addr5), "myhost")
self.assertEqual(str(self.addr6), "80 default_server")
self.assertEqual(str(self.addr8), "*:80 default_server ssl")

def test_to_string(self):
self.assertEqual(self.addr1.to_string(), "192.168.1.1")
Expand All @@ -77,7 +81,8 @@ def test_equivalent_any_addresses(self):
from certbot_nginx.obj import Addr
any_addresses = ("0.0.0.0:80 default_server ssl",
"80 default_server ssl",
"*:80 default_server ssl")
"*:80 default_server ssl",
"80 default ssl")
for first, second in itertools.combinations(any_addresses, 2):
self.assertEqual(Addr.fromstring(first), Addr.fromstring(second))

Expand Down

0 comments on commit e9707eb

Please sign in to comment.