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); }
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); }