From c2763c4be8c219c74a55ea5cea16b9340c15dc0f Mon Sep 17 00:00:00 2001 From: PyroPeter Date: Sun, 10 Oct 2010 19:23:51 +0200 Subject: [PATCH 3/5] Add mirrorresolv manage.py command Signed-off-by: PyroPeter --- mirrors/management/commands/mirrorresolv.py | 47 +++++++++++++++++++++++++++ 1 files changed, 47 insertions(+), 0 deletions(-) create mode 100644 mirrors/management/commands/mirrorresolv.py diff --git a/mirrors/management/commands/mirrorresolv.py b/mirrors/management/commands/mirrorresolv.py new file mode 100644 index 0000000..a11b90a --- /dev/null +++ b/mirrors/management/commands/mirrorresolv.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +""" +mirrorresolv command + +Usage: ./manage.py mirrorresolv +""" + +from django.core.management.base import NoArgsCommand +from mirrors.models import MirrorUrl + +import sys +import logging +from urlparse import urlparse +import socket + +logging.basicConfig( + level=logging.WARNING, + format='%(asctime)s -> %(levelname)s: %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + stream=sys.stderr) +logger = logging.getLogger() + +class Command(NoArgsCommand): + help = "Runs a check on all active mirror URLs to determine if they are reachable via IPv4 and/or v6." + + def handle_noargs(self, **options): + v = int(options.get('verbosity', 0)) + if v == 0: + logger.level = logging.ERROR + elif v == 1: + logger.level = logging.WARNING + elif v == 2: + logger.level = logging.DEBUG + + logger.debug("requesting list of mirror URLs") + for mirrorurl in MirrorUrl.objects.filter(mirror__active=True): + logger.info("resolving %3i (%s)"%( + mirrorurl.id, mirrorurl.url[:35])) + families = [x[0] for x in socket.getaddrinfo( + urlparse(mirrorurl.url).hostname, None)] + logger.debug("success") + mirrorurl.has_ipv4 = socket.AF_INET in families + mirrorurl.has_ipv6 = socket.AF_INET6 in families + logger.debug("saving to database") + mirrorurl.save() + +# vim: set ts=4 sw=4 et: -- 1.7.3.1