Commit Graph

81 Commits

Author SHA1 Message Date
Lonami Exo
b4811261e9 Set a known buffer size if possible on BinaryWriter()s 2017-08-29 20:44:51 +02:00
Lonami Exo
cff7655a10 Add support for TCP intermediate mode (#112) 2017-08-29 11:39:44 +02:00
Lonami Exo
a3c2c462a7 Add support for tcp_obfuscated on the Connection class (#112) 2017-08-28 21:44:02 +02:00
Lonami Exo
fa22a3f848 Create a centralized Connection class, replaces TcpTransport (#112) 2017-08-28 21:23:31 +02:00
Lonami Exo
5404670469 Implement and use TCP obfuscated as a PoC (#112)
Credits to MadelineProto/Connection.php by @danog
2017-08-28 20:25:44 +02:00
Lonami Exo
00b5b5021b Report errors to pwrtelegram.xyz by default 2017-08-25 15:34:20 +02:00
Lonami Exo
66876b6722 Use pycrypto's RSA instead the old weird RSA implementation 2017-08-23 21:49:27 +02:00
Lonami Exo
7844cd358e Attempt at making layer migrations more smooth (#158) 2017-07-26 16:10:45 +02:00
Lonami Exo
160a3699ac Fix confusing names "MtProtoRequest" and ".confirmed" (#176)
This also fixes the annoyingly confusing message:
"Odd msg_seqno expected (relevant message), but even received."
2017-07-24 16:54:48 +02:00
Lonami Exo
1f7ac71187 Debug level should always be used for logging since it's a library 2017-07-10 15:21:20 +02:00
Lonami Exo
83c8e98448 Ensure that message ids are signed once again 2017-06-27 18:45:52 +02:00
Lonami Exo
b0173c3ec2 Use more accurate values for msg_ids 2017-06-26 11:01:20 +02:00
Lonami Exo
843c16215c Add timeout parameter on TcpClient.connect() too 2017-06-22 19:21:33 +02:00
Lonami Exo
e4fbd87c75 Turn timeout into a property instead leaving it as a parameter 2017-06-22 11:43:42 +02:00
Lonami Exo
a9a5c7e254 Use signed longs for every request_id (#138 follow-up) 2017-06-21 10:21:09 +02:00
Lonami Exo
d58222d007 Use crc32 from zlib instead from binascii
It seems to be a bit faster stackoverflow.com/q/44502855
2017-06-20 11:03:46 +02:00
Lonami Exo
697434be37 Don't do anything on .connect() if it's already connected 2017-06-20 09:46:37 +02:00
Hasan
c13164f5cf Use the correct amount of random bytes in DH request
The official documentation says a 2048 *bit* number.
`os.urandom` takes an argument that represents the number of *bytes*.
2048 bits is 256 bytes
2017-06-18 23:38:14 +02:00
Lonami Exo
8afb0a3f6b Rename Request.msg_id to request_msg_id to avoid name clash (fix #122) 2017-06-18 10:01:59 +02:00
Lonami Exo
2b85463ce6 Don't ignore more possible updates on .receive_updates() (closes #117) 2017-06-16 15:36:47 +02:00
Lonami Exo
3ed59d08e5 Fix commit 65912f9 by properly skipping lost messages 2017-06-11 17:53:53 +02:00
Lonami Exo
65912f926b Allow to send more than one request before receiving them (#105) 2017-06-11 14:58:16 +02:00
Lonami Exo
44ab85962b Completely change errors (make one class for each) 2017-06-10 11:47:51 +02:00
Lonami Exo
7adb4f09d6 Slightly reorganise the project structure 2017-06-09 16:13:39 +02:00
Lonami Exo
ba5bfa105f Use memoryview() on TcpClient.write() instead slicing the data 2017-06-09 11:50:30 +02:00
Lonami Exo
c6645a555d Prefer BufferedWriter over BinaryWriter for socket operations 2017-06-09 11:42:39 +02:00
Lonami Exo
5494cb15eb "Don't go nuts switching back and forth between (non-)blocking"
And other improvements (shutting down the socket, proper naming).
https://docs.python.org/3/howto/sockets.html#non-blocking-sockets
2017-06-09 11:27:52 +02:00
Lonami Exo
efd1c1ba64 Always acknowledge received errors for server not to resend them 2017-06-09 10:46:39 +02:00
Lonami Exo
1860054ec0 Make generate_sequence() thread-safe and move it to Session 2017-06-07 12:00:01 +01:00
Dmitry D. Chernov
5362f2578d Allow using lists and dicts for passing proxy settings 2017-06-05 09:26:10 +02:00
Lonami Exo
7acfd0c6c9 Update to v0.10 and some minor grammar fixes 2017-06-03 13:36:41 +02:00
Lonami Exo
153cbfd350 Use more straightforward calls of hashlib.sha1/sha256 2017-06-02 16:49:03 +02:00
Lonami Exo
d321096714 Tidy if/else branch on _recreate_socket 2017-05-30 11:42:14 +02:00
Lonami Exo
2399b7e55e Remove try/except if a proxy was used, make more members private 2017-05-30 10:40:33 +02:00
Lonami Exo
0b9d76bda1 Replace library print()'s with calls to _logger 2017-05-30 10:24:08 +02:00
Lonami Exo
7c84c72f06 Minor change to make the code more pythonic 2017-05-29 21:27:20 +02:00
Lonami Exo
042e3069a9 Move UpdatesThread from MtProtoSender to TelegramClient
This makes it easier to perform a proper reconnection
2017-05-29 21:24:47 +02:00
Lonami Exo
ebe4232b32 Change the way in which updates are read and handled 2017-05-29 20:41:11 +02:00
Lonami Exo
452532cce7 Make certain methods and members private 2017-05-29 17:06:48 +02:00
Lonami Exo
63b1881c83 Raise FloodWaitError instead sleeping 2017-05-29 16:46:17 +02:00
Lonami Exo
7f84374e98 Attempt at fixing msg_id too low/high (#95) 2017-05-26 16:39:59 +02:00
Lonami Exo
02a847b64a Make lint happier 2017-05-21 13:59:16 +02:00
Lonami Exo
63c89af983 Use relative imports always where possible 2017-05-21 13:02:54 +02:00
Lonami Exo
ca80b05694 Add shebangs and set proper file permissions 2017-05-20 15:58:44 +02:00
Lonami Exo
fb9104417e Add more errors, change the way InvalidDC is created 2017-05-20 15:25:07 +02:00
Lonami Exo
eb7fb2ac24 Make logging a lot less intrusive
See https://docs.python.org/3/howto/logging.html#library-config
2017-05-20 11:49:09 +02:00
Lonami Exo
6550d83d42 Fix closed sockets not being recreated as they should
See http://stackoverflow.com/a/15958099
2017-05-20 11:34:23 +02:00
Lonami Exo
468033fa7e Avoid counterintuitive automatic connection 2017-05-20 11:33:37 +02:00
Dmitry D. Chernov
bbd3eb7c28 Raise an exception if recv() returned 0 bytes
See for details: https://docs.python.org/3/howto/sockets.html
"When a recv returns 0 bytes, it means the other side has closed (or is in the process of closing) the connection. You will not receive any more data on this connection. Ever."
2017-05-20 11:02:19 +02:00
Lonami Exo
3c3946e6f1 Don't start the updates thread until signed in 2017-05-19 21:44:50 +02:00