Add option to skip static localhost entries in the final hosts file.
authorIndrajit Raychaudhuri <redacted>
Tue, 19 Apr 2016 19:42:59 +0000 (14:42 -0500)
committerIndrajit Raychaudhuri <redacted>
Tue, 19 Apr 2016 19:44:39 +0000 (14:44 -0500)
This is particularly handy when you want to add the generated hosts file
as additional static 'hosts' file in DNS servers without affecting the default
`/etc/hosts`.

For example, `--addn-hosts=<file>` in dnsmasq [1] can be used exactly for this
purpose.

[1] http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html

updateHostsFile.py

index b2512df074dbbcf36c367343df7b52dfc60047c8..c7191594e9aaef13295ffd2781cf7732b43639ca 100644 (file)
@@ -81,6 +81,7 @@ defaults = {
     "freshen" : True,
     "replace" : False,
     "backup" : False,
+    "skipstatichosts": False,
     "extensionspath" : os.path.join(BASEDIR_PATH, "extensions"),
     "extensions" : [],
     "outputsubfolder" : "",
@@ -105,6 +106,7 @@ def main():
     parser.add_argument("--extensions", "-e", dest="extensions", default=[], nargs="*", help="Host extensions to include in the final hosts file.")
     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("--noupdate", "-n", dest="noupdate", default=False, action="store_true", help="Don't update from host data sources.")
+    parser.add_argument("--skipstatichosts", "-s", dest="skipstatichosts", default=False, action="store_true", help="Skip static localhost entries in the final hosts file.")
     parser.add_argument("--output", "-o", dest="outputsubfolder", default="", help="Output subfolder for generated hosts file.")
     parser.add_argument("--replace", "-r", dest="replace", default=False, action="store_true", help="Replace your active hosts file with this new hosts file.")
 
@@ -181,10 +183,10 @@ def promptForMoreCustomExclusions():
 
 def promptForMove(finalFile):
 
-    if settings["replace"]:
+    if settings["replace"] and not settings["skipstatichosts"]:
         response = "yes"
     else:
-        response = "no" if settings["auto"] else query_yes_no("Do you want to replace your existing hosts file " +
+        response = "no" if settings["auto"] or settings["skipstatichosts"] else query_yes_no("Do you want to replace your existing hosts file " +
                             "with the newly generated file?")
     if response == "yes":
         moveHostsFileIntoPlace(finalFile)
@@ -392,15 +394,17 @@ def writeOpeningHeader(finalFile):
     writeData(finalFile, "# Project home page: https://github.com/StevenBlack/hosts\n#\n")
     writeData(finalFile, "# ===============================================================\n")
     writeData(finalFile, "\n")
-    writeData(finalFile, "127.0.0.1 localhost\n")
-    writeData(finalFile, "127.0.0.1 localhost.localdomain\n")
-    writeData(finalFile, "127.0.0.1 local\n")
-    writeData(finalFile, "255.255.255.255 broadcasthost\n")
-    writeData(finalFile, "::1 localhost\n")
-    writeData(finalFile, "fe80::1%lo0 localhost\n")
-    if platform.system() == "Linux":
-        writeData(finalFile, "127.0.1.1 " + socket.gethostname() + "\n")
-    writeData(finalFile, "\n")
+
+    if not settings["skipstatichosts"]:
+        writeData(finalFile, "127.0.0.1 localhost\n")
+        writeData(finalFile, "127.0.0.1 localhost.localdomain\n")
+        writeData(finalFile, "127.0.0.1 local\n")
+        writeData(finalFile, "255.255.255.255 broadcasthost\n")
+        writeData(finalFile, "::1 localhost\n")
+        writeData(finalFile, "fe80::1%lo0 localhost\n")
+        if platform.system() == "Linux":
+            writeData(finalFile, "127.0.1.1 " + socket.gethostname() + "\n")
+        writeData(finalFile, "\n")
 
     preamble = os.path.join(BASEDIR_PATH, "myhosts")
     if os.path.isfile(preamble):
git clone https://git.99rst.org/PROJECT