Exemple #1
0
        private static async Task <int> AuthHookAsync(IConfiguration config)
        {
            string targetDomainName = config["CERTBOT_DOMAIN"];
            string validationString = config["CERTBOT_VALIDATION"];

            HttpClient client = new HttpClient();

            BytemarkDNSClient _dns = new BytemarkDNSClient(client, config["Auth:Username"], config["Auth:Password"]);

            Result <IEnumerable <Domain> > domains = await _dns.ListDomainsAsync();

            if (!domains.IsSuccess)
            {
                // TODO: Proper logging
                Console.WriteLine("Couldn't get list of domains: {0}", domains.Error);
                return(1);
            }

            Domain target = domains.Payload.FirstOrDefault(d => d.Name == targetDomainName);

            if (target == null)
            {
                // TODO: Proper logging
                Console.WriteLine("Can't find target domain {0}", targetDomainName);
            }

            Result <Record> result = await _dns.CreateRecordAsync(new Record()
            {
                DomainID = target.ID,
                Name     = ACME_Challenge + target.Name,
                TTL      = 30,
                Content  = validationString,
                Type     = RecordType.TXT,
            });

            if (!result.IsSuccess)
            {
                //TODO: Proper logging
                Console.WriteLine("Couldn't create challenge record for {1}: {0}", result.Error, target.Name);
                return(1);
            }

            Console.WriteLine("Added challenge record for {0}", target.Name);

            // Success!
            return(0);
        }
Exemple #2
0
        private static async Task <int> Cleanup(IConfiguration config)
        {
            string targetDomainName = config["CERTBOT_DOMAIN"];

            HttpClient client = new HttpClient();

            BytemarkDNSClient _dns = new BytemarkDNSClient(client, config["Auth:Username"], config["Auth:Password"]);

            Result <IEnumerable <Domain> > domains = await _dns.ListDomainsAsync(Overview : true);

            if (!domains.IsSuccess)
            {
                // TODO: Proper logging
                Console.WriteLine("Couldn't get list of domains: {0}", domains.Error);
                return(1);
            }

            Domain target = domains.Payload.FirstOrDefault(d => d.Name == targetDomainName);

            if (target == null)
            {
                // TODO: Proper logging
                Console.WriteLine("Can't find target domain {0}", targetDomainName);
            }

            foreach (Record r in target.Records)
            {
                if (r.Name.StartsWith(ACME_Challenge))
                {
                    Console.WriteLine("Deleting challenge record {0}", r.Name);
                    Result <string> deleteResult = await _dns.DeleteRecordAsync(r.ID);

                    if (!deleteResult.IsSuccess)
                    {
                        // TODO: Proper logging
                        Console.WriteLine("Couldn't delete challenge record: {0}", deleteResult.Error);
                        return(1);
                    }
                }
            }

            // Success
            return(0);
        }