old_contents: import time
  
  import CloudFlare
  from flask import current_app
  
  
  def cf_api_call():
      cf_key = current_app.config.get('ACME_CLOUDFLARE_KEY', '')
      cf_email = current_app.config.get('ACME_CLOUDFLARE_EMAIL', '')
      return CloudFlare.CloudFlare(email=cf_email, token=cf_key)
  
  
  def find_zone_id(host):
      elements = host.split('.')
      cf = cf_api_call()
  
      n = 1
  
      while n < 5:
          n = n + 1
          domain = '.'.join(elements[-n:])
          current_app.logger.debug("Trying to get ID for zone {0}".format(domain))
  
          try:
              zone = cf.zones.get(params={'name': domain, 'per_page': 1})
          except Exception as e:
              current_app.logger.error("Cloudflare API error: %s" % e)
              pass
  
          if len(zone) == 1:
              break
  
      if len(zone) == 0:
          current_app.logger.error('No zone found')
          return
      else:
          return zone[0]['id']
  
  
  def wait_for_dns_change(change_id, account_number=None):
      cf = cf_api_call()
      zone_id, record_id = change_id
      while True:
          r = cf.zones.get(zone_id, record_id)
          current_app.logger.debug("Record status: %s" % r['status'])
          if r['status'] == 'active':
              break
          time.sleep(1)
      return
  
  
  def create_txt_record(host, value, account_number):
      cf = cf_api_call()
      zone_id = find_zone_id(host)
      if not zone_id:
          return
  
      txt_record = {'name': host, 'type': 'TXT', 'content': value}
  
      current_app.logger.debug("Creating TXT record {0} with value {1}".format(host, value))
  
      try:
          r = cf.zones.dns_records.post(zone_id, data=txt_record)
      except Exception as e:
          current_app.logger.error('/zones.dns_records.post %s: %s' % (txt_record['name'], e))
      return zone_id, r['id']
  
  
  def delete_txt_record(change_id, account_number, host, value):
      cf = cf_api_call()
      zone_id, record_id = change_id
      current_app.logger.debug("Removing record with id {0}".format(record_id))
      try:
          cf.zones.dns_records.delete(zone_id, record_id)
      except Exception as e:
          current_app.logger.error('/zones.dns_records.post: %s' % e)
  
new_contents: import time
  
  import CloudFlare
  from flask import current_app
  
  
  def cf_api_call():
      cf_key = current_app.config.get('ACME_CLOUDFLARE_KEY', '')
      cf_email = current_app.config.get('ACME_CLOUDFLARE_EMAIL', '')
      return CloudFlare.CloudFlare(email=cf_email, token=cf_key)
  
  
  def find_zone_id(host):
      elements = host.split('.')
      cf = cf_api_call()
  
      n = 1
  
      while n < 5:
          n = n + 1
          domain = '.'.join(elements[-n:])
          current_app.logger.debug("Trying to get ID for zone {0}".format(domain))
  
          try:
              zone = cf.zones.get(params={'name': domain, 'per_page': 1})
          except Exception as e:
              current_app.logger.error("Cloudflare API error: %s" % e)
              pass
  
          if len(zone) == 1:
              break
  
      if len(zone) == 0:
          current_app.logger.error('No zone found')
          return
      else:
          return zone[0]['id']
  
  
  def wait_for_dns_change(change_id, account_number=None):
      cf = cf_api_call()
      zone_id, record_id = change_id
      while True:
          r = cf.zones.get(zone_id, record_id)
          current_app.logger.debug("Record status: %s" % r['status'])
          if r['status'] == 'active':
              break
          time.sleep(1)
      return
  
  
  def create_txt_record(host, value, account_number):
      cf = cf_api_call()
      zone_id = find_zone_id(host)
      if not zone_id:
          return
  
      txt_record = {'name': host, 'type': 'TXT', 'content': value}
  
      current_app.logger.debug("Creating TXT record {0} with value {1}".format(host, value))
  
      try:
          r = cf.zones.dns_records.post(zone_id, data=txt_record)
      except Exception as e:
          current_app.logger.error('/zones.dns_records.post %s: %s' % (txt_record['name'], e))
      return zone_id, r['id']
  
  
  def delete_txt_record(change_ids, account_number, host, value):
      cf = cf_api_call()
      for change_id in change_ids:
          zone_id, record_id = change_id
          current_app.logger.debug("Removing record with id {0}".format(record_id))
          try:
              cf.zones.dns_records.delete(zone_id, record_id)
          except Exception as e:
              current_app.logger.error('/zones.dns_records.post: %s' % e)
  
subject: Fix Cloudflare DNS