diff --git a/testUpdateHostsFile.py b/testUpdateHostsFile.py index 171cb21ba..6b13b567d 100644 --- a/testUpdateHostsFile.py +++ b/testUpdateHostsFile.py @@ -86,7 +86,7 @@ class TestGetDefaults(Base): "replace": False, "backup": False, "skipstatichosts": False, - "keepdomaincomments": False, + "keepdomaincomments": True, "extensionspath": "foo" + self.sep + "extensions", "extensions": [], "compress": False, @@ -753,10 +753,12 @@ class TestStripRule(Base): self.assertEqual(output, line) def test_strip_more_than_two(self): + comment = " # comments here galore" + for line in ["0.0.0.0 twitter.com", "127.0.0.1 facebook.com", "8.8.8.8 google.com", "1.2.3.4 foo.bar.edu"]: - output = strip_rule(line + " # comments here galore") - self.assertEqual(output, line) + output = strip_rule(line + comment) + self.assertEqual(output, line + comment) class TestWriteOpeningHeader(BaseMockDir): diff --git a/updateHostsFile.py b/updateHostsFile.py index 09affa6a9..5647db447 100644 --- a/updateHostsFile.py +++ b/updateHostsFile.py @@ -60,7 +60,7 @@ def get_defaults(): "replace": False, "backup": False, "skipstatichosts": False, - "keepdomaincomments": False, + "keepdomaincomments": True, "extensionspath": path_join_robust(BASEDIR_PATH, "extensions"), "extensions": [], "compress": False, @@ -99,8 +99,8 @@ def main(): parser.add_argument("--ip", "-i", dest="targetip", default="0.0.0.0", help="Target IP address. Default is 0.0.0.0.") parser.add_argument("--keepdomaincomments", "-k", - dest="keepdomaincomments", default=False, - help="Keep domain line comments.") + dest="keepdomaincomments", action="store_false", default=True, + help="Do not keep domain line comments.") parser.add_argument("--noupdate", "-n", dest="noupdate", default=False, action="store_true", help="Don't update from " "host data sources.") @@ -843,7 +843,10 @@ def normalize_rule(rule, target_ip, keep_domain_comments): rule = "%s %s" % (target_ip, hostname) if suffix and keep_domain_comments: - rule += " #%s" % suffix + if not suffix.strip().startswith('#'): + rule += " #%s" % suffix + else: + rule += " %s" % suffix return hostname, rule + "\n" @@ -860,7 +863,10 @@ def normalize_rule(rule, target_ip, keep_domain_comments): rule = "%s %s" % (target_ip, ip_host) if suffix and keep_domain_comments: - rule += " #%s" % suffix + if not suffix.strip().startswith('#'): + rule += " #%s" % suffix + else: + rule += " %s" % suffix return ip_host, rule + "\n" @@ -875,9 +881,6 @@ def strip_rule(line): """ Sanitize a rule string provided before writing it to the output hosts file. - Some sources put comments around their rules, for accuracy we need - to strip them the comments are preserved in the output hosts file. - Parameters ---------- line : str @@ -894,7 +897,7 @@ def strip_rule(line): # just return blank return "" else: - return split_line[0] + " " + split_line[1] + return " ".join(split_line) def write_opening_header(final_file, **header_params):