Пример #1
0
        /// <summary>
        /// Delete zone Detail asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> DeleteAsync(string uuid)
        {
            ApiResponse resp = await _client.DeleteAsync(uuid);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #2
0
        /// <summary>
        /// Create zone Snapshot asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="content">Http request body content</param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> CreateSnapshotAsync(string uuid)
        {
            ApiResponse resp = await _client.CreateSnapshotAsync(uuid);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #3
0
        /// <summary>
        /// Update zone Detail asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="zone">the zone data </param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> UpdateDetailAsync(string uuid, ZoneDto zone)
        {
            ApiResponse resp = await _client.UpdateDetailAsync(uuid, zone);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #4
0
        /// <summary>
        /// Delete Named zone Records asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="name">Name of Records</param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> DeleteNamedRecordsAsync(string uuid, string name)
        {
            ApiResponse resp = await _client.DeleteNamedRecordsAsync(uuid, name);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #5
0
        /// <summary>
        /// Update one zone Records in parameter asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="name">Name of Records</param>
        /// <param name="type">Type of Records</param>
        /// <param name="record">records data</param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> UpdateOneRecordsAsync(string uuid, string name, string type, RecordDto record)
        {
            ApiResponse resp = await _client.UpdateOneRecordsAsync(uuid, name, type, record);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #6
0
        /// <summary>
        /// Update zone Records with name in parameter asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="name">Name of Records</param>
        /// <param name="records">All records data </param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> UpdateNamedRecordsAsync(string uuid, string name, List <RecordDto> records)
        {
            ApiResponse resp = await _client.UpdateNamedRecordsAsync(uuid, name, records);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #7
0
        /// <summary>
        /// Create zone Records asynchronously
        /// </summary>
        /// <param name="uuid">The uuid of the zone</param>
        /// <param name="record">the record data </param>
        /// <returns>an error code and the json response</returns>
        public async Task <ZoneUpdateResponse> CreateRecordsAsync(string uuid, RecordDto record)
        {
            ApiResponse resp = await _client.CreateRecordsAsync(uuid, record);

            ZoneUpdateResponse retour = new ZoneUpdateResponse();

            retour.Load(resp);
            return(retour);
        }
Пример #8
0
        /// <summary>
        /// Function to update a domain in Gandi
        /// </summary>
        /// <param name="domain">domain name</param>
        /// <param name="apikey">The Gandi api key</param>
        /// <returns>a message in case of error</returns>
        public static string UpdateDomainGandi(string domain, string apikey)
        {
            //Read ip
            //https://api.ipify.org?format=json
            //https://api.myip.com
            //https://ip.seeip.org/jsonip?
            // brute
            //http://ipv4bot.whatismyipaddress.com/
            string ip = GetIPJson("https://api.ipify.org?format=json");

            if (string.IsNullOrEmpty(ip))
            {
                ip = GetIPJson("https://api.myip.com");
            }
            if (string.IsNullOrEmpty(ip))
            {
                ip = GetIPJson("https://ip.seeip.org/jsonip?");
            }
            if (string.IsNullOrEmpty(ip))
            {
                ip = GetIP("http://ipv4bot.whatismyipaddress.com/");
            }

            using (ManagerZone GandiZone = new ManagerZone("https://dns.api.gandi.net/api/v5/", apikey))
                using (ManagerDomain GandiDomain = new ManagerDomain("https://dns.api.gandi.net/api/v5/", apikey))
                {
                    DomainDetailResponse rep = GandiDomain.GetDetail(domain);
                    if (rep.ErrorMessage != null)
                    {
                        return("Error occurs on getting domain :" + domain + " \r\nError:" + rep.ErrorMessage.GetMessage());
                    }

                    RecordListResponse rec = GandiZone.GetAllRecords(rep.Data.Domain.ZoneUuid);
                    if (rec.ErrorMessage != null)
                    {
                        return("Error occurs on getting Record of zone :" + rep.Data.Domain.ZoneUuid + " \r\nError:" + rec.ErrorMessage.GetMessage());
                    }

                    //find record and modify it if different
                    foreach (RecordDto r in rec.Data.Records)
                    {
                        if (r.RrsetName == "@" && r.RrsetType == "A")
                        {
                            string before = string.Empty;
                            foreach (string s in r.RrsetValues)
                            {
                                before += s + " ";
                                if (s == ip)
                                {
                                    return(string.Empty);
                                }
                            }

                            r.RrsetValues = new List <string>()
                            {
                                ip
                            };
                            ZoneUpdateResponse zu = GandiZone.UpdateOneRecords(rep.Data.Domain.ZoneUuid, "@", "A", r);
                            if (rec.ErrorMessage != null)
                            {
                                return("Error occurs on update Record @ A with ip :" + ip + " of zone :" + rep.Data.Domain.ZoneUuid + " \r\nError:" + rec.ErrorMessage.GetMessage());
                            }
                        }
                    }
                }

            return(string.Empty);
        }