예제 #1
0
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))
예제 #2
0
    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])
예제 #3
0
    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)
예제 #4
0
    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)
예제 #6
0
    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()
예제 #7
0
    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)
예제 #8
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)
예제 #9
0
 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)
예제 #10
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