def delete_txt_record(args): domain = args[0] delete_fqdn = "{0}.{1}".format('_acme-challenge', domain) if not domain: logger.info(" + http_request() error in letsencrypt.sh?") return api = hover.Hover(storage_path=storage_path) try: result = api.command(["--dns-list", "--filter", delete_fqdn]) except (hover.HoverException, hover.HoverError) as e: logger.error("Error: " + e.message) sys.exit(1) if result is None or result is False or 'domains' not in result: logger.error("Error, expecting hover util output: %s" % repr(result)[:200]) sys.exit(1) if len(result['domains']) < 1: logger.warn("Expected DNS TXT for %s record not found" % delete_fqdn) for dns_rec in result['domains']: if dns_rec[2] == "TXT": result = api.command(["--delete", dns_rec[0]]) else: logger.warn("Unexpected DNS record: %s" % " ".join(dns_rec[1:])) logger.debug(" + deleting TXT record name: {0}".format(delete_fqdn))
def DISABLED_dbg(self): h = hover.Hover() out_dns = h.command(['--dns', '--dbg-raw']) std_output = sys.stdout.getvalue() print(std_output[:50]) out_dns = h.command(['--dns', '--dbg-dump']) std_output = sys.stdout.getvalue() print(std_output[:50])
def test_config_file(self): self.setConfig("detail=true\npurge-cached-data=default\nrefresh=FALSE\nlogout=-") h = hover.Hover() out_dns = h.command(['--dns', '--config', TestHover.test_config_name]) self.assertTrue(u'domains' in out_dns) self.assertGreater(len(out_dns[u'domains']), 0) self.assertGreater(len(out_dns[u'domains'][0]), 4) self.setConfig("does-not-exist=FALSE") out_dns = h.command(['--profile', '--config', TestHover.test_config_name]) self.assertTrue(u'domains' in out_dns)
def test_command_cache(self): h = hover.Hover() out = h.command(['--purge']) self.assertIsNotNone(out) out = h.command(['--cache-all-data']) self.assertIsNotNone(out) out = h.command(['--offline', '--dns-list']) self.assertIsNotNone(out) assert 'domains' in out assert 'headers' in out out = h.command(['--purge']) self.assertIsNotNone(out)
def on_connect(self, controller): print "Leap Connected" # Enable gestures controller.enable_gesture(Leap.Gesture.TYPE_CIRCLE) controller.enable_gesture(Leap.Gesture.TYPE_KEY_TAP) controller.enable_gesture(Leap.Gesture.TYPE_SCREEN_TAP) controller.enable_gesture(Leap.Gesture.TYPE_SWIPE) link_uri = scan.getAvailable() if not link_uri: print "No Crazyflie found in the vicinity. Nothing to do.." return # Don't bother getting here because we have quad to control my_hover = hover.Hover(link_uri, self, config)
def test_command_dns(self): h = hover.Hover() out_domains = h.command(['--domain-list', '--output=native']) assert len(out_domains.keys()) > 0 domain = out_domains.keys()[0] test_fqdn = u"{ts}.test.{domain}".format(ts=TestHover.ts, domain=domain) out_add = h.command(['--add', test_fqdn, 'TXT', TestHover.ts, '--output=native']) self.assertEqual(len(out_add.keys()), 1) new_id = out_add.keys()[0] self.assertEqual(new_id[:3], 'dns') domain_record = out_add[new_id] print(domain_record['fqdn'], file=sys.stdout) self.assertEqual(domain_record["content"], TestHover.ts) new_content = TestHover.ts[::-1] out_update = h.command(['--update', new_id, new_content, '--output=native']) updated_content = out_update[new_id]['content'] self.assertEqual(updated_content, new_content) new_content = TestHover.ts out_set = h.command(['--set', test_fqdn, 'TXT', new_content, '--output=native']) self.assertEqual(new_id, out_set.keys()[0]) updated_content = out_set[new_id]['content'] self.assertEqual(updated_content, new_content) out_delete = h.command(['--delete', new_id, '--output=native']) print(out_delete, file=sys.stdout) self.assertEqual(len(out_delete.keys()), 1) delete_id = out_delete.keys()[0] self.assertEqual(delete_id, new_id) out_dns = h.command(['--dns-list', '--output=native']) assert new_id not in out_dns.keys()
def test_command_errors(self): h = hover.Hover() out_domains = h.command(['--domain-list', '--output=native']) assert len(out_domains.keys()) > 0 domain = out_domains.keys()[0] test_fqdn = u"{ts}.test.{domain}".format(ts=TestHover.ts, domain=domain) out_set = None try: out_set = h.command(['--offline', '--set', test_fqdn, 'TXT', 'TEST', '--output=native']) except hover.HoverError as err: self.assertIsNotNone(err) self.assertIsNone(out_set) try: out_set = h.command(['--offline', '--set', test_fqdn, 'TXT', 'TEST', '--output=native'], throw_errors=False) except hover.HoverError as err: self.fail("No exception should have ben thrown") self.assertEqual(len(out_set), 2) self.assertNotEqual(out_set[0], 0)
def create_txt_record(args): domain, token = args[0], args[2] verify_fqdn = "{0}.{1}".format('_acme-challenge', domain) logger.debug("TXT record created for {0} with {1}".format( verify_fqdn, token)) api = hover.Hover(storage_path=storage_path) try: quoted_token = "' %s'" % token if token[0] == "-" else token api.command(["--add", verify_fqdn, "TXT", quoted_token]) except hover.HoverError as e: logger.error("Error: " + e.message) sys.exit(1) # give it 10 seconds to settle down and avoid nxdomain caching logger.info(" + Settling down for 5s...") time.sleep(5) while not _has_dns_propagated(verify_fqdn, token): logger.info(" + DNS not propagated, waiting 10s...") time.sleep(10)
def test_storage(self): h = hover.Hover() out_dns = h.command(['--dns', '--storage-path', TestHover.test_storage_dir]) self.assertGreater(len([name for name in os.listdir(TestHover.test_storage_dir) if os.path.isfile(os.path.join(TestHover.test_storage_dir,name))]), 0)
def test_main(self): h = hover.Hover() h.main([]) std_output = sys.stdout.getvalue() self.assertIsNotNone(std_output) assert "Domain Name" in std_output