Exemplo n.º 1
0
 public static T TryGetValue <T>(this Nett.TomlTable table, string key, T @default)
 {
     if (table.TryGetValue(key, out var obj))
     {
         return(obj.Get <T>());
     }
     else
     {
         return(@default);
     }
 }
Exemplo n.º 2
0
 public static bool TryGetValue <T>(this Nett.TomlTable table, string key, out T value)
 {
     if (table.TryGetValue(key, out var obj))
     {
         value = obj.Get <T>();
         return(true);
     }
     else
     {
         value = default(T);
         return(false);
     }
 }
Exemplo n.º 3
0
        public static bool Patch()
        {
            var version = VersionHelper.PublishVersion;

            if (!DnscryptProxyConfigurationManager.LoadConfiguration())
            {
                return(false);
            }
            if (version.Equals("0.6.5"))
            {
                //added: netprobe_address = '255.255.255.0:53'
                //changed: netprobe_timeout = 0
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.netprobe_address = "255.255.255.0:53";
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.netprobe_timeout = 0;
                return(DnscryptProxyConfigurationManager.SaveConfiguration());
            }
            if (version.Equals("0.6.6"))
            {
                //changed: netprobe_address = '9.9.9.9:53'
                //changed: netprobe_timeout = 60
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.netprobe_address = "9.9.9.9:53";
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.netprobe_timeout = 60;
                return(DnscryptProxyConfigurationManager.SaveConfiguration());
            }
            if (version.Equals("0.6.8") || version.Equals("0.6.9") || version.Equals("0.7.0"))
            {
                //changed: timeout = 5000
                //added: reject_ttl = 600
                //changed: cache_size = 1024
                //changed: cache_min_ttl = 2400
                //added: cache_neg_min_ttl = 60
                //added: cache_neg_max_ttl = 600
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.timeout           = 5000;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.reject_ttl        = 600;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.cache_size        = 1024;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.cache_min_ttl     = 2400;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.cache_neg_min_ttl = 60;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.cache_neg_max_ttl = 600;
                var sources = DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.sources;
                if (!sources.ContainsKey("relays"))
                {
                    sources.Add("relays", new Source
                    {
                        urls          = new[] { "https://github.com/DNSCrypt/dnscrypt-resolvers/raw/master/v2/relays.md", "https://download.dnscrypt.info/resolvers-list/v2/relays.md" },
                        cache_file    = "relays.md",
                        minisign_key  = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3",
                        refresh_delay = 72,
                        prefix        = ""
                    });
                    DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.sources = sources;
                }
                return(DnscryptProxyConfigurationManager.SaveConfiguration());
            }
            if (version.Equals("0.7.1"))
            {
                //changed: ignore_system_dns = true
                //changed: block_unqualified = true
                //changed: block_undelegated = true
                //added: broken_implementations
                //added: fallback_resolvers (instead of fallback_resolver)
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.ignore_system_dns  = true;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.block_unqualified  = true;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.block_undelegated  = true;
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.fallback_resolvers = new ObservableCollection <string>(Global.DefaultFallbackResolvers);
                var sources = DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.sources;
                if (!sources.ContainsKey("relays"))
                {
                    sources.Add("relays", new Source
                    {
                        urls          = new[] { "https://github.com/DNSCrypt/dnscrypt-resolvers/raw/master/v2/relays.md", "https://download.dnscrypt.info/resolvers-list/v2/relays.md" },
                        cache_file    = "relays.md",
                        minisign_key  = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3",
                        refresh_delay = 72,
                        prefix        = ""
                    });
                    DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.sources = sources;
                }

                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration.broken_implementations =
                    new BrokenImplementations
                {
                    //broken_query_padding = new List<string> { "cisco", "cisco-ipv6", "cisco-familyshield" },
                    fragments_blocked = new List <string> {
                        "cisco", "cisco-ipv6", "cisco-familyshield",
                        "cisco-familyshield-ipv6", "quad9-dnscrypt-ip4-filter-alt", "quad9-dnscrypt-ip4-filter-pri",
                        "quad9-dnscrypt-ip4-nofilter-alt", "quad9-dnscrypt-ip4-nofilter-pri", "quad9-dnscrypt-ip6-filter-alt",
                        "quad9-dnscrypt-ip6-filter-pri", "quad9-dnscrypt-ip6-nofilter-alt", "quad9-dnscrypt-ip6-nofilter-pri",
                        "cleanbrowsing-adult", "cleanbrowsing-family-ipv6", "cleanbrowsing-family", "cleanbrowsing-security"
                    }
                };
                return(DnscryptProxyConfigurationManager.SaveConfiguration());
            }
            if (version.Equals("0.7.2"))
            {
                //removed: daemonize
                var configFile = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), Global.DnsCryptProxyFolder, Global.DnsCryptConfigurationFile);
                if (!System.IO.File.Exists(configFile))
                {
                    return(false);
                }
                var settings = Nett.TomlSettings.Create(s => s.ConfigurePropertyMapping(m => m.UseTargetPropertySelector(standardSelectors => standardSelectors.IgnoreCase)));

                Nett.TomlTable toml = Nett.Toml.ReadFile(configFile);
                toml.Remove("daemonize");
                DnscryptProxyConfigurationManager.DnscryptProxyConfiguration = Nett.Toml.ReadString <DnscryptProxyConfiguration>(toml.ToString(), settings);

                return(DnscryptProxyConfigurationManager.SaveConfiguration());
            }

            return(false);
        }