@@ -43,6 +43,8 @@ public class DnscryptProxyConfiguration : PropertyChangedBase
4343 private int _log_files_max_age ;
4444 private int _log_files_max_backups ;
4545 private bool _block_ipv6 ;
46+ private bool _block_unqualified ;
47+ private bool _block_undelegated ;
4648 private int _reject_ttl ;
4749 private string _forwarding_rules ;
4850 private string _cloaking_rules ;
@@ -52,7 +54,7 @@ public class DnscryptProxyConfiguration : PropertyChangedBase
5254 private int _cache_min_ttl ;
5355 private int _cache_size ;
5456 private bool _cache ;
55- private string _fallback_resolver ;
57+ private ObservableCollection < string > _fallback_resolvers ;
5658 private bool _ignore_system_dns ;
5759 private Dictionary < string , Static > _static ;
5860 private string _proxy ;
@@ -489,24 +491,29 @@ public int cert_refresh_delay
489491 }
490492
491493 /// <summary>
492- /// Fallback resolver
493- /// This is a normal, non-encrypted DNS resolver, that will be only used
494- /// for one-shot queries when retrieving the initial resolvers list, and
495- /// only if the system DNS configuration doesn't work.
496- /// No user application queries will ever be leaked through this resolver,
497- /// and it will not be used after IP addresses of resolvers URLs have been found.
498- /// It will never be used if lists have already been cached, and if stamps
499- /// don't include host names without IP addresses.
500- /// It will not be used if the configured system DNS works.
501- /// A resolver supporting DNSSEC is recommended. This may become mandatory.
494+ /// Fallback resolvers
495+ /// These are normal, non-encrypted DNS resolvers, that will be only used
496+ /// for one-shot queries when retrieving the initial resolvers list, and
497+ /// only if the system DNS configuration doesn't work.
498+ /// No user application queries will ever be leaked through these resolvers,
499+ /// and they will not be used after IP addresses of resolvers URLs have been found.
500+ /// They will never be used if lists have already been cached, and if stamps
501+ /// don't include host names without IP addresses.
502+ /// They will not be used if the configured system DNS works.
503+ /// Resolvers supporting DNSSEC are recommended.
504+ ///
505+ /// People in China may need to use 114.114.114.114:53 here.
506+ /// Other popular options include 8.8.8.8 and 1.1.1.1.
507+ ///
508+ /// If more than one resolver is specified, they will be tried in sequence.
502509 /// </summary>
503- public string fallback_resolver
510+ public ObservableCollection < string > fallback_resolvers
504511 {
505- get => _fallback_resolver ;
512+ get => _fallback_resolvers ;
506513 set
507514 {
508- _fallback_resolver = value ;
509- NotifyOfPropertyChange ( ( ) => fallback_resolver ) ;
515+ _fallback_resolvers = value ;
516+ NotifyOfPropertyChange ( ( ) => fallback_resolvers ) ;
510517 }
511518 }
512519
@@ -578,6 +585,33 @@ public bool block_ipv6
578585 }
579586 }
580587
588+ /// <summary>
589+ /// Immediately respond to A and AAAA queries for host names without a domain name.
590+ /// </summary>
591+ public bool block_unqualified
592+ {
593+ get => _block_unqualified ;
594+ set
595+ {
596+ _block_unqualified = value ;
597+ NotifyOfPropertyChange ( ( ) => block_unqualified ) ;
598+ }
599+ }
600+
601+ /// <summary>
602+ /// Immediately respond to queries for local zones instead of leaking them to
603+ /// upstream resolvers (always causing errors or timeouts).
604+ /// </summary>
605+ public bool block_undelegated
606+ {
607+ get => _block_undelegated ;
608+ set
609+ {
610+ _block_undelegated = value ;
611+ NotifyOfPropertyChange ( ( ) => block_undelegated ) ;
612+ }
613+ }
614+
581615 /// <summary>
582616 /// TTL for synthetic responses sent when a request has been blocked (due to IPv6 or blacklists).
583617 /// </summary>
0 commit comments