403Webshell
Server IP : 61.19.30.66  /  Your IP : 216.73.216.15
Web Server : Apache/2.2.22 (Ubuntu)
System : Linux klw 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64
User : www-data ( 33)
PHP Version : 5.3.10-1ubuntu3.48
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : ON  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/share/pyshared/landscape/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/pyshared/landscape/lib/dns.py
"""DNS lookups for server autodiscovery."""

import logging
from twisted.names import dns
from twisted.names.client import Resolver


def discover_server(autodiscover_srv_query_string="",
                    autodiscover_a_query_string="", resolver=None):
    """
    Look up the dns location of the landscape server.

    @param autodiscover_srv_query_string: The query string to send to the DNS
        server when making a SRV query.
    @param autodiscover_a_query_string: The query string to send to the DNS
        server when making a A query.
    @type resolver: The resolver to use.  If none is specified a resolver that
        uses settings from /etc/resolv.conf will be created. (Testing only)
    """
    if not resolver:
        resolver = Resolver("/etc/resolv.conf")
    d = _lookup_server_record(resolver, autodiscover_srv_query_string)
    d.addErrback(_lookup_hostname, resolver, autodiscover_a_query_string)
    return d


def _lookup_server_record(resolver, service_name):
    """
    Do a DNS SRV record lookup for the location of the landscape server.

    @type resolver: A resolver to use for DNS lookups
        L{twisted.names.client.Resolver}.
    @param service_name: The query string to send to the DNS server when
        making a SRV query.
    @return: A deferred containing either the hostname of the landscape server
        if found or an empty string if not found.
    """
    def lookup_done(result):
        name = ""
        for item in result:
            for row in item:
                if row.type == dns.SRV:
                    name = row.payload.target.name
                    break
        return name

    def lookup_failed(result):
        logging.info("SRV lookup of %s failed." % service_name)
        return result

    d = resolver.lookupService(service_name)
    d.addCallback(lookup_done)
    d.addErrback(lookup_failed)
    return d


def _lookup_hostname(result, resolver, hostname):
    """
    Do a DNS name lookup for the location of the landscape server.

    @param result: The result from a call to lookup_server_record.
    @param resolver: The resolver to use for DNS lookups.
    @param hostname: The query string to send to the DNS server when making
        a A query.
    @param return: A deferred containing the ip address of the landscape
        server if found or None if not found.
    """
    def lookup_done(result):
        return result

    def lookup_failed(result):
        logging.info("Name lookup of %s failed." % hostname)
        return result

    d = resolver.getHostByName(hostname)
    d.addCallback(lookup_done)
    d.addErrback(lookup_failed)
    return d

Youez - 2016 - github.com/yon3zu
LinuXploit