mirror of
https://github.com/alexbers/mtprotoproxy.git
synced 2026-03-14 07:13:09 +00:00
use global var to enable direct connect
This commit is contained in:
@@ -73,6 +73,7 @@ MAX_MSG_LEN = 2 ** 24
|
|||||||
|
|
||||||
my_ip_info = {"ipv4": None, "ipv6": None}
|
my_ip_info = {"ipv4": None, "ipv6": None}
|
||||||
used_handshakes = collections.OrderedDict()
|
used_handshakes = collections.OrderedDict()
|
||||||
|
disable_middle_proxy = False
|
||||||
|
|
||||||
config = {}
|
config = {}
|
||||||
|
|
||||||
@@ -1011,7 +1012,9 @@ async def handle_client(reader_clt, writer_clt):
|
|||||||
|
|
||||||
update_stats(user, connects=1)
|
update_stats(user, connects=1)
|
||||||
|
|
||||||
if not config.USE_MIDDLE_PROXY:
|
connect_directly = (not config.USE_MIDDLE_PROXY or disable_middle_proxy)
|
||||||
|
|
||||||
|
if connect_directly:
|
||||||
if config.FAST_MODE:
|
if config.FAST_MODE:
|
||||||
tg_data = await do_direct_handshake(proto_tag, dc_idx, dec_key_and_iv=enc_key_and_iv)
|
tg_data = await do_direct_handshake(proto_tag, dc_idx, dec_key_and_iv=enc_key_and_iv)
|
||||||
else:
|
else:
|
||||||
@@ -1024,7 +1027,7 @@ async def handle_client(reader_clt, writer_clt):
|
|||||||
|
|
||||||
reader_tg, writer_tg = tg_data
|
reader_tg, writer_tg = tg_data
|
||||||
|
|
||||||
if not config.USE_MIDDLE_PROXY and config.FAST_MODE:
|
if connect_directly and config.FAST_MODE:
|
||||||
class FakeEncryptor:
|
class FakeEncryptor:
|
||||||
def encrypt(self, data):
|
def encrypt(self, data):
|
||||||
return data
|
return data
|
||||||
@@ -1036,7 +1039,7 @@ async def handle_client(reader_clt, writer_clt):
|
|||||||
reader_tg.decryptor = FakeDecryptor()
|
reader_tg.decryptor = FakeDecryptor()
|
||||||
writer_clt.encryptor = FakeEncryptor()
|
writer_clt.encryptor = FakeEncryptor()
|
||||||
|
|
||||||
if config.USE_MIDDLE_PROXY:
|
if not connect_directly:
|
||||||
if proto_tag == PROTO_TAG_ABRIDGED:
|
if proto_tag == PROTO_TAG_ABRIDGED:
|
||||||
reader_clt = MTProtoCompactFrameStreamReader(reader_clt)
|
reader_clt = MTProtoCompactFrameStreamReader(reader_clt)
|
||||||
writer_clt = MTProtoCompactFrameStreamWriter(writer_clt)
|
writer_clt = MTProtoCompactFrameStreamWriter(writer_clt)
|
||||||
@@ -1155,6 +1158,8 @@ async def get_srv_time():
|
|||||||
TIME_SYNC_ADDR = "https://core.telegram.org/getProxySecret"
|
TIME_SYNC_ADDR = "https://core.telegram.org/getProxySecret"
|
||||||
MAX_TIME_SKEW = 30
|
MAX_TIME_SKEW = 30
|
||||||
|
|
||||||
|
global disable_middle_proxy
|
||||||
|
|
||||||
want_to_reenable_advertising = False
|
want_to_reenable_advertising = False
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
@@ -1166,19 +1171,18 @@ async def get_srv_time():
|
|||||||
line = line[len("Date: "):].decode()
|
line = line[len("Date: "):].decode()
|
||||||
srv_time = datetime.datetime.strptime(line, "%a, %d %b %Y %H:%M:%S %Z")
|
srv_time = datetime.datetime.strptime(line, "%a, %d %b %Y %H:%M:%S %Z")
|
||||||
now_time = datetime.datetime.utcnow()
|
now_time = datetime.datetime.utcnow()
|
||||||
time_diff = (now_time-srv_time).total_seconds()
|
time_skew = (now_time-srv_time).total_seconds() > MAX_TIME_SKEW
|
||||||
if config.USE_MIDDLE_PROXY and abs(time_diff) > MAX_TIME_SKEW:
|
if time_skew and config.USE_MIDDLE_PROXY and not disable_middle_proxy:
|
||||||
print_err("Time skew detected, please set the clock")
|
print_err("Time skew detected, please set the clock")
|
||||||
print_err("Server time:", srv_time, "your time:", now_time)
|
print_err("Server time:", srv_time, "your time:", now_time)
|
||||||
print_err("Disabling advertising to continue serving")
|
print_err("Disabling advertising to continue serving")
|
||||||
|
|
||||||
config.USE_MIDDLE_PROXY = False
|
disable_middle_proxy = True
|
||||||
want_to_reenable_advertising = True
|
want_to_reenable_advertising = True
|
||||||
elif want_to_reenable_advertising and abs(time_diff) <= MAX_TIME_SKEW:
|
elif not time_skew and want_to_reenable_advertising:
|
||||||
print_err("Time is ok, reenabling advertising")
|
print_err("Time is ok, reenabling advertising")
|
||||||
config.USE_MIDDLE_PROXY = True
|
disable_middle_proxy = False
|
||||||
want_to_reenable_advertising = False
|
want_to_reenable_advertising = False
|
||||||
|
|
||||||
except Exception as E:
|
except Exception as E:
|
||||||
print_err("Error getting server time", E)
|
print_err("Error getting server time", E)
|
||||||
|
|
||||||
@@ -1243,6 +1247,7 @@ async def update_middle_proxy_info():
|
|||||||
|
|
||||||
def init_ip_info():
|
def init_ip_info():
|
||||||
global my_ip_info
|
global my_ip_info
|
||||||
|
global disable_middle_proxy
|
||||||
|
|
||||||
def get_ip_from_url(url):
|
def get_ip_from_url(url):
|
||||||
TIMEOUT = 5
|
TIMEOUT = 5
|
||||||
@@ -1269,7 +1274,7 @@ def init_ip_info():
|
|||||||
if config.USE_MIDDLE_PROXY:
|
if config.USE_MIDDLE_PROXY:
|
||||||
if not my_ip_info["ipv4"] and not my_ip_info["ipv6"]:
|
if not my_ip_info["ipv4"] and not my_ip_info["ipv6"]:
|
||||||
print_err("Failed to determine your ip, advertising disabled")
|
print_err("Failed to determine your ip, advertising disabled")
|
||||||
config.USE_MIDDLE_PROXY = False
|
disable_middle_proxy = True
|
||||||
|
|
||||||
|
|
||||||
def print_tg_info():
|
def print_tg_info():
|
||||||
|
|||||||
Reference in New Issue
Block a user