# coding:utf-8 import sys _ver = sys.version_info PY3 = _ver[0] == 3 #PY35 = PY3 and _ver[1] == 5 if not PY3: from local import clogging as logging logging.error('请使用 Python 3 系列版本运行本程序!\n正在退出……') sys.exit(-1) import queue as Queue import _thread as thread import http.server as BaseHTTPServer import http.client as httplib import urllib.request as urllib2 import urllib.parse as urlparse import socketserver as SocketServer from configparser import RawConfigParser, ConfigParser #去掉 lower 以支持选项名称大小写共存 RawConfigParser.optionxform = lambda s, opt: opt #默认编码 _read = ConfigParser.read ConfigParser.read = lambda s, f, encoding='utf8': _read(s, f, encoding) #可添加属性 import socket class socketMod(socket.socket): pass socket.socket = socketMod
packages = os.path.join(py_dir, 'site-packages') #自带 py 已经添加 if os.path.dirname(sys.executable) != py_dir: #优先导入当前运行 py 已安装模块 sys.path.append(packages) sys.path += glob.glob('%s/*.egg' % packages) from local import clogging as logging from time import time from local.compat import thread try: import OpenSSL except ImportError: logging.error( u'无法找到 pyopenssl,请安装 pyopenssl-16.0.0 以上版本,或将相应 .egg 放到 %r 文件夹!', packages) sys.exit(-1) import ssl import socket NetWorkIOError = (socket.error, ssl.SSLError, OSError) if not OpenSSL else (socket.error, ssl.SSLError, OpenSSL.SSL.Error, OSError) import threading import collections class LRUCache(object): """Modified from http://pypi.python.org/pypi/lru/""" def __init__(self, max_items, expire=None):
logging.warning('无法找到 gevent 或者与 Python 版本不匹配,请安装 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) try: import dnslib except ImportError: logging.error(u'无法找到 dnslib,请安装 dnslib-0.8.3 以上版本,或将相应 .egg 放到 %r 文件夹!', packages) sys.exit(-1) _ver = sys.version_info PY3 = _ver[0] == 3 #PY35 = PY3 and _ver[1] == 5 if not PY3: logging.error('请使用 Python 3 系列版本运行本程序!\n正在退出……') sys.exit(-1) import queue as Queue import _thread as thread import http.server as BaseHTTPServer import http.client as httplib import urllib.request as urllib2 import urllib.parse as urlparse
# coding:utf-8 from local import clogging as logging try: import dnslib except ImportError: import sys from . import packages logging.error(u'无法找到 dnslib,请安装 dnslib-0.8.3 以上版本,或将相应 .egg 放到 %r 文件夹!', packages) sys.exit(-1) import socket from select import select from time import time from local.compat import xrange, exc_clear from . import LRUCache, isip, isipv4, isipv6 from local.GlobalConfig import GC dns = LRUCache(128, 4 * 60 * 60) def set_DNS(host, iporname): iporname = iporname or () if host in dns: if isinstance(iporname, str) and iporname in GC.IPLIST_MAP: return iporname else: return host if isinstance(iporname, list): dns[host] = iporname