diff --git a/config.py b/config.py index 1693eeb..81255af 100644 --- a/config.py +++ b/config.py @@ -20,7 +20,3 @@ SECURE_ONLY = True # Tag for advertising, obtainable from @MTProxybot # AD_TAG = "3c09c680b76ee91a4c25ad51f742267d" - -# Use upstream SOCKS5 proxy for connections (f.e. Tor) -# SOCKS5_HOST = "localhost" -# SOCKS5_PORT = 9050 diff --git a/mtprotoproxy.py b/mtprotoproxy.py index c323291..1591dfe 100755 --- a/mtprotoproxy.py +++ b/mtprotoproxy.py @@ -4,7 +4,6 @@ import asyncio import socket import urllib.parse import urllib.request -import socks import collections import time import datetime @@ -121,10 +120,6 @@ def init_config(): # load advanced settings - # use upstream SOCKS5 proxy - conf_dict.setdefault("SOCKS5_HOST", "localhost") - conf_dict.setdefault("SOCKS5_PORT", 0) - # use middle proxy, necessary to show ad conf_dict.setdefault("USE_MIDDLE_PROXY", len(conf_dict["AD_TAG"]) == 16) @@ -155,6 +150,10 @@ def init_config(): # the next host's port to forward bad clients conf_dict.setdefault("MASK_PORT", 443) + # use upstream SOCKS5 proxy + conf_dict.setdefault("SOCKS5_HOST", None) + conf_dict.setdefault("SOCKS5_PORT", None) + # user tcp connection limits, the mapping from name to the integer limit # one client can create many tcp connections, up to 8 conf_dict.setdefault("USER_MAX_TCP_CONNS", {}) @@ -1870,14 +1869,16 @@ async def update_middle_proxy_info(): await asyncio.sleep(config.PROXY_INFO_UPDATE_PERIOD) +def init_socks(): + import socks + socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, config.SOCKS5_HOST, config.SOCKS5_PORT) + socket.socket = socks.socksocket + + def init_ip_info(): global my_ip_info global disable_middle_proxy - if not config.SOCKS5_PORT == 0: - socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, config.SOCKS5_HOST, config.SOCKS5_PORT) - socket.socket = socks.socksocket - def get_ip_from_url(url): TIMEOUT = 5 try: @@ -2039,6 +2040,8 @@ def main(): init_stats() init_proxy_start_time() + init_socks() + if sys.platform == "win32": loop = asyncio.ProactorEventLoop() asyncio.set_event_loop(loop) @@ -2114,6 +2117,8 @@ def main(): if __name__ == "__main__": init_config() + if config.SOCKS5_HOST and config.SOCKS5_PORT: + init_socks() init_ip_info() print_tg_info() main()