コード例 #1
1
ファイル: PointProvider.cs プロジェクト: rickparrish/PDDNS
        public override void Update(HostConfig HC, IPAddress ipAddress)
        {
            if (HC == null) throw new ArgumentNullException("HC");
            if (ipAddress == null) throw new ArgumentNullException("ipAddress");

            using (RMWebClient WC = new RMWebClient())
            {
                WC.ContentType = "application/xml";
                WC.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(HC.Username + ":" + HC.Password.GetPlainText()));
                WC.Headers["Accept"] = "application/xml";
                WC.UseDefaultCredentials = false;

                try
                {
                    string Url = "https://pointhq.com";
                    Url += "/zones/" + HC.ProviderSpecificSettings[HostConfig.POINT_ZONE_ID];
                    Url += "/records/" + HC.ProviderSpecificSettings[HostConfig.POINT_RECORD_ID];

                    string ResponseText = WC.UploadString(Url, "PUT", "<zone-record><data>" + ipAddress.ToString() + "</data><ttl type=\"integer\">60</ttl></zone-record>").Trim();
                    if (!ResponseText.Contains(ipAddress.ToString()))
                    {
                        HC.Disabled = true;
                        HC.DisabledReason = "Reason not known.";
                        HC.Save();

                        Logging.instance.LogError("Unable to update host \"" + HC.Hostname + "\" (" + HC.Provider.ToString() + "): " + HC.DisabledReason);
                    }
                }
                catch (WebException wex)
                {
                    HC.Disabled = true;
                    switch (((HttpWebResponse)wex.Response).StatusCode)
                    {
                        case HttpStatusCode.Forbidden: HC.DisabledReason = "Current user does not have access to requested resource."; break;
                        case HttpStatusCode.NotFound: HC.DisabledReason = "Record not found."; break;
                        default: HC.DisabledReason = "An unknown response code was received: \"" + ((HttpWebResponse)wex.Response).StatusCode + "\""; break;
                    }
                    HC.Save();

                    Logging.instance.LogError("Unable to update host \"" + HC.Hostname + "\" (" + HC.Provider.ToString() + "): " + HC.DisabledReason);
                }
                catch (Exception ex)
                {
                    HC.Disabled = true;
                    HC.DisabledReason = "Unhandled exception (" + ex.Message + ")";
                    HC.Save();

                    Logging.instance.LogException("Unable to update host \"" + HC.Hostname + "\"", ex);
                }
            }
        }