Beispiel #1
0
 public void Dispose()
 {
     if (_server != null)
     {
         _server.Dispose();
         _server = null;
     }
 }
Beispiel #2
0
 public void Stop()
 {
     _server.Dispose();
     ConfigureService();
     InitState(_options.Value.DefaultState);
     _logger.LogInformation("Service has been stopped");
 }
Beispiel #3
0
 protected virtual void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         if (disposing)
         {
             _server?.Dispose();
             _disposed = true;
         }
     }
 }
Beispiel #4
0
        private async static Task Create(IRequestResolver requestResolver, Func <DnsServer, Task> action)
        {
            TaskCompletionSource <object> tcs = new TaskCompletionSource <object>();
            DnsServer server = new DnsServer(requestResolver);

            server.Listening += async() => {
                try {
                    await action(server);

                    tcs.SetResult(null);
                } catch (Exception e) {
                    tcs.SetException(e);
                } finally {
                    server.Dispose();
                }
            };

            await Task.WhenAll(server.Listen(PORT), tcs.Task);
        }
Beispiel #5
0
        public async static Task MainAsync()
        {
            MasterFile masterFile = new MasterFile();
            DnsServer  server     = new DnsServer(masterFile, "8.8.8.8");

            masterFile.AddIPAddressResourceRecord("google.com", "127.0.0.1");

            server.Requested += (request) => Console.WriteLine("Requested: {0}", request);
            server.Responded += (request, response) => Console.WriteLine("Responded: {0} => {1}", request, response);
            server.Errored   += (e) => Console.WriteLine("Errored: {0}", e.Message);
            server.Listening += () => Console.WriteLine("Listening");

            server.Listening += async() => {
                DnsClient client = new DnsClient("127.0.0.1", PORT);

                await client.Lookup("google.com");

                await client.Lookup("cnn.com");

                server.Dispose();
            };

            await server.Listen(PORT);
        }
Beispiel #6
0
        public async static Task MainAsync()
        {
            DnsServer server = new DnsServer("8.8.8.8");

            server.Requested += (request) => Console.WriteLine("Requested: {0}", request);
            server.Responded += (request, response) => Console.WriteLine("Responded: {0} => {1}", request, response);
            server.Errored   += (e) => Console.WriteLine("Errored: {0}", e.Message);

            server.MasterFile.AddIPAddressResourceRecord("google.com", "127.0.0.1");

            #pragma warning disable 4014
            server.Listen(PORT);
            #pragma warning restore 4014

            await Task.Delay(1000);

            DnsClient client = new DnsClient("127.0.0.1", PORT);

            await client.Lookup("google.com");

            await client.Lookup("cnn.com");

            server.Dispose();
        }
Beispiel #7
0
 public static void Dispose()
 {
     _server.Dispose();
 }
Beispiel #8
0
 protected override void OnStop()
 {
     _server.Dispose();
 }
Beispiel #9
0
 private void stopServer()
 {
     server.Dispose();
 }
Beispiel #10
0
 public async Task StopAsync(CancellationToken cancellationToken)
 {
     _logger.LogInformation("Stopping DNS server");
     _dnsServer.Dispose();
 }
Beispiel #11
0
        private static void Main(string[] args)
        {
            WriteHeader();

            var tldCollection = new TldCollection();

            Console.Write("Fetching TLD list...");

            while (!tldCollection.IsReady)
            {
                Thread.Sleep(100);
            }

            Console.WriteLine($"success ({tldCollection.Count} items).");
            Console.WriteLine();

            bool logRequests     = false;
            var  requestResolver = new RequestResolver("httpcheck.singulink.com", "admin.singulink.com", tldCollection);

            requestResolver.AddPermanentRecord("singulink.com", true);

            requestResolver.RequestReceived += (s, e) => {
                if (logRequests)
                {
                    var now = DateTime.Now;
                    Console.WriteLine($"{now.ToShortDateString()} {now.ToShortTimeString()} REQ {e.Id} {e.RequestDomain} {e.EmailDomain}");
                }
            };

            requestResolver.ResponseSent += (s, e) => {
                if (logRequests)
                {
                    var now = DateTime.Now;
                    Console.WriteLine($"{now.ToShortDateString()} {now.ToShortTimeString()} RES {e.Id} {e.RequestDomain} {e.Result} {(int)e.Ttl.TotalSeconds}");
                }
            };

            var dnsServer = new DnsServer(requestResolver);

            RunDnsServer(dnsServer);

            Console.WriteLine("DNS Server started. Press D to toggle debug, C to clear window, or X to exit.");

            while (true)
            {
                var key = Console.ReadKey(true);

                if (key.Key == ConsoleKey.D)
                {
                    logRequests = !logRequests;
                    Console.WriteLine($"Request logging: {logRequests}");
                }
                else if (key.Key == ConsoleKey.C)
                {
                    Console.Clear();
                    WriteHeader();
                }
                else if (key.Key == ConsoleKey.X)
                {
                    break;
                }
            }

            Console.Write("Shutting down DNS Server...");

            dnsServer.Dispose();
            tldCollection.Dispose();

            Thread.Sleep(1000);

            Console.WriteLine("done.");
        }
Beispiel #12
0
 public Task StopAsync(CancellationToken cancellationToken)
 {
     _logger.LogInformation(("Dns server is stopping."));
     _server.Dispose();
     return(_listenTask);
 }