public string CheckAuth(string zoneId, string authEmail, string authKey)
        {
            string errorMessage = "";
            string ip           = "xxx.xxx.xxx.xxx";

            //?page={1}&per_page={2}&notes=my note
            string url = "https://api.cloudflare.com/client/v4/zones/{0}/firewall/access_rules/rules?page=1&per_page=500&configuration.value={1}";

            url = string.Format(url, zoneId, ip);
            //解密
            var    authKeyDecrypt = Utils.AesDecrypt(authKey);
            string content        = HttpGet(authEmail, authKeyDecrypt, url);
            FirewallAccessRuleResponseList firewallAccessRuleResponseList = JsonConvert.DeserializeObject <FirewallAccessRuleResponseList>(content);

            if (firewallAccessRuleResponseList.success)
            {
            }
            else
            {
                if (firewallAccessRuleResponseList.errors.Any(a => a.message.Contains("Authentication error")))
                {
                    errorMessage = firewallAccessRuleResponseList.errors.FirstOrDefault()?.message;
                }
            }

            return(errorMessage);
        }
        public List <FirewallAccessRule> GetAccessRuleList(string zoneId, string authEmail, string authKey, string ip, string notes)
        {
            List <FirewallAccessRule> firewallAccessRules = new List <FirewallAccessRule>();
            int page = 1;

            while (true)
            {
                //?page={1}&per_page={2}&notes=my note
                string url = "https://api.cloudflare.com/client/v4/zones/{0}/firewall/access_rules/rules?page={1}&per_page=500&configuration.value={2}";
                url = string.Format(url, zoneId, page, ip);
                if (!string.IsNullOrEmpty(notes))
                {
                    url = "https://api.cloudflare.com/client/v4/zones/{0}/firewall/access_rules/rules?page={1}&per_page=500&notes={2}";
                    url = string.Format(url, zoneId, page, notes);
                }
                //解密
                var    authKeyDecrypt = Utils.AesDecrypt(authKey);
                string content        = HttpGet(authEmail, authKeyDecrypt, url, 1200);
                FirewallAccessRuleResponseList firewallAccessRuleResponseList = JsonConvert.DeserializeObject <FirewallAccessRuleResponseList>(content);
                if (firewallAccessRuleResponseList.success)
                {
                    foreach (CreateResult result in firewallAccessRuleResponseList.result)
                    {
                        firewallAccessRules.Add(new FirewallAccessRule
                        {
                            id    = result.id,
                            notes = result.notes,
                            mode  = result.mode,
                            configurationTarget = result.configuration.target,
                            configurationValue  = result.configuration.value,
                            createTime          = result.created_on,
                            modifiedTime        = result.modified_on,
                            scopeId             = result.scope.id,
                            scopeEmail          = result.scope.email,
                            scopeType           = result.scope.type,
                        });
                    }

                    if (firewallAccessRuleResponseList.result_info.page >= firewallAccessRuleResponseList.result_info.total_pages)
                    {
                        break;
                    }
                    else
                    {
                        page++;
                    }
                }
                else
                {
                    break;
                }
            }
            return(firewallAccessRules);
        }