SubDomainZone.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. Technitium DNS Server
  3. Copyright (C) 2023 Shreyas Zare (shreyas@technitium.com)
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. using DnsServerCore.Dns.ResourceRecords;
  16. using System.Collections.Generic;
  17. using TechnitiumLibrary.Net.Dns.ResourceRecords;
  18. namespace DnsServerCore.Dns.Zones
  19. {
  20. abstract class SubDomainZone : AuthZone
  21. {
  22. #region variables
  23. readonly AuthZone _authoritativeZone;
  24. #endregion
  25. #region constructor
  26. protected SubDomainZone(AuthZone authoritativeZone, string name)
  27. : base(name)
  28. {
  29. _authoritativeZone = authoritativeZone;
  30. }
  31. #endregion
  32. #region public
  33. public void AutoUpdateState()
  34. {
  35. foreach (KeyValuePair<DnsResourceRecordType, IReadOnlyList<DnsResourceRecord>> entry in _entries)
  36. {
  37. foreach (DnsResourceRecord record in entry.Value)
  38. {
  39. if (!record.GetAuthRecordInfo().Disabled)
  40. {
  41. _disabled = false;
  42. return;
  43. }
  44. }
  45. }
  46. _disabled = true;
  47. }
  48. #endregion
  49. #region properties
  50. public AuthZone AuthoritativeZone
  51. { get { return _authoritativeZone; } }
  52. #endregion
  53. }
  54. }