mirror of
https://github.com/TeamPGM/pyrogram.git
synced 2024-11-18 05:30:15 +00:00
Remove old commented code on session.py
This commit is contained in:
parent
38442bf3c1
commit
45a32ddd88
@ -401,402 +401,3 @@ class Session:
|
||||
|
||||
await asyncio.sleep(0.5)
|
||||
return await self.send(data, retries - 1, timeout)
|
||||
|
||||
# class Result:
|
||||
# def __init__(self):
|
||||
# self.value = None
|
||||
# self.event = Event()
|
||||
#
|
||||
#
|
||||
# class Session:
|
||||
# VERSION = __version__
|
||||
# APP_VERSION = "Pyrogram \U0001f525 {}".format(VERSION)
|
||||
#
|
||||
# DEVICE_MODEL = "{} {}".format(
|
||||
# platform.python_implementation(),
|
||||
# platform.python_version()
|
||||
# )
|
||||
#
|
||||
# SYSTEM_VERSION = "{} {}".format(
|
||||
# platform.system(),
|
||||
# platform.release()
|
||||
# )
|
||||
#
|
||||
# INITIAL_SALT = 0x616e67656c696361
|
||||
# NET_WORKERS = 1
|
||||
# WAIT_TIMEOUT = 15
|
||||
# MAX_RETRIES = 5
|
||||
# ACKS_THRESHOLD = 8
|
||||
# PING_INTERVAL = 5
|
||||
#
|
||||
# notice_displayed = False
|
||||
#
|
||||
# BAD_MSG_DESCRIPTION = {
|
||||
# 16: "[16] msg_id too low, the client time has to be synchronized",
|
||||
# 17: "[17] msg_id too high, the client time has to be synchronized",
|
||||
# 18: "[18] incorrect two lower order msg_id bits, the server expects client message msg_id to be divisible by 4",
|
||||
# 19: "[19] container msg_id is the same as msg_id of a previously received message",
|
||||
# 20: "[20] message too old, it cannot be verified by the server",
|
||||
# 32: "[32] msg_seqno too low",
|
||||
# 33: "[33] msg_seqno too high",
|
||||
# 34: "[34] an even msg_seqno expected, but odd received",
|
||||
# 35: "[35] odd msg_seqno expected, but even received",
|
||||
# 48: "[48] incorrect server salt",
|
||||
# 64: "[64] invalid container"
|
||||
# }
|
||||
#
|
||||
# def __init__(self,
|
||||
# dc_id: int,
|
||||
# test_mode: bool,
|
||||
# proxy: dict,
|
||||
# auth_key: bytes,
|
||||
# api_id: int,
|
||||
# is_cdn: bool = False,
|
||||
# client: pyrogram = None):
|
||||
# if not Session.notice_displayed:
|
||||
# print("Pyrogram v{}, {}".format(__version__, __copyright__))
|
||||
# print("Licensed under the terms of the " + __license__, end="\n\n")
|
||||
# Session.notice_displayed = True
|
||||
#
|
||||
# self.dc_id = dc_id
|
||||
# self.test_mode = test_mode
|
||||
# self.proxy = proxy
|
||||
# self.api_id = api_id
|
||||
# self.is_cdn = is_cdn
|
||||
# self.client = client
|
||||
#
|
||||
# self.connection = None
|
||||
#
|
||||
# self.auth_key = auth_key
|
||||
# self.auth_key_id = sha1(auth_key).digest()[-8:]
|
||||
#
|
||||
# self.session_id = Long(MsgId())
|
||||
# self.msg_factory = MsgFactory()
|
||||
#
|
||||
# self.current_salt = None
|
||||
#
|
||||
# self.pending_acks = set()
|
||||
#
|
||||
# self.recv_queue = Queue()
|
||||
# self.results = {}
|
||||
#
|
||||
# self.ping_thread = None
|
||||
# self.ping_thread_event = Event()
|
||||
#
|
||||
# self.next_salt_thread = None
|
||||
# self.next_salt_thread_event = Event()
|
||||
#
|
||||
# self.net_worker_list = []
|
||||
#
|
||||
# self.is_connected = Event()
|
||||
#
|
||||
# def start(self):
|
||||
# while True:
|
||||
# self.connection = Connection(DataCenter(self.dc_id, self.test_mode), self.proxy)
|
||||
#
|
||||
# try:
|
||||
# self.connection.connect()
|
||||
#
|
||||
# for i in range(self.NET_WORKERS):
|
||||
# self.net_worker_list.append(
|
||||
# Thread(
|
||||
# target=self.net_worker,
|
||||
# name="NetWorker#{}".format(i + 1)
|
||||
# )
|
||||
# )
|
||||
#
|
||||
# self.net_worker_list[-1].start()
|
||||
#
|
||||
# Thread(target=self.recv, name="RecvThread").start()
|
||||
#
|
||||
# self.current_salt = FutureSalt(0, 0, self.INITIAL_SALT)
|
||||
# self.current_salt = FutureSalt(0, 0, self._send(functions.Ping(0)).new_server_salt)
|
||||
# self.current_salt = self._send(functions.GetFutureSalts(1)).salts[0]
|
||||
#
|
||||
# self.next_salt_thread = Thread(target=self.next_salt, name="NextSaltThread")
|
||||
# self.next_salt_thread.start()
|
||||
#
|
||||
# if not self.is_cdn:
|
||||
# self._send(
|
||||
# functions.InvokeWithLayer(
|
||||
# layer,
|
||||
# functions.InitConnection(
|
||||
# self.api_id,
|
||||
# self.DEVICE_MODEL,
|
||||
# self.SYSTEM_VERSION,
|
||||
# self.APP_VERSION,
|
||||
# "en", "", "en",
|
||||
# functions.help.GetConfig(),
|
||||
# )
|
||||
# )
|
||||
# )
|
||||
#
|
||||
# self.ping_thread = Thread(target=self.ping, name="PingThread")
|
||||
# self.ping_thread.start()
|
||||
#
|
||||
# log.info("Connection inited: Layer {}".format(layer))
|
||||
# except (OSError, TimeoutError, Error):
|
||||
# self.stop()
|
||||
# except Exception as e:
|
||||
# self.stop()
|
||||
# raise e
|
||||
# else:
|
||||
# break
|
||||
#
|
||||
# self.is_connected.set()
|
||||
#
|
||||
# log.debug("Session started")
|
||||
#
|
||||
# def stop(self):
|
||||
# self.is_connected.clear()
|
||||
#
|
||||
# self.ping_thread_event.set()
|
||||
# self.next_salt_thread_event.set()
|
||||
#
|
||||
# if self.ping_thread is not None:
|
||||
# self.ping_thread.join()
|
||||
#
|
||||
# if self.next_salt_thread is not None:
|
||||
# self.next_salt_thread.join()
|
||||
#
|
||||
# self.ping_thread_event.clear()
|
||||
# self.next_salt_thread_event.clear()
|
||||
#
|
||||
# self.connection.close()
|
||||
#
|
||||
# for i in range(self.NET_WORKERS):
|
||||
# self.recv_queue.put(None)
|
||||
#
|
||||
# for i in self.net_worker_list:
|
||||
# i.join()
|
||||
#
|
||||
# self.net_worker_list.clear()
|
||||
#
|
||||
# for i in self.results.values():
|
||||
# i.event.set()
|
||||
#
|
||||
# if self.client and callable(self.client.disconnect_handler):
|
||||
# try:
|
||||
# self.client.disconnect_handler(self.client)
|
||||
# except Exception as e:
|
||||
# log.error(e, exc_info=True)
|
||||
#
|
||||
# log.debug("Session stopped")
|
||||
#
|
||||
# def restart(self):
|
||||
# self.stop()
|
||||
# self.start()
|
||||
#
|
||||
# def pack(self, message: Message):
|
||||
# data = Long(self.current_salt.salt) + self.session_id + message.write()
|
||||
# padding = urandom(-(len(data) + 12) % 16 + 12)
|
||||
#
|
||||
# # 88 = 88 + 0 (outgoing message)
|
||||
# msg_key_large = sha256(self.auth_key[88: 88 + 32] + data + padding).digest()
|
||||
# msg_key = msg_key_large[8:24]
|
||||
# aes_key, aes_iv = KDF(self.auth_key, msg_key, True)
|
||||
#
|
||||
# return self.auth_key_id + msg_key + AES.ige256_encrypt(data + padding, aes_key, aes_iv)
|
||||
#
|
||||
# def unpack(self, b: BytesIO) -> Message:
|
||||
# assert b.read(8) == self.auth_key_id, b.getvalue()
|
||||
#
|
||||
# msg_key = b.read(16)
|
||||
# aes_key, aes_iv = KDF(self.auth_key, msg_key, False)
|
||||
# data = BytesIO(AES.ige256_decrypt(b.read(), aes_key, aes_iv))
|
||||
# data.read(8)
|
||||
#
|
||||
# # https://core.telegram.org/mtproto/security_guidelines#checking-session-id
|
||||
# assert data.read(8) == self.session_id
|
||||
#
|
||||
# message = Message.read(data)
|
||||
#
|
||||
# # https://core.telegram.org/mtproto/security_guidelines#checking-sha256-hash-value-of-msg-key
|
||||
# # https://core.telegram.org/mtproto/security_guidelines#checking-message-length
|
||||
# # 96 = 88 + 8 (incoming message)
|
||||
# assert msg_key == sha256(self.auth_key[96:96 + 32] + data.getvalue()).digest()[8:24]
|
||||
#
|
||||
# # https://core.telegram.org/mtproto/security_guidelines#checking-msg-id
|
||||
# # TODO: check for lower msg_ids
|
||||
# assert message.msg_id % 2 != 0
|
||||
#
|
||||
# return message
|
||||
#
|
||||
# def net_worker(self):
|
||||
# name = threading.current_thread().name
|
||||
# log.debug("{} started".format(name))
|
||||
#
|
||||
# while True:
|
||||
# packet = self.recv_queue.get()
|
||||
#
|
||||
# if packet is None:
|
||||
# break
|
||||
#
|
||||
# try:
|
||||
# data = self.unpack(BytesIO(packet))
|
||||
#
|
||||
# messages = (
|
||||
# data.body.messages
|
||||
# if isinstance(data.body, MsgContainer)
|
||||
# else [data]
|
||||
# )
|
||||
#
|
||||
# log.debug(data)
|
||||
#
|
||||
# for msg in messages:
|
||||
# if msg.seq_no % 2 != 0:
|
||||
# if msg.msg_id in self.pending_acks:
|
||||
# continue
|
||||
# else:
|
||||
# self.pending_acks.add(msg.msg_id)
|
||||
#
|
||||
# if isinstance(msg.body, (types.MsgDetailedInfo, types.MsgNewDetailedInfo)):
|
||||
# self.pending_acks.add(msg.body.answer_msg_id)
|
||||
# continue
|
||||
#
|
||||
# if isinstance(msg.body, types.NewSessionCreated):
|
||||
# continue
|
||||
#
|
||||
# msg_id = None
|
||||
#
|
||||
# if isinstance(msg.body, (types.BadMsgNotification, types.BadServerSalt)):
|
||||
# msg_id = msg.body.bad_msg_id
|
||||
# elif isinstance(msg.body, (core.FutureSalts, types.RpcResult)):
|
||||
# msg_id = msg.body.req_msg_id
|
||||
# elif isinstance(msg.body, types.Pong):
|
||||
# msg_id = msg.body.msg_id
|
||||
# else:
|
||||
# if self.client is not None:
|
||||
# self.client.updates_queue.put(msg.body)
|
||||
#
|
||||
# if msg_id in self.results:
|
||||
# self.results[msg_id].value = getattr(msg.body, "result", msg.body)
|
||||
# self.results[msg_id].event.set()
|
||||
#
|
||||
# if len(self.pending_acks) >= self.ACKS_THRESHOLD:
|
||||
# log.info("Send {} acks".format(len(self.pending_acks)))
|
||||
#
|
||||
# try:
|
||||
# self._send(types.MsgsAck(list(self.pending_acks)), False)
|
||||
# except (OSError, TimeoutError):
|
||||
# pass
|
||||
# else:
|
||||
# self.pending_acks.clear()
|
||||
# except Exception as e:
|
||||
# log.error(e, exc_info=True)
|
||||
#
|
||||
# log.debug("{} stopped".format(name))
|
||||
#
|
||||
# def ping(self):
|
||||
# log.debug("PingThread started")
|
||||
#
|
||||
# while True:
|
||||
# self.ping_thread_event.wait(self.PING_INTERVAL)
|
||||
#
|
||||
# if self.ping_thread_event.is_set():
|
||||
# break
|
||||
#
|
||||
# try:
|
||||
# self._send(functions.PingDelayDisconnect(
|
||||
# 0, self.WAIT_TIMEOUT + 10
|
||||
# ), False)
|
||||
# except (OSError, TimeoutError, Error):
|
||||
# pass
|
||||
#
|
||||
# log.debug("PingThread stopped")
|
||||
#
|
||||
# def next_salt(self):
|
||||
# log.debug("NextSaltThread started")
|
||||
#
|
||||
# while True:
|
||||
# now = datetime.now()
|
||||
#
|
||||
# # Seconds to wait until middle-overlap, which is
|
||||
# # 15 minutes before/after the current/next salt end/start time
|
||||
# dt = (self.current_salt.valid_until - now).total_seconds() - 900
|
||||
#
|
||||
# log.debug("Current salt: {} | Next salt in {:.0f}m {:.0f}s ({})".format(
|
||||
# self.current_salt.salt,
|
||||
# dt // 60,
|
||||
# dt % 60,
|
||||
# now + timedelta(seconds=dt)
|
||||
# ))
|
||||
#
|
||||
# self.next_salt_thread_event.wait(dt)
|
||||
#
|
||||
# if self.next_salt_thread_event.is_set():
|
||||
# break
|
||||
#
|
||||
# try:
|
||||
# self.current_salt = self._send(functions.GetFutureSalts(1)).salts[0]
|
||||
# except (OSError, TimeoutError, Error):
|
||||
# self.connection.close()
|
||||
# break
|
||||
#
|
||||
# log.debug("NextSaltThread stopped")
|
||||
#
|
||||
# def recv(self):
|
||||
# log.debug("RecvThread started")
|
||||
#
|
||||
# while True:
|
||||
# packet = self.connection.recv()
|
||||
#
|
||||
# if packet is None or len(packet) == 4:
|
||||
# if packet:
|
||||
# log.warning("Server sent \"{}\"".format(Int.read(BytesIO(packet))))
|
||||
#
|
||||
# if self.is_connected.is_set():
|
||||
# Thread(target=self.restart, name="RestartThread").start()
|
||||
# break
|
||||
#
|
||||
# self.recv_queue.put(packet)
|
||||
#
|
||||
# log.debug("RecvThread stopped")
|
||||
#
|
||||
# def _send(self, data: Object, wait_response: bool = True):
|
||||
# message = self.msg_factory(data)
|
||||
# msg_id = message.msg_id
|
||||
#
|
||||
# if wait_response:
|
||||
# self.results[msg_id] = Result()
|
||||
#
|
||||
# payload = self.pack(message)
|
||||
#
|
||||
# try:
|
||||
# self.connection.send(payload)
|
||||
# except OSError as e:
|
||||
# self.results.pop(msg_id, None)
|
||||
# raise e
|
||||
#
|
||||
# if wait_response:
|
||||
# self.results[msg_id].event.wait(self.WAIT_TIMEOUT)
|
||||
# result = self.results.pop(msg_id).value
|
||||
#
|
||||
# if result is None:
|
||||
# raise TimeoutError
|
||||
# elif isinstance(result, types.RpcError):
|
||||
# Error.raise_it(result, type(data))
|
||||
# elif isinstance(result, types.BadMsgNotification):
|
||||
# raise Exception(self.BAD_MSG_DESCRIPTION.get(
|
||||
# result.error_code,
|
||||
# "Error code {}".format(result.error_code)
|
||||
# ))
|
||||
# else:
|
||||
# return result
|
||||
#
|
||||
# def send(self, data: Object, retries: int = MAX_RETRIES):
|
||||
# self.is_connected.wait(self.WAIT_TIMEOUT)
|
||||
#
|
||||
# try:
|
||||
# return self._send(data)
|
||||
# except (OSError, TimeoutError, InternalServerError) as e:
|
||||
# if retries == 0:
|
||||
# raise e from None
|
||||
#
|
||||
# (log.warning if retries < 3 else log.info)(
|
||||
# "{}: {} Retrying {}".format(
|
||||
# Session.MAX_RETRIES - retries,
|
||||
# datetime.now(), type(data)))
|
||||
#
|
||||
# time.sleep(0.5)
|
||||
# return self.send(data, retries - 1, timeout)
|
||||
|
Loading…
Reference in New Issue
Block a user