2222
2323from pyrogram import utils
2424
25- from .transport import TCP , TCPAbridged
25+ from .transport import TCP , TCPAbridged , TCPMTProxyAbridged , TCPMTProxyIntermediate , TCPMTProxyRandomizedIntermediate
2626
2727log = logging .getLogger (__name__ )
2828
@@ -51,6 +51,18 @@ def __init__(
5151 self .media = media
5252 self .protocol_factory = protocol_factory
5353 self .crypto_executor_workers = crypto_executor_workers
54+ self .is_mtproxy = False
55+
56+ # if isinstance(proxy, str) and proxy.lower().startswith("mtproxy://"):
57+ # self.is_mtproxy = True
58+
59+ if isinstance (proxy , dict ) and proxy .get ("scheme" , "" ).lower () == "mtproxy" :
60+ self .is_mtproxy = True
61+
62+ self .is_mtproxy_protocol_factory = bool (protocol_factory in (TCPMTProxyAbridged , TCPMTProxyIntermediate , TCPMTProxyRandomizedIntermediate ))
63+
64+ if self .is_mtproxy and not self .is_mtproxy_protocol_factory :
65+ self .protocol_factory = TCPMTProxyRandomizedIntermediate
5466
5567 self .protocol : Optional [TCP ] = None
5668
@@ -61,8 +73,10 @@ def __init__(
6173
6274 async def connect (self ) -> None :
6375 for i in range (Connection .MAX_CONNECTION_ATTEMPTS ):
64- self .protocol = self .protocol_factory (ipv6 = self .ipv6 , proxy = self .proxy , crypto_executor_workers = self .crypto_executor_workers , loop = self .loop )
65-
76+ if self .is_mtproxy :
77+ self .protocol = self .protocol_factory (dc_id = self .dc_id , ipv6 = self .ipv6 , proxy = self .proxy , crypto_executor_workers = self .crypto_executor_workers , loop = self .loop )
78+ else :
79+ self .protocol = self .protocol_factory (ipv6 = self .ipv6 , proxy = self .proxy , crypto_executor_workers = self .crypto_executor_workers , loop = self .loop )
6680 try :
6781 log .info ("Connecting..." )
6882 await self .protocol .connect ((self .server_address , self .port ))
0 commit comments