using System;
namespace FastGithub.Scanner
{
    /// 
    /// github选项
    /// 
    [Options("Github")]
    sealed class GithubOptions
    {
        /// 
        /// 扫描配置
        /// 
        public ScanSetting Scan { get; set; } = new ScanSetting();
        /// 
        /// 域名与ip关系提供者配置
        /// 
        public DomainAddressProvidersSetting DominAddressProviders { get; set; } = new DomainAddressProvidersSetting();
        /// 
        /// 扫描配置
        /// 
        public class ScanSetting
        {
            public TimeSpan FullScanInterval = TimeSpan.FromHours(2d);
            public TimeSpan ResultScanInterval = TimeSpan.FromMinutes(1d);
            public TimeSpan TcpScanTimeout { get; set; } = TimeSpan.FromSeconds(1d);
            public TimeSpan HttpsScanTimeout { get; set; } = TimeSpan.FromSeconds(5d);
        }
        /// 
        /// 域名与ip关系提供者配置
        /// 
        public class DomainAddressProvidersSetting
        {
            public GithubMetaProviderSetting GithubMetaProvider { get; set; } = new GithubMetaProviderSetting();
            public IPAddressComProviderSetting IPAddressComProvider { get; set; } = new IPAddressComProviderSetting();
            public PublicDnsProviderSetting PublicDnsProvider { get; set; } = new PublicDnsProviderSetting();
            public class GithubMetaProviderSetting
            {
                public bool Enable { get; set; } = true;
                public Uri MetaUri { get; set; } = new Uri("https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json");
            }
            public class IPAddressComProviderSetting
            {
                public bool Enable { get; set; } = true;
                public string[] Domains { get; set; } = Array.Empty();
            }
            public class PublicDnsProviderSetting
            {
                public bool Enable { get; set; } = true;
                public string[] Dnss { get; set; } = Array.Empty();
                public string[] Domains { get; set; } = Array.Empty();
            }
        }
    }
}