@@ -27,6 +27,7 @@ public class DnscryptProxyConfiguration : BindableBase
2727 private int _cert_refresh_delay ;
2828 private bool _dnscrypt_ephemeral_keys ;
2929 private bool _tls_disable_session_tickets ;
30+ private bool _log ;
3031 private int _log_level ;
3132 private string _log_file ;
3233 private Dictionary < string , Source > _sources ;
@@ -38,6 +39,8 @@ public class DnscryptProxyConfiguration : BindableBase
3839 private int _log_files_max_age ;
3940 private int _log_files_max_backups ;
4041 private bool _block_ipv6 ;
42+ private bool _block_unqualified ;
43+ private bool _block_undelegated ;
4144 private int _reject_ttl ;
4245 private string _forwarding_rules ;
4346 private string _cloaking_rules ;
@@ -47,7 +50,7 @@ public class DnscryptProxyConfiguration : BindableBase
4750 private int _cache_min_ttl ;
4851 private int _cache_size ;
4952 private bool _cache ;
50- private string _fallback_resolver ;
53+ private ObservableCollection < string > _fallback_resolvers ;
5154 private bool _ignore_system_dns ;
5255 private Dictionary < string , Static > _static ;
5356 private string _proxy ;
@@ -319,35 +322,40 @@ public string log_file
319322 /// </summary>
320323 public bool use_syslog
321324 {
322- get { return _use_syslog ; }
323- set { SetProperty ( ref _use_syslog , value ) ; }
325+ get => _use_syslog ;
326+ set => SetProperty ( ref _use_syslog , value ) ;
324327 }
325328
326329 /// <summary>
327330 /// Delay, in minutes, after which certificates are reloaded.
328331 /// </summary>
329332 public int cert_refresh_delay
330333 {
331- get { return _cert_refresh_delay ; }
332- set { SetProperty ( ref _cert_refresh_delay , value ) ; }
334+ get => _cert_refresh_delay ;
335+ set => SetProperty ( ref _cert_refresh_delay , value ) ;
333336 }
334337
335338 /// <summary>
336- /// Fallback resolver
337- /// This is a normal, non-encrypted DNS resolver, that will be only used
338- /// for one-shot queries when retrieving the initial resolvers list, and
339- /// only if the system DNS configuration doesn't work.
340- /// No user application queries will ever be leaked through this resolver,
341- /// and it will not be used after IP addresses of resolvers URLs have been found.
342- /// It will never be used if lists have already been cached, and if stamps
343- /// don't include host names without IP addresses.
344- /// It will not be used if the configured system DNS works.
345- /// A resolver supporting DNSSEC is recommended. This may become mandatory.
339+ /// Fallback resolvers
340+ /// These are normal, non-encrypted DNS resolvers, that will be only used
341+ /// for one-shot queries when retrieving the initial resolvers list, and
342+ /// only if the system DNS configuration doesn't work.
343+ /// No user application queries will ever be leaked through these resolvers,
344+ /// and they will not be used after IP addresses of resolvers URLs have been found.
345+ /// They will never be used if lists have already been cached, and if stamps
346+ /// don't include host names without IP addresses.
347+ /// They will not be used if the configured system DNS works.
348+ /// Resolvers supporting DNSSEC are recommended.
349+ ///
350+ /// People in China may need to use 114.114.114.114:53 here.
351+ /// Other popular options include 8.8.8.8 and 1.1.1.1.
352+ ///
353+ /// If more than one resolver is specified, they will be tried in sequence.
346354 /// </summary>
347- public string fallback_resolver
355+ public ObservableCollection < string > fallback_resolvers
348356 {
349- get { return _fallback_resolver ; }
350- set { SetProperty ( ref _fallback_resolver , value ) ; }
357+ get => _fallback_resolvers ;
358+ set => SetProperty ( ref _fallback_resolvers , value ) ;
351359 }
352360
353361 /// <summary>
@@ -356,26 +364,26 @@ public string fallback_resolver
356364 /// </summary>
357365 public bool ignore_system_dns
358366 {
359- get { return _ignore_system_dns ; }
360- set { SetProperty ( ref _ignore_system_dns , value ) ; }
367+ get => _ignore_system_dns ;
368+ set => SetProperty ( ref _ignore_system_dns , value ) ;
361369 }
362370
363371 /// <summary>
364372 /// Maximum log files size in MB.
365373 /// </summary>
366374 public int log_files_max_size
367375 {
368- get { return _log_files_max_size ; }
369- set { SetProperty ( ref _log_files_max_size , value ) ; }
376+ get => _log_files_max_size ;
377+ set => SetProperty ( ref _log_files_max_size , value ) ;
370378 }
371379
372380 /// <summary>
373381 /// Maximum log files age in days.
374382 /// </summary>
375383 public int log_files_max_age
376384 {
377- get { return _log_files_max_age ; }
378- set { SetProperty ( ref _log_files_max_age , value ) ; }
385+ get => _log_files_max_age ;
386+ set => SetProperty ( ref _log_files_max_age , value ) ;
379387 }
380388
381389 /// <summary>
0 commit comments