Browse Source

add listen address arg

HOME 2 years ago
parent
commit
e468902159
1 changed files with 16 additions and 7 deletions
  1. 16 7
      DnsForwarder/Program.cs

+ 16 - 7
DnsForwarder/Program.cs

@@ -22,24 +22,33 @@ namespace DnsForwarder
 
         private static void Main(string[] args)
         {
-            if (args.Length != 3)
+            if (args.Length != 4)
             {
-                Console.WriteLine("<default dns server ip> <.CN dns server ip> <path to dnsmasq-china-list file>");
+                Console.WriteLine("<listen address> <default dns server ip> <.CN dns server ip> <path to dnsmasq-china-list file>");
                 Environment.Exit(-1);
                 return;
             }
 
+            if (!IPAddress.TryParse(args[0], out var listenAddress))
+            {
+                Console.WriteLine("Invalid listen address.");
+                Environment.Exit(-2);
+                return;
+
+            }
+
             Console.WriteLine("Starting...");
-            Console.WriteLine($"Default Server: {_defaultDns = args[0]}");
-            Console.WriteLine($".CN DNS Server: {_cnDns = args[1]}");
-            Console.WriteLine($"dnsmasq-china-list: {args[2]}");
+            Console.WriteLine($"Listen address: {args[0]}");
+            Console.WriteLine($"Default Server: {_defaultDns = args[1]}");
+            Console.WriteLine($".CN DNS Server: {_cnDns = args[2]}");
+            Console.WriteLine($"dnsmasq-china-list: {args[3]}");
 
             Console.WriteLine("Loading list file...");
-            LoadListFile(args[2]);
+            LoadListFile(args[3]);
             Console.WriteLine("OK. Listening...");
 
             _listener = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
-            _listener.Bind(new IPEndPoint(IPAddress.Any, 53));
+            _listener.Bind(new IPEndPoint(listenAddress, 53));
 
             _consoleOutout = new BlockingCollection<string>();