Exemplo n.º 1
0
def stop_GotoX():
    if GotoX_app is None:
        logging.warning('GotoX 进程还未开始。')
    else:
        retcode = GotoX_app.poll()
        if retcode is None:
            GotoX_app.terminate()
        else:
            logging.warning('GotoX 进程已经结束,code:%s。', retcode)
Exemplo n.º 2
0
def dns_remote_resolve(qname, dnsservers, blacklist, timeout):
    """
    http://gfwrev.blogspot.com/2009/11/gfwdns.html
    http://zh.wikipedia.org/wiki/域名服务器缓存污染
    http://support.microsoft.com/kb/241352
    """
    query = dnslib.DNSRecord(q=dnslib.DNSQuestion(qname))
    query_data = query.pack()
    dns_v4_servers = [x for x in dnsservers if isipv4(x)]
    dns_v6_servers = [x for x in dnsservers if isipv6(x)]
    sock_v4 = sock_v6 = None
    socks = []
    if dns_v4_servers:
        sock_v4 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        socks.append(sock_v4)
    if dns_v6_servers:
        sock_v6 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        socks.append(sock_v6)
    timeout_at = time() + timeout
    try:
        for _ in xrange(2):
            try:
                for dnsserver in dns_v4_servers:
                    sock_v4.sendto(query_data, (dnsserver, 53))
                for dnsserver in dns_v6_servers:
                    sock_v6.sendto(query_data, (dnsserver, 53))
                while time() < timeout_at:
                    ins, _, _ = select(socks, [], [], 0.1)
                    for sock in ins:
                        reply_data, _ = sock.recvfrom(512)
                        reply = dnslib.DNSRecord.parse(reply_data)
                        iplist = [
                            str(x.rdata) for x in reply.rr if x.rtype == 1
                        ]
                        if any(x in blacklist for x in iplist):
                            logging.warning(
                                'query qname=%r reply bad iplist=%r', qname,
                                iplist)
                        else:
                            logging.debug('query qname=%r reply iplist=%s',
                                          qname, iplist)
                            return iplist
            except socket.error as e:
                logging.warning('handle dns query=%s socket: %r', query, e)
    finally:
        for sock in socks:
            sock.close()
Exemplo n.º 3
0
if os.path.dirname(sys.executable) != py_dir:
    import glob
    #优先导入当前运行 py 已安装模块
    sys.path.append(packages)
    sys.path.extend(glob.glob('%s/*.egg' % packages))

try:
    import gevent
    import gevent.monkey
    gevent.monkey.patch_all(os=False,
                            signal=False,
                            subprocess=False,
                            Event=True)
except ImportError:
    logging.warning(
        '无法找到 gevent,请安装 gevent-1.0.0 以上版本,或将相应 .egg 放到 %r 文件夹!\n正在退出……',
        packages)
    sys.exit(-1)
except TypeError:
    gevent.monkey.patch_all(os=False)
    logging.warning('警告:请更新 gevent 至 1.0.0 以上版本!')

try:
    import OpenSSL
except ImportError:
    logging.exception(
        '无法找到 pyOpenSSL,请安装 pyOpenSSL-16.0.0 以上版本,或将相应 .egg 放到 %r 文件夹!\n正在退出……',
        packages)
    sys.exit(-1)

from local.compat import thread
Exemplo n.º 4
0
    import gevent
    import gevent.monkey
    gevent.monkey.patch_all(os=False,
                            signal=False,
                            subprocess=False,
                            Event=True)
except ImportError:
    wait_exit(
        '无法找到 gevent 或者与 Python 版本不匹配,请安装 gevent-1.0.0 '
        '以上版本,或将相应 .egg 放到 %r 文件夹!',
        packages,
        exc_info=True)
except TypeError:
    gevent.monkey.patch_all(os=False)
    from local import clogging as logging
    logging.warning('警告:请更新 gevent 至 1.0.0 以上版本!')

from local import clogging as logging

logging.replace_logging()
logging.addLevelName(15, 'TEST', logging.COLORS.GREEN)

try:
    import OpenSSL
except ImportError:
    wait_exit(
        '无法找到 pyOpenSSL,请安装 pyOpenSSL-16.0.0 以上版本,'
        '或将相应 .egg 放到 %r 文件夹!',
        packages,
        exc_info=True)