/// <inheritdoc /> public void Seed(DnsSettings dnsSettings) { // Check if SOA record exists for host. int count = this.Get(new Question(new Domain(dnsSettings.DnsHostName), RecordType.SOA)).Count; if (count == 0) { // Add SOA record for host. this.entries.Add(new StartOfAuthorityResourceRecord(new Domain(dnsSettings.DnsHostName), new Domain(dnsSettings.DnsNameServer), new Domain(dnsSettings.DnsMailBox.Replace('@', '.')))); } // Check if NS record exists for host. count = this.Get(new Question(new Domain(dnsSettings.DnsHostName), RecordType.NS)).Count; if (count == 0) { // Add NS record for host. this.entries.Add(new NameServerResourceRecord(new Domain(dnsSettings.DnsHostName), new Domain(dnsSettings.DnsNameServer))); } }
/// <summary> /// Initializes a new instance of the <see cref="WhitelistManager"/> class. /// </summary> /// <param name="dateTimeProvider">The provider for datetime.</param> /// <param name="loggerFactory">The factory to create the logger.</param> /// <param name="peerAddressManager">The manager implementation for peer addresses.</param> /// <param name="dnsServer">The DNS server.</param> /// <param name="connectionSettings">The connection settings.</param> /// <param name="dnsSettings">The DNS settings.</param> /// <param name="peerBanning">Peer banning component.</param> public WhitelistManager(IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory, IPeerAddressManager peerAddressManager, IDnsServer dnsServer, ConnectionManagerSettings connectionSettings, DnsSettings dnsSettings, IPeerBanning peerBanning) { Guard.NotNull(dateTimeProvider, nameof(dateTimeProvider)); Guard.NotNull(loggerFactory, nameof(loggerFactory)); Guard.NotNull(peerAddressManager, nameof(peerAddressManager)); Guard.NotNull(dnsServer, nameof(dnsServer)); Guard.NotNull(dnsSettings, nameof(dnsSettings)); Guard.NotNull(connectionSettings, nameof(connectionSettings)); Guard.NotNull(peerBanning, nameof(peerBanning)); this.dateTimeProvider = dateTimeProvider; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.peerAddressManager = peerAddressManager; this.dnsServer = dnsServer; this.dnsSettings = dnsSettings; this.externalEndpoint = connectionSettings.ExternalEndpoint; this.peerBanning = peerBanning; }
/// <summary> /// Initializes a new instance of the <see cref="DnsSeedServer"/> class with the port to listen on. /// </summary> /// <param name="client">The UDP client to use to receive DNS requests and send DNS responses.</param> /// <param name="masterFile">The initial DNS masterfile.</param> /// <param name="asyncProvider">The async loop factory.</param> /// <param name="loggerFactory">The logger factory.</param> /// <param name="dateTimeProvider">The <see cref="DateTime"/> provider.</param> /// <param name="dataFolders">The data folders of the system.</param> public DnsSeedServer(IUdpClient client, IMasterFile masterFile, IAsyncProvider asyncProvider, INodeLifetime nodeLifetime, ILoggerFactory loggerFactory, IDateTimeProvider dateTimeProvider, DnsSettings dnsSettings, DataFolder dataFolders) { Guard.NotNull(client, nameof(client)); Guard.NotNull(masterFile, nameof(masterFile)); Guard.NotNull(asyncProvider, nameof(asyncProvider)); Guard.NotNull(nodeLifetime, nameof(nodeLifetime)); Guard.NotNull(loggerFactory, nameof(loggerFactory)); Guard.NotNull(dateTimeProvider, nameof(dateTimeProvider)); Guard.NotNull(dnsSettings, nameof(dnsSettings)); Guard.NotNull(dataFolders, nameof(dataFolders)); this.udpClient = client; this.masterFile = masterFile; this.asyncProvider = asyncProvider; this.nodeLifetime = nodeLifetime; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.dateTimeProvider = dateTimeProvider; this.dnsSettings = dnsSettings; this.dataFolders = dataFolders; this.metrics = new DnsMetric(); }
/// <summary> /// Initializes a new instance of the <see cref="DnsFeature"/> class. /// </summary> /// <param name="dnsServer">The DNS server.</param> /// <param name="whitelistManager">The whitelist manager.</param> /// <param name="loggerFactory">The factory to create the logger.</param> /// <param name="nodeLifetime">The node lifetime object used for graceful shutdown.</param> /// <param name="nodeSettings">The node settings object containing node configuration.</param> /// <param name="dnsSettings">Defines the DNS settings for the node</param> /// <param name="dataFolders">The data folders of the system.</param> /// <param name="asyncProvider">The asynchronous loop factory.</param> /// <param name="connectionManager">Manager of node's network connections.</param> /// <param name="unreliablePeerBehavior">Instance of the UnreliablePeerBehavior that will be added to the connectionManager Template.</param> public DnsFeature(IDnsServer dnsServer, IWhitelistManager whitelistManager, ILoggerFactory loggerFactory, INodeLifetime nodeLifetime, DnsSettings dnsSettings, NodeSettings nodeSettings, DataFolder dataFolders, IAsyncProvider asyncProvider, IConnectionManager connectionManager, UnreliablePeerBehavior unreliablePeerBehavior) { Guard.NotNull(dnsServer, nameof(dnsServer)); Guard.NotNull(whitelistManager, nameof(whitelistManager)); Guard.NotNull(loggerFactory, nameof(loggerFactory)); Guard.NotNull(nodeLifetime, nameof(nodeLifetime)); Guard.NotNull(nodeSettings, nameof(nodeSettings)); Guard.NotNull(dataFolders, nameof(dataFolders)); Guard.NotNull(asyncProvider, nameof(asyncProvider)); Guard.NotNull(connectionManager, nameof(connectionManager)); Guard.NotNull(unreliablePeerBehavior, nameof(unreliablePeerBehavior)); this.dnsServer = dnsServer; this.whitelistManager = whitelistManager; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.asyncProvider = asyncProvider; this.nodeLifetime = nodeLifetime; this.nodeSettings = nodeSettings; this.dnsSettings = dnsSettings; this.dataFolders = dataFolders; this.connectionManager = connectionManager; this.unreliablePeerBehavior = unreliablePeerBehavior; }
/// <summary> /// Get the default configuration. /// </summary> /// <param name="builder">The string builder to add the settings to.</param> /// <param name="network">The network to base the defaults off.</param> public static void BuildDefaultConfigurationFile(StringBuilder builder, Network network) { DnsSettings.BuildDefaultConfigurationFile(builder, network); }
/// <summary> /// Prints command-line help. /// </summary> /// <param name="network">The network to extract values from.</param> public static void PrintHelp(Network network) { DnsSettings.PrintHelp(network); }