]> www.infradead.org Git - users/dwmw2/vpnc-scripts.git/commitdiff
vpnc-script-win: delete DNS and WINS servers before adding them
authorDaniel Lenski <dlenski@gmail.com>
Wed, 31 Mar 2021 21:56:38 +0000 (14:56 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Thu, 1 Apr 2021 01:11:39 +0000 (01:11 +0000)
If not, "leftover" servers will persist from previous use of the adapter.

This will result in errors: "The object is already in the list."

And also could be a source of buggy behavior, even security issues,
if the "same" TAP/TUN adapter was used to access a different VPN. ðŸ™Š

Signed-off-by: Daniel Lenski <dlenski@gmail.com>
vpnc-script-win.js

index d69f5ed81f0c9c7b67ca975bf2f53bce5a4f39f8..3b698f688d5949ebe8e061297df8c143d07ccc62 100644 (file)
@@ -105,22 +105,23 @@ case "connect":
     run("route add " + env("VPNGATEWAY") +
             " mask 255.255.255.255 " + gw);
 
+    run("netsh interface ipv4 del wins " + env("TUNIDX") + " all");
     if (env("INTERNAL_IP4_NBNS")) {
         var wins = env("INTERNAL_IP4_NBNS").split(/ /);
         for (var i = 0; i < wins.length; i++) {
-            run("netsh interface ip add wins " +
-                env("TUNIDX") + " " + wins[i]
-                + " index=" + (i+1));
+            run("netsh interface ipv4 add wins " +
+                env("TUNIDX") + " " + wins[i]);
         }
     }
 
+    run("netsh interface ipv4 del dns " + env("TUNIDX") + " all");
+    run("netsh interface ipv6 del dns " + env("TUNIDX") + " all");
     if (env("INTERNAL_IP4_DNS")) {
         var dns = env("INTERNAL_IP4_DNS").split(/ /);
         for (var i = 0; i < dns.length; i++) {
             var protocol = dns[i].indexOf(":") !== -1 ? "ipv6" : "ipv4";
             run("netsh interface " + protocol + " add dns " +
-                env("TUNIDX") + " " + dns[i]
-                + " index=" + (i+1));
+                env("TUNIDX") + " " + dns[i]);
         }
     }
     echo("done.");