Skip to content

Commit

Permalink
BUG: FQDNs in IDN format
Browse files Browse the repository at this point in the history
fixes #622

Signed-off-by: Sebastian Wagner <sebix@sebix.at>
  • Loading branch information
sebix committed Nov 9, 2016
1 parent e16825b commit 3342a23
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 1 deletion.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -33,6 +33,7 @@ v1.0 (in development, master branch)
- ENH: Added descriptions and matching types to all fields
- DOC: harmonization documentation has same fields as configuration, docs are generated from configuration
- ENH: New type LowercaseString and UppercaseString
- BUG: FQDNs are only allowed in IDN representation

#### Most important changes:
- `(source|destination).bgp_prefix` is now `(source|destination).network`
Expand Down
6 changes: 5 additions & 1 deletion intelmq/lib/harmonization.py
Expand Up @@ -25,6 +25,7 @@

import dateutil.parser
import dns.resolver
import encodings.idna
import pytz

import intelmq.lib.utils as utils
Expand Down Expand Up @@ -314,6 +315,9 @@ def is_valid(value, sanitize=False):
if URL().is_valid(value):
return False

if encodings.idna.ToASCII(value).decode() != value:
return False

"""
# "localhost" is a valid hostname
if len(value.split('.')) <= 1:
Expand All @@ -327,7 +331,7 @@ def is_valid(value, sanitize=False):

@staticmethod
def sanitize(value):
return value.rstrip('.').lower()
return encodings.idna.ToASCII(value).decode().rstrip('.').lower()

@staticmethod
def to_ip(value):
Expand Down
3 changes: 3 additions & 0 deletions intelmq/tests/lib/test_harmonization.py
Expand Up @@ -194,11 +194,13 @@ def test_fqdn_valid(self):
self.assertTrue(harmonization.FQDN.is_valid('ex-am.ple.example'))
self.assertTrue(harmonization.FQDN.is_valid('intelmq.org'))
self.assertTrue(harmonization.FQDN.is_valid('sub_sub2.example.net'))
self.assertTrue(harmonization.FQDN.is_valid('xn--1.at-4qa'))

def test_fqdn_invalid(self):
""" Test FQDN.is_valid with invalid arguments. """
self.assertFalse(harmonization.FQDN.is_valid('ex-am.ple.example.'))
self.assertFalse(harmonization.FQDN.is_valid('exAmple.com'))
self.assertFalse(harmonization.FQDN.is_valid('ö1.at'))

def test_fqdn_sanitize(self):
""" Test FQDN.sanitize with valid arguments. """
Expand All @@ -208,6 +210,7 @@ def test_fqdn_sanitize(self):
sanitize=True))
self.assertTrue(harmonization.FQDN.is_valid('exAmple.net',
sanitize=True))
self.assertTrue(harmonization.FQDN.is_valid('ö1.at', sanitize=True))

def test_fqdn_to_ip(self):
""" Test FQDN.to_ip """
Expand Down

0 comments on commit 3342a23

Please sign in to comment.