mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-12-01 22:03:46 +03:00
parent
959e824c1c
commit
ee5915e86d
|
@ -39,6 +39,11 @@ from .update_state import UpdateState
|
||||||
from .utils import get_appropriated_part_size
|
from .utils import get_appropriated_part_size
|
||||||
|
|
||||||
|
|
||||||
|
DEFAULT_IPV4_IP = '149.154.167.51'
|
||||||
|
DEFAULT_IPV6_IP = '[2001:67c:4e8:f002::a]'
|
||||||
|
DEFAULT_PORT = 443
|
||||||
|
|
||||||
|
|
||||||
class TelegramBareClient:
|
class TelegramBareClient:
|
||||||
"""Bare Telegram Client with just the minimum -
|
"""Bare Telegram Client with just the minimum -
|
||||||
|
|
||||||
|
@ -69,6 +74,7 @@ class TelegramBareClient:
|
||||||
|
|
||||||
def __init__(self, session, api_id, api_hash,
|
def __init__(self, session, api_id, api_hash,
|
||||||
connection_mode=ConnectionMode.TCP_FULL,
|
connection_mode=ConnectionMode.TCP_FULL,
|
||||||
|
use_ipv6=False,
|
||||||
proxy=None,
|
proxy=None,
|
||||||
update_workers=None,
|
update_workers=None,
|
||||||
spawn_read_thread=False,
|
spawn_read_thread=False,
|
||||||
|
@ -80,6 +86,8 @@ class TelegramBareClient:
|
||||||
"Your API ID or Hash cannot be empty or None. "
|
"Your API ID or Hash cannot be empty or None. "
|
||||||
"Refer to Telethon's README.rst for more information.")
|
"Refer to Telethon's README.rst for more information.")
|
||||||
|
|
||||||
|
self._use_ipv6 = use_ipv6
|
||||||
|
|
||||||
# Determine what session object we have
|
# Determine what session object we have
|
||||||
if isinstance(session, str) or session is None:
|
if isinstance(session, str) or session is None:
|
||||||
session = Session.try_load_or_create_new(session)
|
session = Session.try_load_or_create_new(session)
|
||||||
|
@ -88,6 +96,11 @@ class TelegramBareClient:
|
||||||
'The given session must be a str or a Session instance.'
|
'The given session must be a str or a Session instance.'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not session.server_address:
|
||||||
|
session.port = DEFAULT_PORT
|
||||||
|
session.server_address = \
|
||||||
|
DEFAULT_IPV6_IP if self._use_ipv6 else DEFAULT_IPV4_IP
|
||||||
|
|
||||||
self.session = session
|
self.session = session
|
||||||
self.api_id = int(api_id)
|
self.api_id = int(api_id)
|
||||||
self.api_hash = api_hash
|
self.api_hash = api_hash
|
||||||
|
@ -282,7 +295,7 @@ class TelegramBareClient:
|
||||||
return self._recv_thread is not None and \
|
return self._recv_thread is not None and \
|
||||||
threading.get_ident() == self._recv_thread.ident
|
threading.get_ident() == self._recv_thread.ident
|
||||||
|
|
||||||
def _get_dc(self, dc_id, ipv6=False, cdn=False):
|
def _get_dc(self, dc_id, cdn=False):
|
||||||
"""Gets the Data Center (DC) associated to 'dc_id'"""
|
"""Gets the Data Center (DC) associated to 'dc_id'"""
|
||||||
if not TelegramBareClient._config:
|
if not TelegramBareClient._config:
|
||||||
TelegramBareClient._config = self(GetConfigRequest())
|
TelegramBareClient._config = self(GetConfigRequest())
|
||||||
|
@ -295,7 +308,7 @@ class TelegramBareClient:
|
||||||
|
|
||||||
return next(
|
return next(
|
||||||
dc for dc in TelegramBareClient._config.dc_options
|
dc for dc in TelegramBareClient._config.dc_options
|
||||||
if dc.id == dc_id and bool(dc.ipv6) == ipv6 and bool(dc.cdn) == cdn
|
if dc.id == dc_id and bool(dc.ipv6) == self._use_ipv6 and bool(dc.cdn) == cdn
|
||||||
)
|
)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
if not cdn:
|
if not cdn:
|
||||||
|
@ -303,7 +316,7 @@ class TelegramBareClient:
|
||||||
|
|
||||||
# New configuration, perhaps a new CDN was added?
|
# New configuration, perhaps a new CDN was added?
|
||||||
TelegramBareClient._config = self(GetConfigRequest())
|
TelegramBareClient._config = self(GetConfigRequest())
|
||||||
return self._get_dc(dc_id, ipv6=ipv6, cdn=cdn)
|
return self._get_dc(dc_id, cdn=cdn)
|
||||||
|
|
||||||
def _get_exported_client(self, dc_id):
|
def _get_exported_client(self, dc_id):
|
||||||
"""Creates and connects a new TelegramBareClient for the desired DC.
|
"""Creates and connects a new TelegramBareClient for the desired DC.
|
||||||
|
|
|
@ -69,6 +69,7 @@ class TelegramClient(TelegramBareClient):
|
||||||
|
|
||||||
def __init__(self, session, api_id, api_hash,
|
def __init__(self, session, api_id, api_hash,
|
||||||
connection_mode=ConnectionMode.TCP_FULL,
|
connection_mode=ConnectionMode.TCP_FULL,
|
||||||
|
use_ipv6=False,
|
||||||
proxy=None,
|
proxy=None,
|
||||||
update_workers=None,
|
update_workers=None,
|
||||||
timeout=timedelta(seconds=5),
|
timeout=timedelta(seconds=5),
|
||||||
|
@ -113,6 +114,7 @@ class TelegramClient(TelegramBareClient):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
session, api_id, api_hash,
|
session, api_id, api_hash,
|
||||||
connection_mode=connection_mode,
|
connection_mode=connection_mode,
|
||||||
|
use_ipv6=use_ipv6,
|
||||||
proxy=proxy,
|
proxy=proxy,
|
||||||
update_workers=update_workers,
|
update_workers=update_workers,
|
||||||
spawn_read_thread=spawn_read_thread,
|
spawn_read_thread=spawn_read_thread,
|
||||||
|
|
|
@ -64,8 +64,8 @@ class Session:
|
||||||
self._last_msg_id = 0 # Long
|
self._last_msg_id = 0 # Long
|
||||||
|
|
||||||
# These values will be saved
|
# These values will be saved
|
||||||
self.server_address = '91.108.56.165'
|
self.server_address = None
|
||||||
self.port = 443
|
self.port = None
|
||||||
self.auth_key = None
|
self.auth_key = None
|
||||||
self.layer = 0
|
self.layer = 0
|
||||||
self.salt = 0 # Unsigned long
|
self.salt = 0 # Unsigned long
|
||||||
|
|
Loading…
Reference in New Issue
Block a user