Beispiel #1
0
# 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
Beispiel #2
0
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):
Beispiel #3
0
    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
Beispiel #4
0
# 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