Skip to content

Commit

Permalink
Add exception for hyphenated hostname in validator so ip-range does n…
Browse files Browse the repository at this point in the history
…ot get triggered as a false negative
  • Loading branch information
christabor committed Mar 24, 2017
1 parent fac29ec commit 671bad4
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
5 changes: 4 additions & 1 deletion flask_extras/forms/validators/network.py
@@ -1,3 +1,5 @@
import re

import socket

from netaddr import iter_iprange
Expand Down Expand Up @@ -63,12 +65,13 @@ def valid_hosts(formcls, field):
:param formcls (object): The form class.
:param field (str): The list of ips.
"""
ip_range_re = re.compile(r'[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}')
data = field.data
if ',' in data:
ips = [ip for ip in data.split(',') if ip]
elif ' ' in data:
ips = [ip for ip in data.split(' ') if ip]
elif '-' in data:
elif '-' in data and re.match(ip_range_re, data):
try:
start, end = data.split('-')
ips = iter_iprange(start, end)
Expand Down
23 changes: 23 additions & 0 deletions tests/test_validators.py
Expand Up @@ -87,3 +87,26 @@ def test_valid_hosts_valid_list():
def test_valid_hosts_valid_range():
# Just ensuring it doesn't raise a ValueError
network.valid_hosts(FakeCls(), Field(data='192.168.0.1-192.168.10.0'))


def test_valid_hosts_valid_hyphen_no_ip():
# Just ensuring it doesn't raise a ValueError
network.valid_hosts(FakeCls(), Field(data='http://www.foo-bar.x.com'))


def test_valid_hosts_valid_range_mixed():
# Just ensuring it doesn't raise a ValueError
network.valid_hosts(FakeCls(), Field(
data='192.168.0.1,http://www.foo.com'))


def test_valid_hosts_valid_hyphenated_hostname_ip_mixed():
# Just ensuring it doesn't raise a ValueError
network.valid_hosts(FakeCls(), Field(
data='http://www.foo-bar.x.com,192.168.0.1'))


def test_valid_hosts_valid_hyphenated_hostname_ip_mixed_range():
# Just ensuring it doesn't raise a ValueError
network.valid_hosts(FakeCls(), Field(
data='http://www.foo-bar.x.com,192.168.0.1-192.168.10.4'))

0 comments on commit 671bad4

Please sign in to comment.