ืืืืจืื ื ืืืื ืืืืคืืข ืืขืชืื ืงืจืืืืช ืืืชืจ ื-Habrรฉ ืคืืกืืื ืขื ืืื ืืืื ืืืืจื, ืขื ืืื ืืืืื ืืืจืื ืืืจืืงืื ืืื ืืกืื ืืื ืืืช ืืขืจืืืช ืจืฉืช ืืื'. ืืื ืขื ืืืช, ืืขื ืืืื ืื ืฉืื ืืืืช ืฉืงืขื ืืืืฉืืจ ืืืื ื - ืืื ืืืืชืจ, ืื ืืฉืชืืฉืื ื-Bot API ืคืฉืื ืืืื (ืืื ืฉืื ื ื-MTProto) ืืืืืกืก ืขื JSON, ืืืืจื ืืื ืคืฉืื ืืงืืืื ืขื ืืืื ื ืื ืืฉืืืื ืืืืกื ืืฆืืืืจ ืฉืกืืืืื ืกืืื ืืฉืืื. ืืคื ื ืืืขื ืฉื ื ืืืฆื, ืขืืืช ืฉืื ืืขืืืชื ืืฉืืื ืืืกืืื (ืืฆืขืจื, ืืืฉืืื ืฉืื ื-Habrรฉ ื ืืืง ืืื ืขื ืืืืืื) ืืื ืืืชืื ืืงืื ืืืืจื ืืฉืื ืืืคืก ืืคืจื, ืืืืืฉื ืืฆืืจืฃ ืืืชื ืฉืืจืืช ืืื. ืืื ืคืจื, ืืฉ ืฉืืฉืืื ืืื? ืืืืืื ืฉืคืจืืืงืืื ืืืื ืืืจ ืงืืืืื ืืฉืคืืช ืืืจืืช. ืืืขืฉื, ืื ืื ืื ืงืืื, ืืืืื ืืืืืช ืื ืฉืคื ืืืจืช ืฉืื ืืื ืกืคืจืืื ืืืื ื, ืืืืชืื ืืื ืขื ืืืืืจ ืืืืช ืขื ืืกืืฃ ืืืคืก. ืืชืจ ืขื ืื, ืงืจืืคืืืืจืคืื ืืื ืขื ืืื ืฉื ืืืื, ืืื ืืื. ืขื ืืืฆืจ ืืืืืื ืืืืืื, ืืชื ืื ืืืื ืคืฉืื ืืืกืชืื ืขื ืกืคืจืืื ืืืื ื ืืืืฆืจื ืืืกืืื ืขืืื ืืืืคื ืขืืืืจ (ืขื ืืืช, ืื ื ืืฉื ืืืืง ืืฉื ื). ืืจืืข, ืืกืคืจืืื ืขืืืืช ืื ืืื ืืจืื ื"ืืืืฆืขืช" (ืืืคืฉืจืช ืื ืืืฆืข ืื ืืงืฉืืช API).
ืขื ืืืช, ืื ืชืืื ืืจืื ืงืจืืคืืืืจืคืื ืื ืืชืืืืงื ืืกืืจืช ืืคืืกืืื ืืื. ืืื ืืืื ืขืื ืืจืื ืคืจืืื ืืื ืืื ืืงืืืื ืืืจืืืืืื (ืฉืืืืฉืืื ืื ืืื ืฉืื ืืืชืื ืืืคืก, ืืื ืืฉืชืืฉ ืืกืคืจืืื ืืื ืฉืคื). ืืื, ืืืืจื ืืขืืงืจืืช ืืืืชื ืื ืกืืช ืืืืฉื ืืช ืืืงืื ืืืคืก ืืคื ืชืืขืื ืจืฉืื. ืืืืืจ, ื ื ืื ืฉืงืื ืืืงืืจ ืฉื ืืงืืืืช ืจืฉืืืื ืกืืืจ (ืฉืื, ืืืืง ืืฉื ื ื ืขืกืืง ืืืชืจ ืคืืจืื ืื ืืฉื ืืขืืืื ืฉืื ื ืืื ืื ืงืืจื ืื), ืืื, ืืื ืืืืื ืขืืจื, ืืืฉื, ืืฉ ืชืงื ืืื RFC - ืืื ืืคืฉืจ ืืืชืื ืืงืื ืืคื ืืืคืจื ืืืื, "ืืืื ืืืกืชืื" ืขื ืงืื ืืืงืืจ, ืืื ืื ืื ืจืฉืื (Telegram Desktop, ื ืืื), ืื Telethon ืื ืจืฉืื?
ืืืคืฆืืืช:
ืชืืขืื... ืื ืงืืื, ื ืืื? ืืื ืื ื ืืื?.. ืืืคื ืืืชืืื ืืกืืคืจ ืฆืขืืจ? ืกืืจื ืืื ืืจืืช: TL (ืฉืคืช ืกืื) ืืืกืืืื ืฉืื, ืืืฉืืืืช ืฉืื, ืืขืื ืืจืื ืืืืื ืืคืืืืืช MTProto API? ืืืฉื ืืืื!
ืชืืขืื... ืื ืงืืื, ื ืืื? ืืื ืื ื ืืื?..
ืืงืืฅ ืืืืจืื ืืืื ืืืกืืฃ ืฉืืจื ืืขืจืืช ืืืืืจ ืื. ืื ืืืื ืืื ืืืชืจ ืืจืฉืื
ืืืคื ืืืชืืื ืืกืืคืจ ืฆืขืืจ?
ืื ืื ืืฉื ื ืื ืืชื ืืืชื ืืืคืก ืื ืืฉืชืืฉ, ืืืฉื, ืืกืคืจืืืช ืืืื ืืช ืืื api_id
ะธ api_hash
(ืืื ืฉืขืืื ืขื ื-API ืฉื VKontakte ืืืื ืื ืืื) ืืคืื ืืฉืจืช ืืืื ืืช ืืืคืืืงืฆืื. ืึถื ืฆืจืื ืืขืฉืืช ืืืช ืืกืืืืช ืืฉืคืืืืช, ืืื ื ืืืจ ืืืชืจ ืขื ืืกืืื ืืื ืฉืกืืคืจื ืกืคืจืืื ืื ืืืืืื ืืคืจืกื ืืช ืื ืืืืง ืืฉื ื. ืืืื ืืืืืช ืฉืืชื ืืจืืฆื ืืขืจืื ืืืืืงื, ืืืจืืช ืฉืื ืืืืืืื ืืืื - ืืขืืืื ืืื ืฉืขืืฉืื ืืชื ืืืื ืืืืจืฉื ืจืง ืืื ืืคืืืงืฆืื, ืื ืื ืชืืืจื ืืืื.
ืืขืช, ืืืืื ื ืืื ืืช, ืฆืจืื ืืืชืขื ืืื ืืขืืืื ืฉืืืจื ืืืจืฉืื ืขืืื ื ืืงืื ืืืืขืืช ืืืืืจื ืขื ืขืืืื ืื ืืชืืขืื, ืคืจืืืืงืื ืืื'. ืืืืืจ, ืืคืฉืจ ืืื ืืฉืขืจ ืฉืืืชืจ ืขื ืืจืฆืืคืื ืคืฉืื ื ืืืฉ ืืืืฉืื ืืขืืื ืืืืืื ืขื ืื ืฉืืชืืื ืืขืฉืืช ืืงืืืืช, ืื ืื ืงื ืืืชืจ. ืืื ืื, ืฉืื ืืืจ ืืื ืื ื ืฆืคื, ืฉืื ืืืืข ืื ืืืืข.
ืืื ืืชื ืืืชื ืืืคืก, ืื ืืฉืืืืฉ ืืคืจืืืจืื ืฉืืชืงืืื ืืื ืืืขืฉื ืขืืืื ืจืืืง. ืืืจืืช ืฉ
ืืืขืฉื, ืื ืืคื ื ืืื ืืืจื MTProto, ืืืื ืจืืืช ืื-ืืื ืืช (ืืคื ืฉืืืืจืื ืื ืฉื ืจืฉืช ืืจืื ืฉืขืืืืื ืืืืืช ืืขืจืืช ืืืคืขืื, ืืคืจืช ืฉืืืืช), ื ืืฉื ืืืื, ืืืื ืื ืืจื ืืคืจืืข...
ืกืืจื ืืื ืืจืืช: TL (ืฉืคืช ืกืื) ืืืกืืืื ืฉืื, ืืืฉืืืืช ืฉืื, ืืขืื ืืจืื ืืืืื ืืคืืืืืช
ื ืืฉื ืื, ืืืขืฉื, ืืื ืืืคืชื ืืืขืืืช ืฉื ืืืืจื. ืืืืื ืืจืื ืืืืื ืืืืืืช ืื ืชื ืกื ืืืชืขืืง ืืื.
ืื ืื ื ืืชืจืฉืื. ืื ืืืืื ืืืืช ืขืืื ืื ืืจืืฉ, ืืืืจ,
int ? = Int;
long ? = Long;
double ? = Double;
string ? = String;
vector#1cb5c415 {t:Type} # [ t ] = Vector t;
rpc_error#2144ca19 error_code:int error_message:string = RpcError;
rpc_answer_unknown#5e2ad36e = RpcDropAnswer;
rpc_answer_dropped_running#cd78e586 = RpcDropAnswer;
rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer;
msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
---functions---
set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:bytes = Set_client_DH_params_answer;
ping#7abe77ec ping_id:long = Pong;
ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;
invokeAfterMsg#cb9f372d msg_id:long query:!X = X;
invokeAfterMsgs#3dc4b4f0 msg_ids:Vector<long> query:!X = X;
account.updateProfile#78515775 flags:# first_name:flags.0?string last_name:flags.1?string about:flags.2?string = User;
account.sendChangePhoneCode#8e57deb flags:# allow_flashcall:flags.0?true phone_number:string current_number:flags.0?Bool = auth.SentCode;
ืืื ืฉืจืืื ืืืช ืืคืขื ืืจืืฉืื ื ืืืื ืืืืคื ืืื ืืืืืืืื ืืืืืช ืจืง ืืืง ืืื ืฉืืชืื - ืืืื, ืืื ืื ืจืื ืืื ืื (ืื ืื ืืืคื ืืฉื, ืืฉืืื ืื ืืืืื?), ืืฉ ืืื ืฉืืืช, ืฉืืืืจืื ืกืื ืขืืงื ืืืจื ื ืงืืืชืืื... ืื ืจืื. ืืื ืืกืืืจืืื ืืืืืช ืืฉ ืื ืจืื ืชืื ืืืช ืืื ื-C++ (ืืืขืฉื, ืื ืืืฉ). ืืื ืืืฉืืขืืช ืฉื ืื ืฉืืจ ืืกืืืื, ืกืืื ื ืฉืืื, ืกืืื ื ืงืจืืื, ืืืืืื, ืกืืื ื ืืืืื (ืืืจืืจ ืฉืื ืืชืืืื ืื ืืืืจืื ืฉืื ืื ืืืงืืืืช ืฉืื ืื), ืืคืขืืื ื ืืืืื ืืืคืขืืื ืื, ืืกืคืจืื ืืงืกืืฆืืืืืื - ืืืื ืืฉืื, ืืื ืืืืขืื ืืื ื ืืื (ืฉืื ืืืืื ืขื ืืื ืืฉืจืช) ืืจื ืืชืื? ืชืฆืืจื ืืงืจืื ืืช ืืชืืขืื (ืื, ืืฉ ืงืืฉืืจืื ืืกืืืื ืืืจืกืช JSON ืืงืจืืช ืืงืื - ืืื ืื ืื ืืืคื ืืช ืื ืืืืืจ ืืืชืจ).
ืคืชื ืืช ืืืฃ
ืงืืจืืื ืฉืืืืจืื ืฉืคืืช ืคืื ืงืฆืืื ืืืืช ืืืกืงืช ืกืืืื ืืืืืืืืช ืืจืื, ืืืืื, ืืช ืฉืคืช ืืชืืืืจ ืืฉืคื ืืื, ืืคืืื ืืืืืืื, ืืืืืจืช ืืจืื ืืืชืจ, ืืืืืืื ืืืืจ ืฉืื ืืขืฆื ืื ืจืข ืืืืคื ืขืงืจืื ื. ืืืชื ืืืืืืช ืืื ืื:
- ืื, ืืืจื ื ืฉืืข ืืื, ืืื ืืืื, ืืื ืื ืืืฉื
- ืืฉืืื ืืืื ืืืจืกืืืืืช ืืจืืกืื ืืฉืชื ื ืืคืืื ืืื ืืชืืืืืืช IT - ืื ืืืื ืืืื ืืช ืืงืืจืก ืืืงืืื
- ืืืกืืฃ, ืืคื ืฉื ืจืื, ืืคืืขื ืื ืื ืื ื ืืจืฉ, ืฉืื ื ืขืฉื ืฉืืืืฉ ืจืง ืืชืช-ืงืืืฆื ืืืืืืช ืืคืืื ืฉื ื-TL ืฉืชืืืจ
ืืื ืฉื ืืืจ #perl
ืืจืฉืช FreeNode IRC, ืฉื ืืกื ืืืืฉื ืฉืขืจ ืืืืืจื ืืืืจืืงืก (ืชืจืืื ืืฆืืืื ืืื ื ืืืืืง ืืืืืืจืื):
ืื ืืจืืืฉ ืืืืื ืืืฉืื ืืชืืืืข ืืชืืจืช ืืงืืืืื ืืคืขื ืืจืืฉืื ื, ืืชืืื ืืืชืืื ืื ืกืืช ืืฉืืง ืืืชื, ืื ืืืฉ ืืืคืช ืื ืื ืื ื ืืืฅ ืืคืืขื.
ืชืจืื ืืขืฆืื ืื ืืฆืืจื ืืืืคืืก ืืฉืืฃ (int, long ืืื') ืืืฉืื ืืืื ืืจื ืื ืืขืื ืฉืืืืช - ืืกืืคื ืฉื ืืืจ ืืฉ ืืืืฉื ืืืชื ืืืืคื ืืื ื - ืืืฉื, ื ืืงื ื ืืกืืื ืืืคืืง ืืื ืืงืืืจ. ืืืืืจ, ืืืขืฉื, ืืขืจื, ืื ืืชื ืงืืจื ืืืืจืื ืืืชืงืืืื ืืฉืื ืื ืืื.
ืืื ืืคื ื
ืชืืืืจ ืงืฆืจ ืฉื ืชืช-ืงืืืฆื ืฉื ืชืืืืจ TL ืืื ืฉืื ืงืืจื ืืช ืืชืืขืื ืืจืฉืื
constructor = Type;
myVec ids:Vector<long> = Type;
fixed#abcdef34 id:int = Type2;
fixedVec set:Vector<Type2> = FixedVec;
constructorOne#crc32 field1:int = PolymorType;
constructorTwo#2crc32 field_a:long field_b:Type3 field_c:int = PolymorType;
constructorThree#deadcrc bit_flags_of_what_really_present:# optional_field4:bit_flags_of_what_really_present.1?Type = PolymorType;
an_id#12abcd34 id:int = Type3;
a_null#6789cdef = Type3;
ืืืืืจื ืชืืื ืืชืืืื ืืขืฆื, ืืืืจ ืืื ืืืคืฆืืื ืื (ืืคืืขื - ืชืืื) ืืจื ืืกืื #
ืืืื ืืืืืช CRC32 ืืืืจืืืช ืืชืืืืจ ืืื ืืจืืืช ืืกืื ืื. ืืืืจ ืืื ืืืืข ืชืืืืจ ืฉื ืืฉืืืช; ืื ืื ืงืืืืื, ืืกืื ืขืฉืื ืืืืืช ืจืืง. ืื ืื ืืกืชืืื ืืกืืื ืฉืืืืื, ืฉื ืืืืคืืก ืฉืืืื ืฉืืื ืืื ืื ืืื - ืืืืืจ, ืืืขืฉื, ืชืช-ืืืืคืืก. ืืืืืจ ืืืืื ืืกืืื ืืฉืืื ืืื ืจึทื ืฆืึผืจืึนืช - ืืืืืจ, ืืื ืกืืืื ืกืคืฆืืคืืื ืืืืืื ืืืชืืื ืืื.
ืื ืืืืืจื ืืชืจืืฉืช ืืืจื ืืฉืืจื ---functions---
, ืื ืืชืืืืจ ืืืฉืืจ ืืื, ืืื ืืืฉืืขืืช ืชืืื ืฉืื ื: ืืื ืื ืืืคืื ืืฉื ืืคืื ืงืฆืื RPC, ืืฉืืืช ืืืคืื ืืคืจืืืจืื (ืืื, ืืืืืจ, ืื ืืืฉืืจ ืืืืืง ืืืชื ืืื ื ื ืชืื, ืืคื ืฉืืชืืืจ ืืืื , ืื ืคืฉืื ืชืืื ืืืฉืืขืืช ืืืืงืฆืืช), ืื"ืืืคืืก ืืคืืืืืืจืคื " - ืกืื ืืชืืฆืื ืืืืืืจืช. ื ืืื, ืื ืขืืืื ืืืฉืืจ ืคืืืืืืจืคื - ืจืง ืืืืืจ ืืกืขืืฃ ---types---
, ืืื ืื ืื ืื "ืื ืืืืฉื". ืืขืืกืช ืืชืจ ืฉื ืกืืื ืืคืื ืงืฆืืืช ืื ืงืจืืืช ืขื ืืื ืืืจืืืื ืืื ืฉืืื, ืืืืืจ. ืืกืืื ืืืฉืื, ืืกืคืจ ืคืื ืงืฆืืืช ืขื ืืืชื ืฉื ืื ืืชืืืืช ืฉืื ืืช, ืืื ื-C++, ืืื ื ืืกืืคืงืืช ื-TL.
ืืื "ืงืื ืกืืจืืงืืืจ" ื"ืคืืืืืืจืคื" ืื ืื ืื OOP? ืืืื, ืืืขืฉื, ืืืืฉืื ืืืื ืงื ืืืชืจ ืืืฉืื ืขื ืื ืืืื ืื OOP - ืืืคืืก ืคืืืืืืจืคื ืืืืืงื ืืืคืฉืืช, ืืื ืืื ืื ืืืืงืืช ืฆืืฆืืื ืืฉืืจืื ืฉืื, ื final
ืืืจืืื ืืืืืื ืฉื ืืกืคืจ ืฉืคืืช. ืืืขืฉื, ืืืืื, ืจืง ืืื ืึดืืืึนื ืขื ืฉืืืืช ืื ืื ืขืืืกืืช ืืื ืืฉืคืืช ืชืื ืืช OO. ืืืืืื ืฉืืื ืจืง ืืื ื ื ืชืื ืื, ืืื ืฉืืืืช (ืืืจืืช ืฉืชืืืืจ ืืคืื ืงืฆืืืช ืืืฉืืืืช ืขืื ืืืชืจ ืืกืืื ืืืฆืืจ ืืืืื ืืจืืฉ ืฉืื ืงืืืืื, ืืื ืื ืขื ืืื ืืืจ) - ืืคืฉืจ ืืืฉืื ืขื ืื ืื ืืขืจื ื- ืืืื ื ืื ื ืืงืื ืืขืช ืงืจืืืช ืืจื ืืชืื.
ืืื ืื ืงืืจื? ื-deserializer, ืฉืชืืื ืงืืจื 4 ืืชืื, ืจืืื ืืช ืืขืจื 0xcrc32
- ืืืืื ืื ืืงืจื ืืืจ ืื field1
ืขื ืกืื int
, ืืืืืจ ืงืืจื ืืืืืง 4 ืืชืื, ืขื ืื ืืฉืื ืฉืืขื ืขื ืืกืื PolymorType
ืืงืจืื. ืจืืื 0x2crc32
ืืืืื ืฉืืฉ ืฉื ื ืชืืืืื ื ืืกืคืื, ืจืืฉืืช long
, ืืืืืจ ืื ื ืงืืจืืื 8 ืืชืื. ืืืืจ ืื ืฉืื ืืืคืืก ืืืจืื, ืฉืืกืืจืื ืืืชื ืืืืชื ืืืคื. ืืืืืื, Type3
ื ืืชื ืืืืจืื ืืืขืื ืืจืืข ืฉืฉื ื ืื ืืื, ืืืชืืื, ืื ืื ืืืืืื ืืืืคืืฉ ืขื ืืื ืืื 0x12abcd34
, ืืืืจ ืืื ืืชื ืฆืจืื ืืงืจืื 4 ืืชืื ื ืืกืคืื int
ืื 0x6789cdef
, ืฉืืืจืื ืื ืืืื ืืืื. ืื ืืืจ ืืืจ - ืืชื ืฆืจืื ืืืจืืง ืืจืื. ืืื ืืงืจื, ืืืจื ืื ืื ืื ื ืืืืจืื ืืงืจืื 4 ืืชืื int
ืฉืืืช field_c
ะฒ constructorTwo
ืืขื ืื ืื ืื ื ืืกืืืืื ืืงืจืื ืืช ืฉืื ื PolymorType
.
ืืืกืืฃ, ืื ืชืืชืคืก 0xdeadcrc
ืขืืืจ constructorThree
, ืืื ืืื ืืืคื ืืกืืื ืืืชืจ. ืืชืืื ืืจืืฉืื ืฉืื ื ืืื bit_flags_of_what_really_present
ืขื ืกืื #
- ืืืขืฉื, ืื ืจืง ืืื ืื ืืกืื nat
, ืืืืืจ "ืืกืคืจ ืืืขื". ืืืืืจ, ืืืขืฉื, int unsigned ืืื, ืืื, ืืืงืจื ืืืืื ืืืฉืจ ืืกืคืจืื ืืกืจื ืกืืื ืืชืจืืฉืื ืืืขืืืื ืืืืชืืื. ืื, ืืื ืืื ืื ืืื ืขื ืกืืื ืฉืืื, ืืืืืจ ืืฉืื ืืื - ืืื ืืืื ืงืืื ืขื ืืืื ืจืง ืื ืืกืืืืช ืืืงืืืื ืืืืืจืช ืืฉืื ืฉืืืื ืืชืืืืกืื (ืืขืจื ืืื ืืืคืจืืืจ ืืจืื ืจื). ืื, ืืืื ื ื ืื ืฉืืืื ืืื ืืืืืจ, ืื ืฉืืืืจ ืฉืขืื ืขืืื ื ืืงืจืื ืฉืื ืืื Type
, ืฉืืืืืื ืฉืื ื ืืฉ 2 ืื ืืื. ืืื ืจืืง (ืืืจืื ืจืง ืืืืืื), ืืฉื ื ืืฉ ืฉืื ids
ืขื ืกืื ids:Vector<long>
.
ืืชื ืขืฉืื ืืืฉืื ืฉืื ืืชืื ืืืช ืืื ืืื ืจืืืช ื ืืฆืืืช ืืืงืฆืืขื ืื ืื ื-Java. ืืื ืื. ืึผึดืืขึทื. ืึถื ืืืื ืืืงืจื ืฉื ืฉืืืืฉ ืืกืืืจืืื ืืืืืช ืืืขืืืื ืืืืชืืื, ืืืื ืืฉืืฉ ืจืง ืขืืืจ ืืงืืืจ. ืืืจื ืืชืื, ืืื ืืืื 4 CRC32 ืืชืื ืขืืืจ ืกืื ืืืงืืืจ ืขืฆืื, ืชืืื ืืืื, ืืืืจ ืืื 4 ืืชืื - ืืกืคืจ ืจืืืื ืืืขืจื, ืืืืืจ ืืื ืืืืื ืืื ืืืื ืขืฆืื.
ืชืืกืืคื ืืื ืืช ืืขืืืื ืฉืืกืืจื ืชืืื ืืชืจืืฉืช ืืืืืื ืฉื 4 ืืชืื, ืื ืืกืืืื ืื ืืคืืืืช ืฉืื - ืื ืืกืืืื ืืืืื ืื ืืชืืืจืื bytes
ะธ string
ืขื ืกืืจื ืืื ืืช ืฉื ืืืืจื ืืืืืฉืืจ ืืื ื-4 - ืืืื, ื ืจืื ืฉืื ื ืฉืืข ื ืืจืืื ืืืคืืื ืืขืื ืืืกืืช? ืืืจืืช ืฉืืืขื ืช TL ืื ืกืืจื ืืื ืืจืืช ืืขืืื, ืืขืืืื ืืืชื, ืขื ืืจืืื ืฉื ืืืขื ืื ืืืจ, ืืคืืื ืขืจืืื ืืืืืื ืืื ืืืืจืืืืช ืฉื ืชื ืืืื ื-4 ืืชืื, ืืื ื-JSON ืขืืืื ืืืื ืืจืื ืืืชืจ ืขืื? ืชืจืื, ืืคืืื ืฉืืืช ืืืืชืจืื ืืคืฉืจ ืืืื ืขื ืืืื ืืื, ืืื ืื ืืื, ืืืคืืื ื ืืชื ืืืจืืื ืืขืชืื, ืื ืืื ืื ืืืืกืืฃ ืฉืืืช ืืืคืฆืืื ืืืื ืืืฉืื ืืื ืื ืืืืืจ ืืืชืจ?..
ืืื ืื, ืื ืืชื ืื ืงืืจื ืืช ืืชืืืืจ ืืงืฆืจ ืฉืื, ืืื ืืช ืืชืืขืื ืืืื, ืืืืฉื ืขื ืืืืฉืื. ืจืืฉืืช, ื-CRC32 ืฉื ืืื ืื ืืืืฉื ืืคื ืืฉืืจื ืืื ืืจืืืช ืฉื ืชืืืืจ ืืืงืกื ืฉื ืืกืืืื (ืืกืจ ืจืืื ืืื ื ืืกืฃ ืืื') - ืื ืฉืื ืืชืืืกืฃ ืฉืื ืืืฉ, ืฉืืจืช ืชืืืืจ ืืกืื ืชืฉืชื ื, ืืืืื ืฉืื CRC32 ื- , ืืชืืฆืื ืืื, ืกืืจื. ืืื ืืขืฉื ืืืงืื ืืืืชืืง ืื ืืงืื ืฉืื ืขื ืืืืื ืืืฉืื, ืืืื ืื ืืืืข ืื ืืขืฉืืช ืืืชื ืืืื?...
ืฉื ืืช, ืืืื ื ืืืืจ CRC32, ืืืฉืืฉ ืืื ืืขืืงืจื ื ืคืื ืงืฆืืืช ืืฉืืฉ ืืื ืืงืืืข ืืืืคื ืืืืืื ืืืื ืกืื ืืืขืืจ (ืื) ืืกืืืจื. ืืื ืื ื ืืชืืืืืื ืขื ืืขืืืช ืืืชื ืืฉืืืืช - ืืื, ืืืกืชืืจืืช ืืื ืื ืืืช ื-232, ืืื ืืจืื ืืืชืจ ืืืืื. ืื ืืืจ ืฉ-CRC32 ื ืืขื ืืืืืช (ืืืชืงื) ืฉืืืืืช ืืขืจืืฅ ืืชืงืฉืืจืช, ืืืืชืื ืืฉืคืจ ืืช ืืืืคืืื ืื ืืืื ืืจืขืช ืืืจืื? ืืืืืื, ืื ืืืคืช ืื ืืืจืืื ืืืืฉ ืฉื ืืชืื: ืื ืชืืฉื CRC32 ืืฉืชื ืฉืืจืืช, ืืฉื ืื ืชืืืืฃ ืืช 4 ืืืชืื ืืจืืฉืื ืื ืขื 4 ืืืชืื ืืืืื - ืื ืืืื ืืื. ืืืฉืจ ืืงืื ืฉืื ื ืืื ืืืจืืืืช ืืงืกื ืืืืืคืืืช ืืืืื ื (ืืืขื ืกืืื ื ืคืืกืืง), ืืืฉืืืช ืืืื ืืื ื ืืงืจืืืื ืืืืืื, ืืกืืืจืืช ืืกืืืืจ ืืืืฉ ืืื ืขืืื ืืืื.
ืืื, ืื ืืืง ืื ืืฉ? ืืืืช CRC32? ืืืื ืืงืืื ืืืงืืจ ืืืืงืืืื (ืืคืืื ืืคื ื ืืืืืื) ืืืืชื ืคืื ืงืฆืืืช Hash ืฉืืืคืืื ืื ืชื ืืืกืคืจ 239, ืื ืื ืืืืื ืขื ืืื ืฉืื ืืืื, ืื ืื!
ืืืกืืฃ, ืืกืืจ, ืืื ื ืฉืงืื ืกืืจืืงืืืจืื ืขื ืกืื ืฉืื Vector<int>
ะธ Vector<PolymorType>
ืืืื CRC32 ืฉืื ื. ืื ืืืื ืืืฆืืขืื ืืงืืื ืื? ืืื ืงืืืช ืืื ืชืืืืจืืืช, ืืื ืื ืืืคื ืืืืง ืืืกืื? ื ื ืื ืฉืื ืื ื ืขืืืจืื ืืขืจื ืฉื ืขืฉืจืช ืืืคืื ืืกืคืจืื, ืืื ืขื Vector<int>
ืืื ืืจืืจ, ืืืืจื ืืขืื 40000 ืืชืื. ืื ืื ืื Vector<Type2>
, ืืืืจืื ืืฉืื ืืื ืืืื int
ืืื ืืื ืืกืื - ืืื ืื ืื ื ืฆืจืืืื ืืืืืจ ืขื 10000xabcdef0 34 ืคืขืืื ืืื 4 ืืชืื int
, ืื ืฉืืฉืคื ืืกืืืืช ืื ืชื ืืืชื ืขืืืจื ื ืืืงืื ืกืืจืืงืืืจ fixedVec
ืืืืงืื 80000 ืืชืื, ืืืขืืืจ ืฉืื ืจืง 40000?
ืื ืื ืฉืืื ืชืืืืจืืืช ืกืจืง ืืืื - ืืืืื ื ืฉืืชื ืืงืืืื ืจืฉืืื ืฉื ืืฉืชืืฉืื ืืงืืืฆื, ืฉืืื ืืื ืืื ืืฉ ืชืขืืื ืืืื, ืฉื ืคืจืื, ืฉื ืืฉืคืื - ืืืืื ืืืืืช ืื ืชืื ืื ืืืืขืืจืื ืืืืืืจ ืกืืืืจื ืืืื ืืืืืช ืืฉืืขืืชื. ืืืืงื ืืืคืงืืืืืืช ืฉื ืืกืืจืช ืืืืจื ืืชืคืจืกืืช ืื ื.
ืื ...
ืืงืืืจ, ืฉืืขืืื ืื ืฉืืืจืจ
ืื ืชื ืกื ืืืคืืฃ ืืื ืืคื ืืชืืืืจ ืฉื ืฉืืืืืื ืืื ืืืื, ืชืจืื ืฉืืืงืืืจ (ืืืคืืื ืืืจืืฆื) ืื ืกื ืจืฉืืืช ืืืืืช ืคืื ืืจื ืืืคืืื ืฉื ืืกืคืจ ืืืืืื ืืช. ืืื ืืกืืฃ ืื ืฉืืืืื, ืืืืืื ืขื ืืฉืื ืืืืจืื, ืืคืฉืื ื ืืชื ืช ืืืืจื ืฉื ืืงืืืจ, ืฉืขืืืื ืื ืงืฉืืจ ืืืืคืืก. ืื ืืืขืื? ืืฉืคืืช ืชืื ืืช, ืืืืืื ืคืื ืงืฆืืื ืืืื, ืื ืืืคืืื ื ืืชืืจ ืืช ืืืื ื ืืืืคื ืจืงืืจืกืืื - ืืืืืจ ืขื ืืืขืจืื ืืขืฆืื ืฉืื ืืืื ืืืขืฉื ืืื ืืขืฆืื. ืืฉืคื ืืกืืจืช ื ืชืื ืื ืื ืฉืฆืจืื ืื ืืขืืืืช: ืืกืคืืง ืืชืืจ ืืคืฉืืืช ัะฟะธัะพะบ, ืืืืืจ ืืื ื ืฉื ืฉื ื ืืืื ืืื - ืืจืืฉืื ืืื ืืืื ื ื ืชืื ืื, ืืฉื ื ืืื ืืืชื ืืื ื ืขืฆืื ืื ืืื ืจืืง ืขืืืจ ืืื ื (ืืืืื (cons)
ืืืืกืค). ืืื ืื ืืืืื ืืืจืืฉ ืื ืืืื ื ืืืฆืื 4 ืืชืื ื ืืกืคืื (CRC32 ืืืงืจื ื-TL) ืืื ืืชืืจ ืืช ืืกืื ืฉืื. ื ืืชื ืื ืืชืืจ ืืขืจื ืืงืืืช ืืืื ืงืืืขื, ืืื ืืืงืจื ืฉื ืืขืจื ืืืืจื ืื ืืืืข ืืจืืฉ, ืื ืื ื ืืชื ืชืงืื.
ืืื, ืืืืืื ืฉ-TL ืืื ื ืืืคืฉืจ ืืืืฆืื ืืงืืืจ, ืืื ืฆืืจื ืืืืกืืฃ ืืืชื ืืฆื. ืืกืืคื ืฉื ืืืจ ืืชืืขืื ืืืืจ:
ืกืจืืืืืืฆืื ืืฉืชืืฉืช ืชืืื ืืืืชื ืืื ืื "ืืงืืืจ" (const 0x1cb5c415 = crc32("vector t:Type # [ t ] = Vector t") ืฉืืื ื ืชืืื ืืขืจื ืืกืคืฆืืคื ืฉื ืืืฉืชื ื ืืกืื t.
ืืขืจื ืฉื ืืคืจืืืจ ืืืืคืฆืืื ืื t ืืื ื ืืขืืจื ืืกืจืืืืืืฆืื ืืืืืื ืฉืืื ื ืืืจ ืืกืื ืืชืืฆืื (ืืืืข ืชืืื ืืคื ื ืืกืืืจืืืืืืฆืื).
ืชืกืชืื ืืงืจืื: vector {t:Type} # [ t ] = Vector t
- ืืื ืืฉืื ืืงืื ืืืืจื ืื ืขืฆืื ืื ืืืืจืช ืฉืืืกืคืจ ืืจืืฉืื ืืืื ืืืืืช ืฉืืื ืืืืจื ืืืืงืืืจ! ืืื ืื ืื ืืฉืื ืืงืื. ืื ื ืชืื ืฉืฆืจืื ืืืืืจ ืืืืืฉื ืขื ืืืืืื. ืืืงืืืืช ืืืจืื, ืืชืืขืื ืืคืืื ืืืืืจ ืืื ืืช ืฉืืืืคืืก ืืื ื ืืืืชื:
ืืคืกืืืืืืืืค ืืคืืืืืืจืคื ืฉื Vector t ืืื "ืืืคืืก" ืฉืขืจืื ืืื ืจืฆืฃ ืฉื ืขืจืืื ืืื ืกืื t, ืืื ืื ืืงืืคืกืช ืื ืืฉืืคื.
... ืืื ืื ืืชืืงื ืืื. ืืฉืืชื, ืขืืืคืื ืืืฉืชืคืฉืฃ ืืืชืืืืช ืฉื ืืืชืืืืงื (ืืืื ืืคืืื ืืืืจ ืืื ืืงืืจืก ืืืื ืืืจืกืืื), ืืืืืืื ืืืืชืจ ืืืืขืฉื ืืืื ืื ืืื ืขืืืืื ืขื ืื ืืคืืขื, ืืจืืฉื ืฉื ืืชืจ ืืจืืฉืื ืืื ืฉืืืืืจ ืืจืฆืื ืืช ืืชืืืืงื ืืืกืืกื, ืืจืืจ ืฉืืื ืืืืฆืื ืขื ืืื Cool People (ืฉื ื ืืชืืืืงืืื - ืืืื ACM), ืืื ืกืชื ืืืฉืื. ืืืืจื - ืืืฉืืืืฅ - ืืืฉืื.
ืืื, ืืืื ืืืกืคืจ. ืชื ืื ื ืืืืืืจ ืื ืืช ืื
#
ืื ืืืื ื ืจืืคืชnat
, ืืกืคืจ ืืืขื:ืืฉ ืืืืืื ืกืื (type-expr) ืืืืืืืื ืืกืคืจืืื (nat-expr). ืขื ืืืช, ืื ืืืืืจืื ืืืืชื ืืืคื.
type-expr ::= expr nat-expr ::= expr
ืืื ืืืงืืืง ืื ืืชืืืจืื ืืืืชื ืืืคื, ืืืืืจ. ืืฉ ืืืืืจ ืฉืื ืืช ืืืืื ืืื ืืืืื ืืก ืืืชื ืืืืฉืื ืืืืคื ืืื ื.
ืืืื, ืื, ืกืืื ืชืื ืืืช (vector<int>
, vector<User>
) ืืขืื ืืืื ืืฉืืชืฃ (#1cb5c415
), ืืืืืจ. ืื ืืชื ืืืืข ืฉืืฉืืื ืืืืจืื ื
users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>;
ืื ืืชื ืืืจ ืื ืืืื ืจืง ืืืงืืืจ, ืืื ืืืงืืืจ ืฉื ืืฉืชืืฉืื. ืืืืชืจ ืืืืง, ืฆืจืื ืจืืข - ืืงืื ืืืืชื, ืืื ืืืื ื, ืื ืื ืกืื ืืฉืืฃ, ืืืื ืื ืื, ืืืฆืืจื ืืืื ืืืืฉืื ืืืื ืฆืืจื ืืืืืง - ืืื ื ืฉืืื ื ืืืืืง ืืื ืืืื ื ืฉื ืืืืงืืืจ ืืื ืืกืื ืืื? ืื ืื ืื ืืื ืกืื ืฉื PHP, ืฉืื ืืขืจื ืืืื ืืืืื ืกืืืื ืฉืื ืื ืืืืื ืืื ืฉืื ืื?
ืืฉืื ืื ืืชื ืืชืืื ืืืฉืื - ืืื TL ืืื ืืืจืื? ืืืื ืขืืืจ ืืขืืื ืืคืฉืจ ืืืื ืืืฉืชืืฉ ืืกืจืืืืืืืจ ืื ืืฉื, ืืืชื ืคืจืืืืืืฃ ืฉืืืจ ืืื ืงืืื ืื? ืื ืืืืชื ืืชืืืืจืื, ืืืื ื ืกืชืื ืขื ืืคืจืงืืืงื.
ืืืืืฉื TL ืงืืืืื ืืงืื
TL ื ืืืื ืืืขืืงื VKontakte ืขืื ืืคื ื ืืืืจืืขืื ืืืคืืจืกืืื ืขื ืืืืจืช ืืืงื ืฉื ืืืจืื ื-(ืืืืืื), ืขืื ืืคื ื ืชืืืืช ืืคืืชืื ืฉื ืืืืจื. ืืืงืื ืคืชืื
Templates are not used now. Instead, the same universal constructors (for example, vector {t:Type} [t] = Vector t) are used w
ืืื ืืื ื ืฉืงืื, ืืืขื ืืฉืืืืช, ืืืชืืงืืช, ืืืืืื, ืืืจ ืืชืคืชืืืชื ืฉื ืขื ืง ืืืืฉืื.
#define ZHUKOV_BYTES_HACK
#ifdef ZHUKOV_BYTES_HACK
/* dirty hack for Zhukov request */
ืื ืืืคื ืืืืช:
static const char *reserved_words_polymorhic[] = {
"alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta", NULL
};
ืืคืจืืื ื ืืื ืขืืกืง ืืชืื ืืืช ืืื:
intHash {alpha:Type} vector<coupleInt<alpha>> = IntHash<alpha>;
ืืืื ืืืืืจื ืฉื ืกืื ืชืื ืืช hashmap ืืชืืจ ืืงืืืจ ืฉื ืืืืืช int - Type. ื-C++ ืื ืืืจืื ืืขืจื ืื:
template <T> class IntHash {
vector<pair<int,T>> _map;
}
ืื, alpha
- ืืืืช ืืคืชื! ืืื ืจืง ื-C++ ืืคืฉืจ ืืืชืื T, ืืื ืฆืจืื ืืืชืื ืืืคื, ืืื... ืืื ืื ืืืชืจ ื-8 ืคืจืืืจืื, ืฉื ืืกืชืืืืช ืืคื ืืืื. ื ืจืื ืฉืคืขื ืืกื ื ืคืืจืกืืืจื ืืชืงืืืื ืืืืืืืื ืืื ืื:
-- ะะฐะดะพ ัะดะตะปะฐัั ะฒ TL ัะฐะฑะปะพะฝั
-- ะะป... ะั ะฟัััั ะฟะฐัะฐะผะตััั ะทะพะฒัั ะฐะปััะฐ, ะฑะตัะฐ,... ะะฐะบะธะต ัะฐะผ ะตัั ะฑัะบะฒั ะตััั... ะ, ัััะฐ!
-- ะัะฐะผะผะฐัะธะบะฐ? ะั ะฟะพัะพะผ ะฝะฐะฟะธัะตะผ
-- ะกะผะพััะธัะต, ะบะฐะบะพะน ั ัะธะฝัะฐะบัะธั ะฟัะธะดัะผะฐะป ะดะปั ัะฐะฑะปะพะฝะพะฒ ะธ ะฒะตะบัะพัะฐ!
-- ะขั ะดะพะปะฑะฐะฝัะปัั, ะบะฐะบ ะผั ััะพ ะฟะฐััะธัั ะฑัะดะตะผ?
-- ะะฐ ะฝะต ััััะต, ะพะฝ ัะฐะผ ะพะดะธะฝ ะฒ ัั
ะตะผะต, ะทะฐั
ะฐัะบะพะดะธัั -- ะธ ะพะบ
ืืื ืื ืืื ืืขืจื ืืืืฉืื ืืจืืฉืื ืฉืคืืจืกื ืฉื TL "ืืืื". ืืืื ื ืขืืืจ ืืฉืงืื ืืืืขืืช ืืืงืืืืช ืืืืืจื ืขืฆืื.
ืืืื ืืืืกืืื:
ืืกืืื, [09.10.18 17:07] ืืืชืจ ืืื, ืืชืืช ืืืื ืื ืื ืืฆืจื ืืืืจื ืฉื ืืคืฉืืืช, ืืืืืจ ืืื ืชืงืขื ืขืืืื ืืืจื ืืืืกื ืืช ืืืืื ืืงืื ืืงืืืื
ืืชืืฆืื ืืื, ืชืืืื ื dock pilot.jpg
ืืื ืืืงืื dzhekichan.webp
ืืืืื, ืืื ืฉืื ืฉืืืืจืื ืืืืืจืืชืืื ืืืชืืืืงื, ืื ื ืืืืืื ืืฆืคืืช ืฉืื ืงืจืื ืืช Aho, Ullmann, ืืื ืืืืจืื ืืช ืืืืื ืฉืืคืื ืืกืื ืืจื ืื ืคืงืื ืืชืขืฉืืื ืืืฉื ืขืฉืจืืช ืืฉื ืื ืืืชืืืช ืืืืจื DSL ืฉืืื, ื ืืื?..
ืึฐืึทืึผึตืจ
16.12 04:18 ืืกืืื: ืื ื ืืืฉื ืฉืืืฉืื ืื ืฉืื ืืืงืก+ืืืง
16.12 04:18 ืืืกืืื: ืื ื ืื ืืืื ืืืกืืืจ ืืช ืื ืืืจืช
16.12 04:18 ืืกืืื: ืืื, ืื ืฉืืืื ืืื ืขื ืืกืคืจ ืืฉืืจืืช ื-VK
16.12 04:19 ืืืกืืื: 3k+ ืงืืืื ืืื'<censored>
ืืืงืื ืื ืชื
ืืืื ืืจืื? ืืื ื ืจืื ืืื
nametype = re.match(r'([a-zA-Z.0-9_]+)(#[0-9a-f]+)?([^=]*)=s*([a-zA-Z.<>0-9_]+);', line);
if (not nametype):
if (not re.match(r'vector#1cb5c415 {t:Type} # [ t ] = Vector t;', line)):
print('Bad line found: ' + line);
1100+ ืฉืืจืืช ื-Python, ืืื ืืืืืืื ืจืืืืจืืื + ืืงืจืื ืืืืืืื ืืื ืืงืืืจ, ืฉืืืืื ืืืฆืืจ ืืกืืื ืืคื ืฉืืื ืฆืจืื ืืืืืช ืืคื ืชืืืืจ TL, ืืื ืื ืืกืชืืื ืขื ืืชืืืืจ ืืื ืืื ืื ืชื ืืืชื... ื ืฉืืืช ืืฉืืื, ืืื ืื ืื ืืื ื ืก?ะธืื ืืืชืจ ืืจืืื ืื ืืฃ ืืื ืื ืืชืืืื ืื ืชื ืืช ืื ืืคื ืืชืืขืื ืืื ืืงืจื?!
ืืื... ืืืืจืื ืฉืืืืจื ื ืขื ืืืืงืช CRC32? ืื, ืืืืืื ืืงืื ืฉื Telegram Desktop ืืฉ ืจืฉืืื ืฉื ืืจืืืื ืขืืืจ ืืืชื ืกืืืื ืฉืืื CRC32 ืืืืืฉื ืื ืืชืืื ืขื ืื ืฉืืฆืืื ืืชืจืฉืื!
ืืืกืืื, [18.12/22 ืื:49] ืืืื ืืืืชื ืืืฉื ืื ืฆืจืื ืช"ื ืืื
ืื ืืืืชื ืจืืฆื ืืืชืขืกืง ืขื ืืืฉืืืื ืืืืจื ืืืืืื, ืืืืชื ืืชืืื ืืืื ืืก ืืขืืจื ืฉืืจืืช, ืืฆื ืืืื ืชืืื ืืฉืืจื ืืืืืจืืช ืืจืืืืช ืฉืืจืืช
ืขื ืืืช, ืื tdesktop
ืืืจื ืืช ืื ืงืืื ืืขื ืืื ืืืื-ืืืื ืจ, ื ืืืืจ ืืืื ืืขื ืืืืืจ ืืืชืจ.
ืืืงืื, telegram-cli ืื ืจืฉืื, Telegram Desktop ืจืฉืื, ืืื ืื ืขื ืืืืจืื? ืื ืืืืข?.. ืืงืื ืืืงืื ืฉื ืื ืืจืืืื ืื ืืื ืื ืชื ืกืืื ืืืื (ืื ืฉืืขืื ืฉืืืืช ืืืื ืงืื ืคืชืื, ืืื ืื ืืืืง ืืฉื ื), ืืื ืืื ืขืื ืืื ืงืืขื ืงืื ืืฆืืืงืื, ืืื ืขืื ืขืืืื ื- ืกืขืืฃ ืงืื ืืืื.
ืืืื ืฉืืืืช ื ืืกืคืืช ืืขืืจืจืช ืืืืฉืื ืืคืืขื? ืืืืืื, ืื ืขืฉื ืืจืื ืืืจืื, ืืืืื, ืขื ืฉืืืช ืกืืืืืช ืืฉืืืช ืืืชื ืื:
ืืืกืืื:
flags.0? true
ืคืืจืืฉื ืฉืืฉืื ืงืืื ืืฉืืื ืืืช ืื ืืืื ืืืืืจืืืกืืื:
flags.1? int
ืคืืจืืฉื ืฉืืฉืื ืงืืื ืืฆืจืื ืืืคืื ืืืชื ืืกืืืจืืืืืืฆืืืืืกืืื: ืชืืช, ืื ืชืืื ืืืื ืื ืฉืืชื ืขืืฉื!
ืืืกืืื: ืืฉ ืืืืืจ ืืืคืฉืื ืืืกืื ืฉืืื ื ืืื ืกืื ืืฉืืฃ ืืืืจื ืืคืก, ืืื ืื ืืคืฉืจ ืืืจืืื ืฉืื ืืืจ ืืืืกืื ืฉืืื
ืืืกืืื: ืื ืืืืฉืืื ืงืื ืคืชืื ืื ืื ืืืงืจื, ืืื ืืฉ ืืืืจื ืฉื ืงืืืื ืืชืืืืืช
ืื ืขื ืืืืื? ืืืกืชืืืืช ืงืืืื ืื ืืฉื ืฉื MTProto, ืืืืื - ืืชืืขืื ืืฉ ืงืืขืื ืืืื, ืืื ืืกืืื %
ืืื ืืชืืืจ ืจืง ื"ืืชืืื ืืกืื ืืฉืืฃ ื ืชืื", ืืืืืจ. ืืืืืืืืช ืฉืืืื ืืฉ ืฉืืืื ืื ืืฉืื ืื ืืชืืขื:
ืืืกืืื, [22.06.18 18:38] ืืืงืื ืืื:
msg_container#73f1f8dc messages:vector message = MessageContainer;
ืืฉืื ื:
msg_container#73f1f8dc messages:vector<%Message> = MessageContainer;
ืืืื ืฉื ื ืืืืืื ืืืืืื, ืืืืื ืืืืืชืืื ืืืืข ืืืื ืืงืืืจ ืขืืจืื
ืื ืจืืืชื ืืืืจื ืืงืืืจืืช ืืฉืืคื ืืื ื ืชืงืืชื ืื
ืื ืืชืื ื ืืชื ืืื ืืืืืื
ืืชืจืฉืื ืฉืื ืืืืืจื ืืืขืจืช
msg_container
ืฉืื, ืืฉืืื ื ืฉืืจืช ืืขืจื %. ืื ืื ืืชืืืจ.
ืืืืื ืืื ืฆ'ืจืื, [22.06.18 19:22] ืื-tdesktop?
ืืืกืืื, [22.06.18 19:23] ืืื ืื ืชื ื-TL ืฉืืื ืืื ืืขืื ืจืืืืื ืกืืืจ ืืื ืื ืฉืื ืื ืืืื ืืช ืื
// parsed manually
TL ืืื ืืคืฉืื ืืคื, ืืฃ ืืื ืื ืืืืฉื ืืืชื ืืืืืืื
ื-% ืืื ื ืืืจืกื ืฉืืื ืฉื ืืชืืื ืืช
ืืื ืืื ืืชืืขืื ืกืืชืจ ืืช ืขืฆืื, ืื ืืืืฉืื
ืื ื ืืฆื ืืืงืืืง, ืื ืืืื ืคืฉืื ืืฉืืื ืืชืืจ ืืช ืืกืื ืืืงื
ืจืืืช ืืช ืืืกืื ื-TL, ืืชื ืื ืืืื ืืืืื ืืืชื ืืื ืืฆื ืืืืจ
"ืืื, ื ื ืื", ืืืื ืงืืจื ืืืจ, "ืืชื ืืืงืจ ืืฉืื, ืื ืชืจืื ืื ืืื ืื ืฆืจืื ืืืืขืฉืืช."
ืืืกืืื ืขืื ื: "ืืืื ืืื ืชื, ืื ื ืืืื ืืืจืื ืืื
args: /* empty */ { $$ = NULL; }
| args arg { $$ = g_list_append( $1, $2 ); }
;
arg: LC_ID ':' type-term { $$ = tl_arg_new( $1, $3 ); }
| LC_ID ':' condition '?' type-term { $$ = tl_arg_new_cond( $1, $5, $3 ); free($3); }
| UC_ID ':' type-term { $$ = tl_arg_new( $1, $3 ); }
| type-term { $$ = tl_arg_new( "", $1 ); }
| '[' LC_ID ']' { $$ = tl_arg_new_mult( "", tl_type_new( $2, TYPE_MOD_NONE ) ); }
;
ืืืืฉืื ืืืื ืืช ืื ืืืชืจ ืืื ืืืฉืจ
struct tree *parse_args4 (void) {
PARSE_INIT (type_args4);
struct parse so = save_parse ();
PARSE_TRY (parse_optional_arg_def);
if (S) {
tree_add_child (T, S);
} else {
load_parse (so);
}
if (LEX_CHAR ('!')) {
PARSE_ADD (type_exclam);
EXPECT ("!");
}
PARSE_TRY_PES (parse_type_term);
PARSE_OK;
}
ืื
# Regex to match the whole line
match = re.match(r'''
^ # We want to match from the beginning to the end
([w.]+) # The .tl object can contain alpha_name or namespace.alpha_name
(?:
# # After the name, comes the ID of the object
([0-9a-f]+) # The constructor ID is in hexadecimal form
)? # If no constructor ID was given, CRC32 the 'tl' to determine it
(?:s # After that, we want to match its arguments (name:type)
{? # For handling the start of the '{X:Type}' case
w+ # The argument name will always be an alpha-only name
: # Then comes the separator between name:type
[wd<>#.?!]+ # The type is slightly more complex, since it's alphanumeric and it can
# also have Vector<type>, flags:# and flags.0?default, plus :!X as type
}? # For handling the end of the '{X:Type}' case
)* # Match 0 or more arguments
s # Leave a space between the arguments and the equal
=
s # Leave another space between the equal and the result
([wd<>#.?]+) # The result can again be as complex as any argument type
;$ # Finally, the line should always end with ;
''', tl, re.IGNORECASE | re.VERBOSE)
ืื ื-WHOLE lexer:
---functions--- return FUNCTIONS;
---types--- return TYPES;
[a-z][a-zA-Z0-9_]* yylval.string = strdup(yytext); return LC_ID;
[A-Z][a-zA-Z0-9_]* yylval.string = strdup(yytext); return UC_ID;
[0-9]+ yylval.number = atoi(yytext); return NUM;
#[0-9a-fA-F]{1,8} yylval.number = strtol(yytext+1, NULL, 16); return ID_HASH;
n /* skip new line */
[ t]+ /* skip spaces */
//.*$ /* skip comments */
/*.**/ /* skip comments */
. return (int)yytext[0];
ืึธืึตื. ืคืฉืื ืืืชืจ ืืื ืื ืกื ืืืช ืืขืืื ืืช."
ืืืืคื ืืืื, ืืชืืฆืื ืืื, ืืื ืชื ืืืืืื ืืงืื ืขืืืจ ืชืช-ืงืืืฆืช ืืืฉื ื ืืฉืืืืฉ ืืคืืขื ืฉื TL ืืฉืชืืืื ืื-100 ืฉืืจืืช ืืงืืืง ืื-300 ืฉืืจืืช ืฉื ืืืืืื (ืกืคืืจืช ืื print
ืืงืื ืฉื ืืฆืจ), ืืืื ืืืื ืืืช ืืืืข ืขื ืกืื ืขืืืจ ืืชืืื ื ืืช ืคื ืืืืช ืืื ืืืืงื. ืื ืืืคืืก ืคืืืืืืจืคื ืืืคื ืืืืืงืช ืืกืืก ืืืคืฉืืช ืจืืงื, ืืื ืืื ืืืจืฉืื ืืื ื ืืืฉ ืืื ืฉืืืืช ืืกืจืืืืืืฆืื ืืืื-ืกืจืืืืืืฆืื.
ืืืกืจ ืืืคืืกืื ืืฉืคืช ืืืืคืืก
ืืงืืื ืืืงื ืืื ืืืจ ืืื, ื ืืื? ืื, ืื ืื ืืืืืืจ (ืืืจืืช ืฉืื ื ืืขืืืฃ ืฉืคืืช ืืื ืืืืช), ืืื ืคืืกืืืืฆืื ืืืกืืจืช TL. ืขื ืกืื ืื, ืืฉืคื ืฆืจืืื ืืกืคืง ืื ื ืื ืืื ื ืฆ'ืงืื. ืืื, ืืกืืจ, ืืืื ืื ืืื ืขืฆืื, ืืื ืืืืฉืื, ืืื ืืื ืฆืจืื ืืคืืืช ืืชืืจ ืืืชื. ืืืืื ืกืื ืฉื ืืืืื ืืืืช ืื ืื ื ืจืืฆืื?
ืงืืื ืื, ืืืืืฆืื. ืืื ืื ื ืจืืืื ืืชืืขืื ืืืขืืืช ืงืืฆืื:
ืืชืืื ืืืื ืืจื ืฉื ืืงืืืฅ ืืืืืง ืืืืงืื. ืื ืืืืงืื ืืืืืื ืืืืืช ืืืืชื ืืืื ( ืืืง_ืืืื ) ืืืฉ ืืขืืื ืืชื ืืื ืืืืื:
part_size % 1024 = 0
(ืืชืืืง ื-1KB)524288 % part_size = 0
(512KB ืืืื ืืืืืช ืืชืืืง ืืืืคื ืฉืืื ื-part_size)ืืืืง ืืืืจืื ืืื ื ืืืื ืืขืืื ืืชื ืืื ืืื, ืืชื ืื ืฉืืืืื ืงืื ื-part_size.
ืืื ืืืง ืฆืจืื ืืืืืช ืืกืคืจ ืจืฆืฃ, file_part, ืขื ืขืจื ืฉื ืข ืืื 0 ื-2,999.
ืืืืจ ืืืืงืช ืืงืืืฅ, ืขืืื ืืืืืจ ืฉืืื ืืฉืืืจืชื ืืฉืจืช. ืืืฉืชืืฉ
upload.saveBigFilePart ืืืงืจื ืฉืืืืื ืืืื ืฉื ืืงืืืฅ ืืื ืืืชืจ ื-10 ืืื-ืืืื ืupload.saveFilePart ืขืืืจ ืงืืฆืื ืงืื ืื ืืืชืจ.
[โฆ] ืืืช ืืฉืืืืืช ืงืื ืื ืชืื ืื ืืืืืช ืขืฉืืื ืืืืืช ืืืืืจืช:
- FILE_PARTS_INVALID โ ืืกืคืจ ืืืงืื ืื ืืืงื. ืืขืจื ืืื ื ืืื
1..3000
ืืื ืืฉืื ืืื ืื ืืชืจืฉืื? ืืื ื ืืชื ืืืืืข ืืช ืื ืืืืฉืื ืืืืฆืขืืช TL? ืื. ืืื ืชืกืืื ืื, ืืคืืื ืืืืจืื ืคืกืงื ืฉื ืกืื ืืฆืืื ืืชืืจ ืืช ืืกืืืื ืฉืฆืืื ื ืืืืืื. ืืืื ืืืข ืขืื ืืืจ ืืื, ืฉืขืืฉืื ืืืืข ืืืชืจ ืืฉื enum
- ืกืื ืืืืจืื ืืกืคืืจื ืฉื ืืกืคืจ ืงืืืข (ืงืื) ืฉื ืขืจืืื. ืืฉืคืืช ืืื C - ืืกืคืจืืช, ืฉืืื ืื ืฉืขื ืื ืืืืจื ื ืจืง ืขื ืืืคืืกืื ืืกืคืจืื. ืืื ืืฉ ืื ืืขืจืืื, ืืืจืืืืช... ืืืฉื, ืืืื ื ืืื ืืชืืจ ืฉืืืืจืืืช ืืื ืืืืื ืืืืื ืจืง ืืกืคืจ ืืืคืื, ื ืืื?
ืื ืื ืื ื ืืฆื ื-TL. ืืื ืืฉ, ืืืฉื, ื-JSON Schema. ืืื ืืืฉืื ืืืจ ืขืฉืื ืืืชืืืื ืขื ืืืืงื ืฉื 512 KB, ืฉืขืืืื ืฆืจืื ืืืืืง ืืืช ืืงืื, ืืื ืฉืืืงืื ืคืฉืื ืื ืืืื ืืื ืืฉืืื ืืกืคืจ ืืืืฅ ืืืืื 1..3000
(ืืืฉืืืื ืืืชืืืื ืื ืืืืชื ืืืืื ืืืชืขืืจืจ) ืื ืืื ืืคืฉืจื, ื ืืื?..
ืืื, ืืืื ืฉืืืืืช ืืขืจืื ืืืืจื. ืื ืืื ืฉืขืืื ืขื TL ืืืฉืืฉืื ืืช ืขืื ืืื - ืื ืื ืืชืืืืจ ืื ื ืืื ืื ืืื ืคืื ืงืฆืื ื-TL ืืืืื ืืืขืฉื ืืืืืืจ ืื ืจืง ืืช ืกืื ืืืืืจ ืืืชืืืจ, ืืื ืื ืฉืืืื. ืืื ืื ื ืืชื ืืืกืืง ืืืช ืืฉืื ืืืคื ืืืืฆืขืืช ื-TL ืขืฆืื. ืืืืื, ืื ืืืจ ืืจืืจ ืืืื ืฆืืจื ืืฉืื ืืืจ ืืคืืขื (ืื ืื ืืืขืฉื, RPC ืืืื ืืืชืืฆืข ืืืจืืื ืฉืื ืืช, ื ืืืืจ ืืื ืืืืฉื) - ืืื ืื ืืืื ืืืืจ ืืืืฉืืื ืฉื Mathematics of Abstract Types ืืืขืืื ืืฉืืืื?.. ืืจืืชื ืืช ืืืฉืืื - ืื ืชืชืืื ืืืชื.
ืืืืกืืฃ, ืื ืืืื ืงืจืืืืช? ืืืื, ืฉื, ืืืืคื ืืืื, ืืืืชื ืจืืฆื ืชืืืืจ ืืฉ ืืช ืื ื ืืื ืืกืืืื (ืืกืืืืช JSON, ืฉืื, ืื ืื), ืืื ืื ืืชื ืืืจ ืืชืืืฅ ืขื ืื, ืื ืื ืขื ืืฆื ืืืขืฉื - ืืคืืืช ืืกืชืืืืช ืืจืืืืืืืืช ืขื ืืืืืื ืืืืื ืืขืืืื ืื? ืจืื ืืขืฆืื ื
-channelFull#76af5481 flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int = ChatFull;
+channelFull#1c87a71a flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_view_stats:flags.12?true id:int about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?int migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int = ChatFull;
ืื
-message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
+message#44f9b43d flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true id:int from_id:flags.8?int to_id:Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?int reply_to_msg_id:flags.3?int date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long = Message;
ืื ืชืืื ืืืืื, ืืื GitHub, ืืืฉื, ืืกืจื ืืืืืืฉ ืฉืื ืืืื ืืชืื ืชืืจืื ืื ืืจืืืื. ืืืฉืืง "ืืฆื 10 ืืืืืื", ืืื ืฉืืืื ืจืืื ืืื ืื ืฉืืืชืืืืช ืืืกืืฃ ืืฉืชื ืืืืืืืืช ืืืืช, ืฆืจืื ืืงืจืื ืืฆืืจื ืืืืืขืช ืืืคืฉืื ืืืืฆืข... ืืืขืชื ืื ืื ืจืง ืืชืืืืจืื, ืืื ืืืืื ื ืืืืืืืืช ืืืื ืืืืืื ืืืจืืฉื.
ืืื, ืขื ืืืืจ ืืชืืืืจืื. ืืื ืื ืื ื ืฆืจืืืื ืฉืืืช ืกืืืืืช? ืื ื ืจืื ืฉืื ืจึตืืึท ืจืข ืื ืงืืืช ืืืื ืฉื ืชืืจืช ืืืืคืืกืื? ื ืืชื ืืจืืืช ืืช ืืืกืืจ ืืืจืกืืืช ืงืืืืืช ืฉื ืืชืจืฉืื. ืืืชืืื, ืื, ืืื ืื ืืื, ืขื ืื ืขืืืืฉ ื ืืฆืจ ืกืื ืืืฉ. ืืกืืืืช ืืื ืขืืืื ืงืืืืื ืืฆืืจื ืื, ืืืฉื:
storage.fileUnknown#aa963b05 = storage.FileType;
storage.filePartial#40bc6f52 = storage.FileType;
storage.fileJpeg#7efe0e = storage.FileType;
storage.fileGif#cae1aadf = storage.FileType;
storage.filePng#a4f63c0 = storage.FileType;
storage.filePdf#ae1e508d = storage.FileType;
storage.fileMp3#528a0677 = storage.FileType;
storage.fileMov#4b09ebbc = storage.FileType;
storage.fileMp4#b3cea0e4 = storage.FileType;
storage.fileWebp#1081464c = storage.FileType;
ืืื ืขืืฉืื ืชืืจ ืืขืฆืื, ืื ืืฉ ืื 5 ืฉืืืช ืืืคืฆืืื ืืืื ืืืื ื ืฉืื, ืื ืชืฆืืจื 32 ืกืืืื ืขืืืจ ืื ืืืคืฉืจืืืืช ืืืคืฉืจืืืช. ืคืืฆืืฅ ืงืืืืื ืืืจื. ืืคืืื, ืืืืืจ ืืืืืฉื ืฉื ืชืืืืจืืืช ื-TL ืฉืื ืืชื ืคืฅ ืื ืืื ืืฉืื ื ืืืจืื ืืืฆืืง ืฉื ืืืฆืืืืช ืืงืฉื ืฉื ืกืืจื.
ืื ืืกืฃ, ืืืงืืืืช ืืกืืืืื ืืืืจ'ื ืืืื ืืขืฆืื ืืคืจืื ืืช ืืืืคืืืืืื ืฉืืื. ืืืืืื, ื-MTProto (ืืคืจืง ืืื) ื ืืชื ืืืืืก ืืช ืืชืืืื ืขื ืืื Gzip, ืืื ืืกืืจ - ืืืฅ ืืื ืฉืืฉืืืืช ืืืืขืื ืืืคืจืื. ืฉืื, ืื RpcResult ืขืฆืื ื ืงืฆืจ, ืืื ืชืืื ื. ืืืื, ืืื ืืขืฉืืช ืืช ืื?.. ืืืืชื ืฆืจืื ืืืชืื ืืชืื ืงื ืืื ืฉืืืืืกื ืชืขืืื ืืื ืืงืื.
ืื ืืืืื ืืืจืช, ืืืืื ื ืคืขื ืฉืืืื - ืืื ื ืฉืืื InputPeerUser
ืืืงืื InputUser
. ืื ืืืคื. ืืื ืื ืขืื! ืืืืืจ, ืืฉืจืช ืื ืืื ืืืคืช ืืืกืื. ืืื ืื ืืืื ืืืืืช? ืืชืฉืืื ืขืฉืืื ืืืื ืชื ืื ื ืขื ืืื ืงืืขื ืงืื ื-telgram-cli:
if (tgl_get_peer_type (E->id) != TGL_PEER_CHANNEL || (C && (C->flags & TGLCHF_MEGAGROUP))) {
out_int (CODE_messages_get_history);
out_peer_id (TLS, E->id);
} else {
out_int (CODE_channels_get_important_history);
out_int (CODE_input_channel);
out_int (tgl_get_peer_id (E->id));
out_long (E->id.access_hash);
}
out_int (E->max_id);
out_int (E->offset);
out_int (E->limit);
out_int (0);
out_int (0);
ืืืืืื ืืืจืืช, ืื ืืืงืื ืฉืื ืืชืืฆืขืช ืกืืจื ืืืืคื ืืื ื, ืื ื ืืฆืจ ืงืื! ืืืื ืืฉืจืช ืืืืฉื ืืฆืืจื ืืืื?.. ืืืืคื ืขืงืจืื ื, ืื ืืขืืื ืื ื ืขืฉื ืคืขื ืืืช, ืืื ืืื ืืคืฉืจ ืืชืืื ืืื ืืืืืจ ืืืชืจ ืืืืื ืืขืืืื ืื? ืืื ืื ืืกืืื ืฉืืชืืื ืืช ืืืืฆืื? ืืืื ื ืขืืืจ ืืฉืืื ืืืื.
ืืืจืกืืืช. ืฉืืืืช
ืืืืข ืืืจืกืืืช ืืกืืืืืืช ื ืงืจืืืช ืฉืืืืช ื ืืชื ืจืง ืืฉืขืจ ืืืชืืกืก ืขื ืืืืกืืืจืื ืฉื ืืกืืืืช ืฉืคืืจืกืื. ืืื ืื ืจืื, ืืชืืืื ืืฉืื ืืืืืจืื ืฉื ืืชื ืืขืฉืืช ืืืจืื ืืกืืกืืื ืืืืฆืขืืช ืืกืืืื ืืื ืฉืื ืื, ืืจืง ืืืืืช ืืฆืืจื, ืขืืืจ ืืงืฉืืช ืกืคืฆืืคืืืช, ืืฆืืื ืื ืฉืื ื ืขืฉืื ืืืืฆืขืืช ืืจืกื ืืืจืช. ืืืืคื ืขืงืจืื ื, ืืคืืื ืจืขืืื ืืื - ืืืืืฉ ืืืื, ืืืืืื, "ืืขืืจื", ืืฉืืืืช ืขื ืืืฉื. ืืื ืืื ื ืจืื ืืื ืื ื ืขืฉื. ื ืืื, ืื ืืืืืชื ืืืกืชืื ืขื ืื ืืืืชืืื - ืื ืืฆืืืง, ืืื ืืืืืืจืื ืฉื ืฉืืืช ืืืกืืก ืคืฉืื ืื ืงืืืืช. ืฉืืืืช ืืชืืืื ื-2. ืืชืืขืื ืืกืคืจ ืื ื ืขื ืชืืื ื ืืืืืืช ืฉื TL:
ืื ืืงืื ืชืืื ืืฉืืื 2, ืืฉ ืืืฉืชืืฉ ืืื ืื ืืื:
invokeWithLayer2#289dd1f6 {X:Type} query:!X = X;
ืืคืืขื, ืื ืืืืจ ืฉืืคื ื ืื ืงืจืืืช API, int ืขื ืืขืจื
0x289dd1f6
ืืฉ ืืืืกืืฃ ืืคื ื ืืกืคืจ ืืฉืืื.
ื ืฉืืข ื ืืจืืื. ืืื ืื ืงืจื ืืืจ ืื? ืืื ืืืคืืข
invokeWithLayer3#b7475268 query:!X = X;
ืื ืื ืืืื? ืืคื ืฉืืชื ืืืื ืื ืืฉ,
invokeWithLayer4#dea0d430 query:!X = X;
ืืฆืืืง? ืื, ืื ืืืงืื ืืื ืืฆืืืง, ืชืืฉืื ืขื ืื ืื ืืื ืืงืฉื ืืฉืืื ืืืจืช ืฆืจืืื ืืืืืช ืขืืืคื ืืกืื ืื ืื ืืืืื - ืื ืืฉ ืื ืืช ืืืื ืฉืื ืื, ืืื ืขืื ืืชื ืืืื ืืืืืื ืืื ืืื? ืืืืกืคืช ืจืง 4 ืืชืื ืืคื ื ืืื ืฉืืื ืื ืืขืืื. ืื,
invokeWithLayer5#417a57ae query:!X = X;
ืืื ืืจืืจ ืฉืืืจื ืืื ืื ืื ืืืคืื ืืกืื ืฉื ืืืื ืืื. ืืืคืชืจืื ืืืืข:
ืขืืืื: ืืื ืืฉืืื 9, ืฉืืืืช ืขืืืจ
invokeWithLayerN
ื ืืชื ืืืฉืชืืฉ ืจืง ืืื ืขืinitConnection
ืืืื! ืืืจื 9 ืืจืกืืืช, ืกืืฃ ืกืืฃ ืืืขื ื ืืื ืฉื ืขืฉื ืืคืจืืืืงืืื ืืื ืืจื ื ืขืื ืืฉื ืืช ื-80 - ืืกืืื ืขื ืืืจืกื ืคืขื ืืืช ืืชืืืืช ืืืืืืจ!
ืื ืื ืืืื?..
invokeWithLayer10#39620c41 query:!X = X;
...
invokeWithLayer18#1c900537 query:!X = X;
ืืื ืขืืฉืื ืืชื ืขืืืื ืืืื ืืฆืืืง. ืจืง ืืืืจ ืขืื 9 ืฉืืืืช, ืกืืฃ ืกืืฃ ื ืืกืฃ ืื ืื ืืื ืืืจืกืื ืขื ืืกืคืจ ืืจืกื, ืฉืฆืจืื ืืงืจืื ืื ืจืง ืคืขื ืืืช ืืชืืืืช ืืืืืืจ, ืื ืจืื ืืื ืฉืืฉืืขืืช ืืฉืืืืช ื ืขืืื, ืขืืฉืื ืื ืจืง ืืจืกื ืืืชื ืืช, ืืื ืืื ืืงืื ืืืจ. ืืืขืื ื ืคืชืจื.
ืึผึฐืึดืืึผืง?..
ืืืกืืื, [16.07.18 14:01] ืืคืืื ืืืื ืฉืืฉื ืืฉืืชื:
ื-Teleserver ืฉืืื ืืืจืืขืื ืืื ืืงืฉื. ืืฉ ืืขืืืฃ ืืช ืืืงืฉืืช ื-InvokeWithLayer. ืืฉืจืช ืืื ื ืขืืืฃ ืขืืืื ืื; ืืื ืืื ื ืืขืืืคืช ืชืืืืืช ืืขืืืื ืื.ืึธืึตื. ืืืงืื ืื ืืืื ืืฆืืื ืืช ืืฉืืื ืฉืื ืืื ืจืืฆื ืขืืืื ืื
ืืืืื ืืื ืฆ'ืจืื, [16.07.18 14:02] ืืื InvokeWithLayer ืืื ืื ืงื ืขืงืจืื ื?
ืืืกืืื, [16.07.18 14:02] ืื ืืืจื ืืืืืื
ืืืืื ืืื ืฆ'ืจืื, [16.07.18 14:02] ืฉืืขืฆื ืืืืจ ืืืืืช ืืกืืื ืขื ืืฉืืื ืืชืืืืช ืืคืืืฉื
ืืื, ืืืื ื ืืืข ืฉืื ื ืืชื ืฉืืจืื ืืืืืจ ืฉื ืืืงืื
ืขืืืื ืื, ืืืืืจ. ืกืึผื Updates
ืืกืืืื, ืื ืื ืฉืืฉืจืช ืฉืืื ืืืงืื ืื ืืชืืืื ืืืงืฉืช API, ืืื ืืืืคื ืขืฆืืื ืืืฉืจ ืืชืจืืฉ ืืืจืืข. ืืื ื ืืฉื ืืืจืื ืฉื ืืื ืื ืืคืืกื ืืืจ, ืื ืืขืช ืขืชื ืืฉืื ืืืขืช ืฉืืฉืจืช ืฉืืืจ ืขืืืื ืื ืื ืืฉืืืงืื ืืืฆื ืื ืืงืืื.
ืืคืืื, ืื ืืชื ืืกืจื ืืขืืืฃ ืื ืืืืื ืืื ืืฆืืื ืืช ืืืจืกื ืฉืื, ืื ืืืืื ืืืืคื ืืืืื ื ืืืขืืืช ืืืคืฉืจืืืช ืืืืืช:
- ืืฉืจืช ืฉืืื ืขืืืื ืื ืืืงืื ืขืื ืืคื ื ืฉืืืงืื ืืืืืข โโืืืืื ืืจืกื ืืื ืชืืื
- ืื ืขืื ืืขืฉืืช ืืืืจ ืฉืืจืื ืืืงืื?
- ืื ืขืจืืืืืชืฉืืขืช ืืฉืจืช ืืืื ืืกืคืจ ืืฉืืื ืื ืชืฉืชื ื ืืืืื ืืชืืืื?
ืืื ืืืขืชื ืืืืืจ ืืกืคืงืืืฆืื ืชืืืืจืืืช ืืืื, ืืืคืืขื ืื ืื ืืืื ืืงืจืืช, ืื ืืฉืจืช ืืชืื ื ืืื (ืืคืืืช, ืืื ื ืืืง ืืืื)? ืื! ืื ืืฉื ื ืืื ืื!
ืื ืืืืืง ืื ืฉื ืชืงืื ื ืื ืืืืืืกื. ื-14 ืืืืืืกื, ืืื ืืืืขืืช ืฉืืฉืื ืืชืขืืื ืืฉืจืชื ืืืืืจื... ืืื ืืืืื ืื:
2019-08-15 09:28:35.880640 MSK warn main: ANON:87: unknown object type: 0x80d182d1 at TL/Object.pm line 213.
2019-08-15 09:28:35.751899 MSK warn main: ANON:87: unknown object type: 0xb5223b0f at TL/Object.pm line 213.
ืืืืืจ ืืื ืืกืคืจ ืืื-ืืืื ืฉื ืขืงืืืช ืืืกื ืืช (ืืื, ืืืืชื ืืื ืจืืฉืื ืืจืืฉืื ืชืืงื). ืืืจื ืืื, ืื ืืฉืื ืื ืืืืื ื-TL ืฉืื, ืื ืืื ืืจื ืืืชืืื, ืืืืฉื ืืฉืืจื ALL ืืืื, ืคืขื ืื ืืืคืื ืืืืชื ืืคืฉืจื. ืื ืืืื ืืขืฉืืช ืืืฆื ืืื?
ืืืื, ืืืืจ ืืจืืฉืื ืฉืขืืื ืืืืื ืฉื ืืืฉืื ืืื ืืืชื ืชืง ืืื ืกืืช ืฉืื. ืื ืขืืจ. ืื ืื ื ืืืคืฉืื ืืืืื CRC32 - ืืชืืจืจ ืฉืื ืืืืืืงืืื ืืกืืื 73, ืืืจืืช ืฉืขืืื ื ืขื 82. ืื ืื ื ืืกืชืืืื ืืืื ืขื ืืืืื ืื - ืืฉ ืืืืื ืืฉืชื ืกืืืืช ืฉืื ืืช!
ืืืื ืืืขืื ืืื ืื ืืจืง ืืืงืื ืืื ืจืฉืื ืฉืื ื? ืื, ืื ื ืืฉืืงืื ืืช Telegram Desktop 1.2.17 (ืืจืกื ืืกืืคืงืช ืืืกืคืจ ืืคืฆืืช ืืื ืืงืก), ืืื ืืืชื ืืืืื ืืืจืืืื: MTP Unexpected type id #b5223b0f read in MTPMessageMedia...
ืืืื ืืจืืชื ืฉืืืจ ืงืจืชื ืืขืื ืืืื ืืืื ืืืงืืืืช ืืื ืจืฉืืืื, ืืื ืื ืืกืคืจื ืืืจืกืืืช ืืืืชืื ืืื ืืื ืืืช ืืื ืฉืื ืืช...
ืื ืื ืื ืื ื ืฆืจืืืื ืืขืฉืืช? ืืืกืืื ืืื ื ื ืคืจืื ื: ืืื ื ืืกื ืืขืืื ืืช ืืืขืื ื-91, ืืืืืชื ืืืืืช ืืื ืืืื ืืื ืกืืช ื-73. ืฉืชื ืืฉืืืืช ืขืืื, ืืื ืืืืืื ืฉืื ืืืคืืจืืืช, ืืื ืืื ื ืฉื ืืื ืืจืกืืืช ืืืขืื ืื ืืืื ืืชื ืฆืจืื ืืงืคืืฅ, ืื ืืื ืืื ืืชื ืฆืจืื ืืืืืช .
ืืืืืจ ืืืชืจ ืืฆืืืชื ืืฉืืืจ ืืช ืืืฆื: ืื ื ืืคืขืืืื ืืช ืืืงืื, ืืืืื ืืืชื, ืืงืืคืืื ืืืืฉ ืืช ืืืขืื ืืฉืืื ืืืจืช, ืืคืขืืืื ืืืืฉ, ืชืืคืกืื ืฉืื ืืช ืืืขืื, ืืืืจืื ืืงืืืืช - ืืืคืก, ืืื ืืืืช ืฉื ืืืืคืช ืืขืืืื ืืืืงืื ืืคืขืื ืืืืฉ ืืืฉื ืืื ืืงืืช ืืขืืจื. ืชืงืื ืฉืืืื ืฉื ืืื ื ื ืชืื ืื ืืฉืืืืช ืฉืื ืืช.
ืึถืกืึผึตืจ? ืืคื ืฉื ืืชื ืื ืืฉ ืืกืืืคืืืืื ืขืงืืคืื ืฉืื ืื, ืืฉืจืช ืืืจืื ืืชืืืืืื ืจืืื ืืกืืืื ืฉืื ืื ืืืืื ืืช ืฉืื ืืช. ืกืืืจ ืืื ืื ืฉืืฉืจืช ืฉืืืจืื ื"ืืฆืฅ" ืืื ืืก ืืชืืจ ืืช ืื ืฉืืืืื ืื ืขืืื ื ืชื ื ืื, ืืื ื ืชื ื ืืช ืื ืืชืืื ืืช ืฉืืืืชื ืงืืืืช ืืืื ืืืฆืืจื. ืืขื ืฉืืชืืจ ืืื "ืจืงืื", ืื ื ืืชื ืืื ืืขืฉืืช ืืืจ ืื ืืืื.
ืืืื... ืืื ืื ืงื ื ืืจื?!.. ืื, ืืคื ื ืฉื ืืฉืื ืขื ืจืขืืื ืืช ืืืืจืคืื, ืืืื ื ืกืชืื ืขื ืืงืื ืฉื ืืืงืืืืช ืืจืฉืืืื. ืืืจืกืช ืืื ืืจืืืื ืื ืื ื ืื ืืืฆืืื ืฉืื ืื ืชื TL, ืืื ืื ืื ื ืื ืืืฆืืื ืงืืืฅ ืืื (GitHub ืืกืจื ืืืขืช ืื) ืขื (ืื) ืกืืจื. ืืืื ืงืืขื ืืงืื:
public static class TL_message_layer68 extends TL_message {
public static int constructor = 0xc09be45f;
//...
//ะตัะต ะฟะฐัะบะฐ ะฟะพะดะพะฑะฝัั
//...
public static class TL_message_layer47 extends TL_message {
public static int constructor = 0xc992e15c;
public static Message TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) {
Message result = null;
switch (constructor) {
case 0x1d86f70e:
result = new TL_messageService_old2();
break;
case 0xa7ab1991:
result = new TL_message_old3();
break;
case 0xc3060325:
result = new TL_message_old4();
break;
case 0x555555fa:
result = new TL_message_secret();
break;
case 0x555555f9:
result = new TL_message_secret_layer72();
break;
case 0x90dddc11:
result = new TL_message_layer72();
break;
case 0xc09be45f:
result = new TL_message_layer68();
break;
case 0xc992e15c:
result = new TL_message_layer47();
break;
case 0x5ba66c13:
result = new TL_message_old7();
break;
case 0xc06b9607:
result = new TL_messageService_layer48();
break;
case 0x83e5de54:
result = new TL_messageEmpty();
break;
case 0x2bebfa86:
result = new TL_message_old6();
break;
case 0x44f9b43d:
result = new TL_message_layer104();
break;
case 0x1c9b1027:
result = new TL_message_layer104_2();
break;
case 0xa367e716:
result = new TL_messageForwarded_old2(); //custom
break;
case 0x5f46804:
result = new TL_messageForwarded_old(); //custom
break;
case 0x567699b3:
result = new TL_message_old2(); //custom
break;
case 0x9f8d60bb:
result = new TL_messageService_old(); //custom
break;
case 0x22eb6aba:
result = new TL_message_old(); //custom
break;
case 0x555555F8:
result = new TL_message_secret_old(); //custom
break;
case 0x9789dac4:
result = new TL_message_layer104_3();
break;
ืื
boolean fixCaption = !TextUtils.isEmpty(message) &&
(media instanceof TLRPC.TL_messageMediaPhoto_old ||
media instanceof TLRPC.TL_messageMediaPhoto_layer68 ||
media instanceof TLRPC.TL_messageMediaPhoto_layer74 ||
media instanceof TLRPC.TL_messageMediaDocument_old ||
media instanceof TLRPC.TL_messageMediaDocument_layer68 ||
media instanceof TLRPC.TL_messageMediaDocument_layer74)
&& message.startsWith("-1");
ืืื... ื ืจืื ืคืจืื. ืืื, ืื ืจืื, ืื ื ืืฆืจ ืงืื, ืื ืืกืืจ?.. ืืื ืื ืืืืื ืชืืื ืืื ืืืจืกืืืช! ื ืืื, ืื ืืจืืจ ืืื ืืื ืืขืืจืื ืืืื, ืฆ'ืืืื ืกืืืืื ืืขืื ืื ืืื ื _old7
ืืืืฉืื ืื ื ืจืืื ืืื ืืืจ ืืืื ื... ืขื ืืืช, ืืืชืจ ืืื ื ืืืืชื
TL_message_layer104
TL_message_layer104_2
TL_message_layer104_3
ืืืจ'ื, ืืชื ืืคืืื ืื ืืืืืื ืืืืืื ืื ืืฉ ืืชืื ืฉืืื ืืืช?! ืืืื, ืืกืืจ, ื ื ืื ืฉ"ืฉื ืืื" ืฉืืืจืจื ืขื ืฉืืืื, ืืื, ืื ืงืืจื, ืืื ืฉืืืฉ?.. ืืื, ืฉืื ืืืชื ืืจืืคื? ืืืื ืกืื ืฉื ืคืืจื ืืืจืคืื ืื, ืกืืืื?
ืืงืื ืืืงืืจ ืฉื Telegram Desktop, ืืื, ืงืืจื ืืืจ ืืืื - ืื ืื, ืืื ืืชืืืืืืืืช ืืจืฆืฃ ืืกืืื ืื ืืฉื ืื ืืช ืืกืคืจ ืืฉืืื ืฉืื, ืืื ืืชืงื ืื ืืฉืื. ืืชื ืืื ืฉืืื ืืื ืืงืืจ ืจืฉืื ืื ืชืื ืื ืขืืืจ ืืชืืื ืืช, ืืืืคื ื ืืชื ืืืฉืืื, ืืืขื ืงืื ืืืงืืจ ืฉื ืืืงืื ืืจืฉืื? ืืื ืืชื ืืืงื ืืช ืื ืืฉื, ืืชื ืื ืืืื ืืืืืช ืืืื ืฉืืกืืืื ื ืืื ื ืืืืืืื ืขื ืฉืชืืืืง ืืช ืื ืืฉืืืืช.
ืืื ืืคืฉืจ ืืืื ืืืืืง ืืช ืื? ืื ื ืืงืืื ืฉืืืืื ืืืืืืช, ืืืืงืืช ืคืื ืงืฆืืื ืืืืช ืืืืจืืช ืืฉืชืคื ืืืขืจืืช.
ืืืงืื, ืืืื ื ืกืชืื ืขื ืคืืกืช ืงืื ื ืืกืคืช:
public static class TL_folders_deleteFolder extends TLObject {
public static int constructor = 0x1c295881;
public int folder_id;
public TLObject deserializeResponse(AbstractSerializedData stream, int constructor, boolean exception) {
return Updates.TLdeserialize(stream, constructor, exception);
}
public void serializeToStream(AbstractSerializedData stream) {
stream.writeInt32(constructor);
stream.writeInt32(folder_id);
}
}
//manually created
//RichText start
public static abstract class RichText extends TLObject {
public String url;
public long webpage_id;
public String email;
public ArrayList<RichText> texts = new ArrayList<>();
public RichText parentRichText;
public static RichText TLdeserialize(AbstractSerializedData stream, int constructor, boolean exception) {
RichText result = null;
switch (constructor) {
case 0x1ccb966a:
result = new TL_textPhone();
break;
case 0xc7fb5e01:
result = new TL_textSuperscript();
break;
ืืืขืจื ืืื "ื ืืฆืจื ืืืืคื ืืื ื" ืืจืืืช ืฉืจืง ืืืง ืืืงืืืฅ ืืื ื ืืชื ืืืืคื ืืื ื (ืืื ืืชื ืืืื ืืืืืื ืืช ืื ืกืืื ืืชืืืืงื?), ืืืฉืืจ ื ืืฆืจ ืขื ืืื ืืืื ื. ืืืื ืื ืืชืขืืจืจืช ืฉืืื ื ืืกืคืช - ืฉืืืงืืจืืช ืืืื ืื ืื ืืืืจื (ื la GPL blobs ืืงืจื ื ืฉื ืืื ืืงืก), ืืื ืื ืืืจ ื ืืฉื ืืืืง ืืฉื ื.
ืืื ืื. ืืื ื ืขืืืจ ืืคืจืืืืงืื ืฉืขืืื ืืชื ืืืช ืื ืืืกืืจื ืืื.
MTProto
ืื ืืืื ื ืคืชื
ืืืืืื, "ืืืืขื" ื-"Session" ืืืืจืืช ืืื ืืฉืื ืฉืื ื ืืืฉืจ ืืืืฉืง ืืืงืื ืืจืืื ืฉื Telegram. ืืืื, ืืื ืืจืืจ ืขื ืืืืืขื, ืืคืฉืจ ืืคืจืฉ ืืืชื ืืืื ืื OOP, ืื ืคืฉืื ืืงืจืื ืืืืื "ืื ืืช" - ืื ืจืืช ืชืืืืจื ื ืืืื, ืืื ืืืชื ืืืืขืืช ืืื ืืืืฉืง, ืืฉ ืืจืื ืืืืขืืช ืฉืืจืืช . ืืื ืืคืืืฉื... ืืื ืงืืื ืื.
ืฉืืืช ืชืืืืจื
ืืืืจ ืืจืืฉืื ืืื ืชืืืืจื. ืื ืืกืคืจื ืื ื ืขื 5 ืืคืฉืจืืืืช:
- TCP
- ืจืฉืช ืืื ืืจื ื
- Websocket ืขื HTTPS
- HTTP
- HTTPS
ืืืกืืื, [15.06.18 15:04] ืืฉ ืื ืชืืืืจื UDP, ืืื ืื ืื ืืชืืขื
ื-TCP ืืฉืืืฉ ืืจืกืืืช
ืืจืืฉืื ืืืื ื-UDP ืืจื TCP, ืื ืืืืื ืืืืืช ืืกืคืจ ืจืฆืฃ ื-crc
ืืืืข ืงืจืืืช ืืกืืืื ืืขืืื ืืืืืช ืื ืื?
ืืืื, ืื ื ืื ืขืืฉืื
- ืืงืืฆืจ
- ืืื ืืื
- ืืื ืืื ืืจืืคื
- ืืื
ืืืื, ืืกืืจ, ืืื ืืื ืืจืืคื ืขืืืจ MTProxy, ืื ื ืืกืฃ ืืืืืจ ืืืชืจ ืขืงื ืืืจืืขืื ืืืืขืื. ืืื ืืื ืขืื ืฉืชื ืืจืกืืืช (ืฉืืืฉ ืืกื ืืื) ืืฉืืคืฉืจ ืืืกืชืืจ ืขื ืืืช? ืื ืืืจืืขื ื ืืืืื ืื ืืื ืจืง ืืืฆื ืืืืืืจ ืืช ืืืืจื ืืืืืขื ืฉื ื-MTProto ืืจืืฉื, ืืฉืจ ืืืืื ื ืืืืฉื:
- ื-Abridged ืื 1 ืื 4 ืืชืื, ืืื ืื 0xef, ืืื ืืืืฃ
- ื-Intermediate ืื 4 ืืชืื ืฉื ืืืจื ืืฉืื, ืืืคืขื ืืจืืฉืื ื ืฉืืืงืื ืืืื ืืฉืืื
0xeeeeeeee
ืืื ืืฆืืื ืฉืื ืืื ืืื - ืืืืคื ืืื ืืื ืืืืจ, ืื ืงืืืช ืืืื ืฉื ืจืฉืช: ืืืจื, ืืกืคืจ ืจืฆืฃ, ืืื THE ONE ืฉืืื ืืขืืงืจ MTProto, body, CRC32. ืื, ืื ืื ืขื ืืื TCP. ืื ืฉืืกืคืง ืื ื ืชืืืืจื ืืืื ื ืืฆืืจื ืฉื ืืจื ืืชืื ืจืฆืืฃ; ืืื ืฆืืจื ืืจืฆืคืื, ืืืืืื ืกืืืื ืืืงืืจืช. ืืืงืื, ืขืืฉืื ืืืฉืื ืืชื ืื ืื ืฉื-TCP ืืฉ ืกืืื ืืืงืืจืช ืฉื 16 ืกืืืืืช, ืื ืืชืจืืฉืช ืฉืืืชืืช ืื ืชืื ืื. ืืฆืืื, ืืื ืืืขืฉื ืืฉ ืื ื ืคืจืืืืงืื ืงืจืืคืืืืจืคื ืขื ืืืืืืื ืฉื ืืืชืจ ื-16 ืืชืื, ืื ืืฉืืืืืช ืืืื - ืืืคืืื ืืืชืจ - ืืืชืคืกื ืขื ืืื ืื ืืชืืื ืฉื SHA ืืจืื ืืืืื ืืืชืจ. ืืื ืืขื ื-CRC32 ื ืืกืฃ ืขื ืื.
ืืื ื ืฉืืื ืืช Abridged, ืฉืื ืืคืฉืจ ืืืช ืืื ืืืืจื, ืขื Intermediate, ืฉืืฆืืืง "ืืืงืจื ืฉืืฉ ืฆืืจื ืืืืฉืืจ ื ืชืื ืื ืฉื 4 ืืชืื", ืืื ืื ืฉืืืืืช. ืื, ืืืืื ืื ืฉืืชืื ืชื ืืืืจื ืื ืื ืื ืื ืืืืฉืจืื ืฉืื ืื ืืืืืื ืืงืจืื ื ืชืื ืื ืืฉืงืข ืืชืื ืืืืจ ืืืืฉืจ? ืืชื ืขืืืื ืฆืจืื ืืขืฉืืช ืืืช, ืื ืงืจืืื ืืืืื ืืืืืืจ ืื ืื ืืกืคืจ ืฉื ืืชืื (ืืืฉ ืื ืฉืจืชื ืคืจืืงืกื, ืืืฉื...). ืื ืืฆื ืฉื ื, ืืื ืืืกืื ืืช Abridged ืื ืขืืืื ืืืื ืื ื ืจืืคืื ืืื ืขื ืืื 16 ืืชืื - ืืกืื 3 ืืชืื ืืคืขืืื ?
ืืชืงืื ืืจืืฉื ืฉื ืืงืืืื ืืืจืื ืืืื ืืืื ืืืืฆืื ืืืืฉ ืืืืืื, ืืืื ืคืจืืืืงืืื ืจืฉืช, ืืื ืื ืฆืืจื ืืขืฉื ืฉื ืืืฉ.
ืืคืฉืจืืืืช ืชืืืืจื ืืืจืืช, ืืืื. ืืื ืืจื ื ื-MTProxy, ืื ื ืฉืงืื ืืขืช, ืืืื ืืคืืกื ืืืจ, ืื ืชืืื ืืงืฉื. ืืืื ืืืชื MTProxy, ืืืื ื ืืืืจ ืจืง ืขืืฉืื ืฉืืื ืงืฆืจ ืืืืจ ืฉืืจืืจื ื-2018, ืกืคืงืื ืืืื ืืืืืจืืช ืืืกืื ืืืชื, ืืืืืขืืช ืขืืืจ ืขืืงืฃ ืืกืืืืขื ืืื ืืืื ืืืืืื! ืืื ืืขืืืื ืฉืฉืจืช ื-MTProxy ืฉื ืืชื (ืฉืื ืขื ืืื ืืืืืื) ื-C ืืื ืงืฉืืจ ืืชืจ ืขื ืืืืื ืืคืจืื ืืื ืืงืก, ืืืจืืช ืฉืื ืื ืืื ื ืืจืฉ ืืื (Phil Kulin ืืืฉืจ), ืืฉืฉืจืช ืืืื ื-Go ืื ื-Node.js ืืขืฉื ืืืช. ืืชืืื ืืคืืืช ืืืื ืฉืืจืืช.
ืืื ื ืกืืง ืืกืงื ืืช ืืืื ืืืืจืืื ืืช ืืืื ืืช ืฉื ืืื ืฉืื ืืืื ืืกืืฃ ืืกืขืืฃ, ืืืืจ ืฉื ืืื ื ืืฉืืื ืืืจืื. ืืขืช ืขืชื, ื ืขืืืจ ืืฉืืื 5 ืฉื OSI, ืกืฉื - ืขืืื ืื ืืื ืืช ืกืฉื MTProto.
ืืคืชืืืช, ืืืืขืืช, ืืคืขืืืช, ืืืคื-ืืืื
ืื ืืฆืืื ืืช ืื ืฉื ืื ืืืืจื ื ืืื... ืืคืขืื ืืื ืื ืืืชื ืืคืขืื ืฉื ืจืืืช ืืืืฉืง ืชืืช ืืคืขืืืช ืคืขืืืืช. ืืื ืืคื ืืกืืจ.
ืื ืงืืืื ื ืืืจืืืช ืืชืื ืืืืจื ืืืืข ืืฉืืืช โโืืชืืืืจื. ืื ืืืืขื ืืืฆืคื ืช ืื ืืงืกื ืจืืื - ืื ืื ืื ื ืขืืืื ืืฉืื ืืกืื ืืืคืชื ืืืขืฆื ืขืืฉืื ืืช ืื. ืขื ืืืื ืืืื ืฉืื ืืืืฉืืื ืฉื ืงืจืืื "ืืคืชื" ืื ืื ื ืืืืจืื? ืืืื ื ืืืืจ ืืช ืื ืืฉื ืืื ืขืืืจ ืฆืืืช ืืืืืจื ืขืฆืื (ืื ื ืืชื ืฆื ืขื ืชืจืืื ืืชืืขืื ืฉืื ืืื ืืืืช ืขื ืืื ืขืืืฃ ืืฉืขื 4 ืืคื ืืช ืืืงืจ, ืืื ืงื ืืืชืจ ืืืฉืืืจ ืืื ืืืืืืื ืืคื ืฉืื):
ืืฉ ืฉืชื ืืฉืืืืช ืฉื ืงืจืืืช ืืืฉื - ืืื ืืืืฉืง ืืืฉืชืืฉ ืฉื ืืงืืืืช ืจืฉืืืื ืชืืช "ืืคืขืืืช ื ืืืืืืช", ืืืฉืจ ืื ืืคืขืื ืชืืืืช ืืืืฉืืจ / ืืขืจืืช ืืคืขืื ืฉืื.
ืฉื ืืช - ืืคืืฉ MTProto, ืฉืืฉ ืื ืืช ืืกืคืจ ืืจืฆืฃ ืฉื ืืืืืขื (ืืืืื ืืจืื ื ืืืื), ืืืืื ืขืฉืื ืืืืืฉื ืืื ืืืืืจื TCP ืฉืื ืื. ื ืืชื ืืืชืงืื ืืกืคืจ ืืคืขืืืช ืฉื MTProto ืื-ืืื ืืช, ืืืฉื, ืืื ืืืืืฅ ืืช ืืืจืืช ืืงืืฆืื.ืืื ืฉื ื ืืื ืืคืขืืืช ืืฉ ืืืฉื ืืืฉืืจ. ืืืงืจื ืืื ืืื, ืืคืฉืจ ืืืืจ ืืืช ืืคืขืื ืฉื ืืืฉืง ืืฉืชืืฉ ืืื ื ืืืฉืืจ, ืืื ืืืื, ืืื ืืกืืื. ืืืื ื ืจืื:
- ืืืฉืชืืฉ ืืืืฉืืจ ืืืืฉ ืืืฆืจ ืืจืืฉืื ื ืืคืชื ืืืืืช ืืืืืื ืืืชื ืืืฉืืื, ืืืฉื ืืืืฆืขืืช SMS - ืื ืืกืืื ืืืฉืืจ
- ืื ืงืจื ืืชืื ืืจืืฉืื ืืคืืฉ MTProto, ืฉืืฉ
session_id
ืืชืื ืขืฆืื.- ืืฉืื ืื, ืืฉืืืื ืืืฉืืจ ะธ
session_id
ืืืื ืืืืงืจื ืืืฉื - ืืืื ืื ืืืคืืขื ืืชืืขืื ืืืงืื ืฉื ืืืง ืืืืงืืืืช- ืืืืจ ืืื, ืืืงืื ืืืื ืืคืชืื ืืื ืืคืขืืืช ืฉื MTProto ืชืืช ืืืชื ืืืืจ ืืคืชื ืืืืืช - ืืืืชื DC.
- ืืื, ืืื ืืื ืืืงืื ืืฆืืจื ืืืงืฉ ืืื ื ืืช ืืงืืืฅ DC ืืืจ - ืืขืืืจ DC ืื ืืืืืฆืจ ืืื ืืืฉ ืืคืชื ืืืืืช !
- ืืืืืืข โโืืืขืจืืช ืฉืื ืืฉืชืืฉ ืืืฉ ื ืจืฉื ืืื ืืืชื ืืืืจ ืืืฉืืจ (ืืคืขืื ืฉื ืืืฉืง ืืฉืชืืฉ), ืืืงืื ืืฉืชืืฉ ืืงืจืืืืช API
auth.exportAuthorization
ืืืืช DCauth.importAuthorization
ื-DC ืืืืฉ.- ืืื ืืืชื ืืืจ, ืืื ืขืฉืืืื ืืืืืช ืคืชืืืื ืืคืขืืืช ืฉื MTProto (ืื ืืื ืืฉืื
session_id
) ื-DC ืืืืฉ ืืื, ืชืืช ืฉืื ืืคืชื ืืืืืช.- ืืืกืืฃ, ืืืชืื ืฉืืืงืื ืืจืฆื Perfect Forward Secrecy. ืึผึนื ืืคืชื ืืืืืช ืืื ืงืืืข ืืคืชื - ืืื DC - ืืืืงืื ืืืื ืืืชืงืฉืจ
auth.bindTempAuthKey
ืืฉืืืืฉ ืืื ื ืืคืชื ืืืืืช - ืืฉืื, ืจืง ืืื temp_auth_key ืืื DC, ืืฉืืชืฃ ืืืืื ืืคืขืืืช ืฉื MTProto ื-DC ืืื.ืฉืื ืื ืฉ ืืื (ืืืืืื ืขืชืืืืื) ืืื ืื ืืื ืขื ืืคืชื ืืืืืช ืึธืึตื. ืืฉืืชืฃ ืืื ืืืื ืืคืขืืืช ืฉื MTProto ืืืืชื DC.
ืื ืืืฉืืขืืช ืฉื "ืืื ืืืืืจื TCP ืฉืื ืื"? ืื ืื ืืืืจ ืืฉืื ืืื ืขืืืืืช ืืจืฉืื ืืืชืจ - ืืื ืืืฉืืื (ืฉืืจืืช) ืืืืืจื TCP ืจืืื ืืฉืจืช ื ืชืื, ืืื ืืื ืืื ืืื ืืชืงืืงืืช. ืจืง ืืฉืื ื ื-HTTP, ื-MTProto ืืืืขืืช ืืชืื ืืคืขืื ืืืืกืคืจืืช ืืืืืฉืจืืช ืืจืฆืฃ; ืื ืื ื ืื ืกื ืืื ืืจื, ืืืืืืจ ื ืฉืืจ - ืืืืจ ืืฆืืจืช ืืืืืจ ืืืฉ, ืืฉืจืช ืืฉืื ืืืืืืืช ืืช ืื ืื ืฉืืกืฉื ืืื ืฉืืื ืื ืืขืืืจ ืืงืืื ืืืืืจ TCP.
ืขื ืืืช, ืืืืืข ืืขืื ืืกืืื ืืืืจ ืืืืฉืื ืจืืื ืฉื ืืงืืจื. ืืื ืชืืื, ืืื ืื ื ืืืืฉืืื ืืช ืืืงืื ืฉืื ื ืืืคืก? - ื ืืืืจ ืืืชืืื.
ืื ืืืื ื ืืฆืืจ auth_key
ืขื
Vasily, [19.06.18 20:05] data_with_hash := SHA1(ื ืชืื ืื) + ื ืชืื ืื + (ืื ืืชืื ืืงืจืื); ืื ืฉืืืืจื ืฉืืื ื-255 ืืชืื;
ืืืฆืคื ืื_ื ืชืื ืื := RSA(data_with_hash, server_public_key); ืืกืคืจ ืืืืจื 255 ืืชืื (ืื ืืืื ืืืื) ืืืขืื ืืขืืฆืื ืื ืืจืฉืช ืขื ืืืืืืืืก ืืืจืืฉ, ืืืชืืฆืื ืืืืืกื ืช ืืืกืคืจ ืฉื 256 ืืชืื.ืืฉ ืืื DH ืกืืื
ืื ื ืจืื ืืื DH ืฉื ืืื ืืจืื
ืืื ืฉื ื ืืคืชืืืช ืฆืืืืจืืื ื-dx
ืืืื, ืืกืืคื ืฉื ืืืจ ืื ืืืกืืจ, ืืื ื ืฉืืจื ืฉืืจืืืช - ืืืืื ืืขืืืื ื ืขืฉืืช ืขื ืืื ืืืงืื ืฉืืื ืืฆืืื ืืืฉื ืืช ืืืกืคืจ. ืกืื ืืื ื ืืคื ื ืืชืงืคืืช DoS. ืืืคืชื RSA ืืฉืืฉ ืจืง ืคืขื ืืืช ืืืืืื ืืื, ืืขืฆื ืืืฆืคื ื new_nonce
. ืืื ืืขืื ืฉืืืืฆืข ืืคืฉืื ืืืืืจื ืืื ืืฆืืื, ืขื ืื ืชืฆืืจื ืืืชืืืื?
ืืืกืืื, [20.06.18/00/26 XNUMX:XNUMX] ืขืืืื ืื ืืืขืชื ืืืงืฉืช ืืืคืืืงืฆืื
ืฉืืืชื ืืงืฉื ืื ื-DH
ืืืืขืื ืืชืืืืจื ืืชืื ืฉืืื ืืืื ืืืืื ืขื 4 ืืชืื ืฉื ืงืื ืฉืืืื. ืื ืืื
ืืืื, ืืื ืืืจ ืื -404, ืื ืื?
ืื ืืืจืชื ืื: "ืชืคืืก ืืช ืืฉืืืืืช ืฉืื ืืืฆืคื ืขื ืืคืชื ืฉืจืช ืขื ืืืืขืช ืืฆืืข ืืื, ืื ื ืจืืฆื DH," ืืื ืืืื ืขื 404 ืืืคืฉื
ืื ืืืืชื ืืืฉืืื ืขื ืชืืืืช ืืฉืจืช ืืื? ืื ืืขืฉืืช? ืืื ืืช ืื ืืฉืืื (ืืื ืขืื ืขื ืื ืืืืง ืืฉื ื).
ืืื ืื ืืขื ืืื ื ืขืฉื ืขื ืืืื
ืืื ืื ืื ืืขืฉืืช, ืคืฉืื ืืืืชื ืืืืืจ ืืกืคืจืื ืืืื ืืฉืื
ืฉื ื ืืกืคืจื 32 ืกืืืืืช. ืืจืืชื ืืืชื ืืื ืืืื
ืืื ืื, ืฆืจืื ืืืืกืืฃ ืืช ืฉื ื ืืื ืืฉืืจื ืชืืืื ืืชืืจ BE
ืืืืื ืืื ืฆ'ืจืื, [20.06.18 15:49] ืืืืื ืื 404?
ืืืกืืื, [20.06.18 15:49] ืื!
ืืืืื ืืื ืฆ'ืจืื, [20.06.18 15:50] ืื ืื ื ืื ืืืื ืื ืืื ืืืื "ืื ืืฆื"
ืืกืืื, [20.06.18 15:50] ื
ืื ืืฆืืืชื ืืืฆืื ืคืืจืืง ืืื ืืืืจืืื ืจืืฉืื ืืื%)
ืืคืืื ืื ื ืืืื ื ืืืืื ืขื ืฉืืืืืช
ืืืกืืื, [20.06.18 20:18] ืื, ืืฉ ืื MD5. ืืืจ ืฉืืืฉื ืืฉืืฉืื ืฉืื ืื
ืืืืขืช ืืืฆืืข ืฉื ืืืคืชื ืืืืฉืืช ืืืืคื ืืื:
digest = md5(key + iv) fingerprint = substr(digest, 0, 4) XOR substr(digest, 4, 4)
SHA1 ื-sha2
ืื ืืืื ื ื ืื ืืช ืื auth_key
ืงืืืื ื 2048 ืกืืืืืช ืืืืื ืืืืฆืขืืช ืืืคื-ืืืื. ืื ืืืื? ืืฉืื ืืื ืื ื ืืืืื ืฉ-1024 ืืกืืืืืช ืืชืืชืื ืืช ืฉื ืืืคืชื ืืื ืื ืืฉืืฉืืช ืืฉืื ืฆืืจื... ืืื ืืืื ื ืืฉืื ืขื ืื ืืขืช ืขืชื. ืืฉืื ืื, ืืฉ ืื ื ืกืื ืืฉืืชืฃ ืขื ืืฉืจืช. ืืืงื ืื ืืืื ืืืคืืฉ TLS, ืฉืืื ืืืื ืืงืจ ืืืื. ืืื ืืฉืจืช ืขืืืื ืื ืืืืข ืืืื ืขื ืื ืื ืื ื! ืขืืืื ืื, ืืขืฆื. ืืจืฉืื. ืึธืึตื. ืื ืืฉืืชื ืืืื ืืื ืฉื "ืกืืกืืช ืื ืืกื", ืืื ืฉืขืฉืืชื ืคืขื ื-ICQ, ืื ืืคืืืช "ืืคืชื ืื ืืกื", ืืื ื-SSH (ืืืืืื, ื-gitlab/github ืืืฉืื). ืงืืืื ื ืืื ืื ืื ืืื. ืื ืื ืืฉืจืช ืืืืจ ืื ื "ืืกืคืจื ืืืืคืื ืืืื ืืืืคืืื ืขื ืืื DC ืืืจ"? ืื ืืคืืื "ืืกืคืจ ืืืืคืื ืฉืื ืืกืืจ"? ืืื ืืื ืฉืื ืื ื ืืืืืื ืืขืฉืืช ืื ืืฉืืืจ ืืช ืืืคืชื ืืชืงืืื ืฉืืื ืืืื ืฉืืืืฉื ืืื ืืจืงื ืขื ืื.
ืืื, "ืงืืืื ื" ืืืชื ืืืกืชืืืืืืืช. ืืืืืื, ืืื ืื ื ืกืืืืื ืขื ืืฉืจืช? ืื ืื ืื ืืืืืฃ? ืืืื ืฆืืจื ืืืืืงืืช ืงืจืืคืืืืจืคืืืช:
Vasily, [21.06.18 17:53] ืื ืืฆืืขืื ืืืงืืืืช ื ืืืืื ืืืืืง ืืกืคืจ 2kbit ืขืืืจ ืจืืฉืื ืืืช%
ืืื ืื ืื ืืจืืจ ืืืื, nafeijoa
ืืืกืืื, [21.06.18 18:02] ืืืกืื ืื ืืืืจ ืื ืืขืฉืืช ืื ืืชืืจืจ ืฉืื ืื ืคืฉืื
ืื ื ืืืจ. ืืื ื ืจืื ืื ืืงืื ืื ืืจืืืื ืืจืฉืื ืขืืฉื ืืืงืจื ืื? ื
278 static const char *goodPrime = "c71caeb9c6b1c9048e6c522f70f13f73980d40238e3e21c14934d037563d930f48198a0aa7c14058229493d22530f4dbfa336f6e0ac925139543aed44cce7c3720fd51f69458705ac68cd4fe6b6b13abdc9746512969328454f18faf8c595f642477fe96bb2a941d5bcd1d4ac8cc49880708fa9b378e3c4f3a9060bee67cf9a4a4a695811051907e162753b56b0f6b410dba74d8a84b2a14b3144e0ef1284754fd17ed950d5965b4b9dd46582db1178d169c6bc465b0d6ff9ca3928fef5b9ae4e418fc15e83ebea0f87fa9ff5eed70050ded2849f47bf959d956850ce929851f0d8115f635b105ee2e4e15d04b2454bf6f4fadf034b10403119cd8e3b92fcc5b";
279 if (!strcasecmp(prime, goodPrime)) {
ืื, ืืืืื ืฉืื ืขืืืื ืฉื ืืื ืืฉ ืืืื ืื ืืจืืฉืื ืืืช ืฉื ืืกืคืจ, ืืื ืืืฉืืช ืืืจ ืืื ืื ืืกืคืืง ืืืข ืืืชืืืืงื.
ืืืงืื, ืืฉืื ื ืืช ืืืคืชื ืืจืืฉื. ืืื ืืืืื ืก, ืืืืืจ. ืืฉืืื ืืงืฉืืช, ืขืืื ืืืฆืข ืืฆืคื ื ื ืืกืคืช ืืืืฆืขืืช AES.
ืืคืชื ืืืืืขื ืืืืืจ ื-128 ืืกืืืืืช ืืืืฆืขืืืช ืฉื SHA256 ืฉื ืืืฃ ืืืืืขื (ืืืื ืืคืขืื, ืืืื ืืืืขื ืืื'), ืืืื ืืชืื ืฉื ืจืืคืื, ืืคื ืื 32 ืืชืื ืฉื ืืงืื ืืืคืชื ืืืจืฉืื.
ืืกืืื, [22.06.18 14:08] ืืืืฆืข, ืืืื, ืืชืืืืช
ืงืืืื
auth_key
. ืืช ืื. ืืขืืจ ืืื... ืื ืืจืืจ ืืืืกืื. ืื ืชืืกืก ืืืืื ืืช ืงืื ืืงืื ืืคืชืื.ืฉืืื ืื ืฉ-MTProto 2.0 ืืืจืฉ ืจืืคืื ืืื 12 ื-1024 ืืชืื, ืขืืืื ืืชื ืื ืฉืืืจื ืืืืืขื ืืืชืงืืืช ืืชืืืง ื-16 ืืชืื.
ืื ืืื ืจืืคืื ืืืื ืืืืกืืฃ?
ืืื, ืืฉ ืื 404 ืืืงืจื ืฉื ืฉืืืื
ืื ืืืฉืื ืืื ืืืื ืืช ืืชืจืฉืื ืืืืงืกื ืฉื ืืชืืขืื, ืืื ืฉื ืื ืฉืืื ืฉื MAC. ืื-AES ืืฉืืฉ ืืืฆื IGE ืืกืืื ืฉืืื ื ืืฉืืืืฉ ืืฉืื ืืงืื ืืืจ. ืื, ืืืืื, ืืืชืืื ืขื ืื ืืฉืืืืช ืื ืคืืฆืืช ืฉืืื... ืืื, ืืืฉื, ืืคืชื ืืืืืขื ืขืฆืื ืืื ืื ื-SHA hash ืฉื ืื ืชืื ืื ืืืคืืขื ืืื, ืืืฉืืฉ ืืืืืงืช ืชืงืื ืืช - ืืืืงืจื ืฉื ืืืกืจ ืืชืืื, ืืชืืขืื ืืกืืื ืืืฉืื ืืืืืฅ ืืืชืขืื ืืื ืืฉืงื (ืืื ืื ืืืื ืืืืื, ืื ืื ืืฉืืจื ืืืชื ื?).
ืื ื ืื ืงืจืืคืืืืจืฃ, ืืืื ืืื ืฉืื ืืืจ ืจืข ืืืฆื ืืื ืืืงืจื ืืื ืื ืงืืืช ืืื ืชืืืืจืืืช. ืืื ืื ื ืืืื ืืฆืืื ืืืืจืืจ ืืขืื ืืขืฉืืช, ืืืืฆืขืืช Telegram Desktop ืืืืืื. ืืื ืืฆืคืื ืืช ืืืืืื ืืืงืืื (ืื ืืื D877F783D5D3EF8C) ืืืืชื ืืืคื ืืื ืืืืขืืช ื-MTProto (ืจืง ืืืงืจื ืื ืืจืกื 1.0), ืืืืืจ. ืงืืื ืืคืชื ืืืืืขื, ืืืจ ืื ืื ืชืื ืื ืขืฆืื (ืืืืคืฉืื ืืฆื ืืืืื ืืขืืงืจื auth_key
256 ืืชืื, ืืืขืืืื msg_key
ืึฒืกึทืจ ืชืึนืขึถืึถืช). ืื, ืืืขืื ืืืคืืช ืืืืืช ืืงืืฆืื ืืืืืื. ืืืืืจ, ืืชื ืฆืจืื ืืฉืืืจ ืฉื ื ืขืืชืงืื ืฉื ืื ืชืื ืื - ืืืฆืคื ืื ืืืคืืขื ืืื. ืืื ืืฉ ืืื-ืืืื, ืื ืกืืจืืืื ื ืฉื ืืืืื, ืืืฉื?.. ืกืืืืืช ืงืืืกืืืช ืขื MAC ืืืจื ืืงืกื ืืืฆืคื ื ืืืคืฉืจืืช ืืงืจืื ืืืชื ืืืจื, ืืื ืืฉืืจ ืืืชื. ืืื ืขื MTProto ืชืฆืืจื ืืืชืืื ืืืฆืคืื ืื ืืคืขื ื ืืช ืื ืืืืืขื, ืจืง ืืืืจ ืืื ืืืขืืืจ ืืืชื ืืจืฉืช ืื ืืืืกืง. ืืื, ืืืจืกืืืช ืืืืจืื ืืช ืฉื Telegram Desktop ื-cache in user_data
ื ืขืฉื ืฉืืืืฉ ืื ืืคืืจืื ื ืืกืฃ - ืขื AES ืืืฆื CTR.
Vasily, [21.06.18 01:27] ืื, ืืืืืชื ืื ืื IGE: IGE ืืื ืื ืืกืืื ืืจืืฉืื ืฉื "ืืฆื ืืฆืคื ื ืืืืืช", ืืืงืืจ ืขืืืจ Kerberos. ืื ืืื ื ืืกืืื ืืืฉื (ืืื ืื ืืกืคืง ืืื ืช ืฉืืืืช), ืืืื ืฆืจืื ืืืกืืจื. ืื ืืืืชื ืชืืืืชื ืฉื ืืกืข ืฉื 20 ืฉื ื ืืืจ ืืฆื ืืฆืคื ื ืืืืืช ืฉืขืืื, ืฉืืืืข ืืฉืืื ืืืืจืื ื ืืืฆืืื ืืื OCB ื- GCM.
ืืขืืฉืื ืืืืขืื ืื ืืืฆื ืฉื ืืขืืื:
ืืฆืืืช ืืืืืจื ืืืืจื, ืืจืืฉืืชื ืฉื ื ืืงืืืื ืืืจืื, ืืืจืื ืืฉืืฉื ืืืืคื ACM, ืืืฆืืชื ืืืงืืืจื ืืื ืืืชืืืืงื. ืืงื ืืื ืืฉื ืชืืื ืืืืฆืื ืืช ืืืจืกื ืื ืืืืืช ืฉื MTProto.
ืื ืืฆืืืง. ืฉื ืชืืื ืืจืื ื ืืืื ืืืชืจ
ืื ืฉืืชื ืืืื ืคืฉืื ืืงืืช tls
ืืืงืื, ื ื ืื ืฉืืืฆืขื ื ืืช ืืืฆืคื ื ืื ืืืื ืกืื ืืืจืื. ืืื ืกืืฃ ืกืืฃ ืืคืฉืจ ืืฉืืื ืืงืฉืืช ืืกืืืจืืช ื-TL ืืื ืืจื ืืช ืืชืืืืืช? ืื ืื ืืืื ืืืื ืืฉืืื? ืื ื, ื ื ืื, ืืฉืืื
Vasily, [25.06.18 18:46] ืืืชืื ืืืืืจ ืืฉืืืจืช ืืืืข ืืืืฉืืจ ืืืืคืืืงืฆืื ืฉื ืืืฉืชืืฉ.
ืืื ืืงืื app_id, device_model, system_version, app_version ื-lang_code.
ืืงืฆืช ืฉืืืืชื
ืชืืขืื ืืื ืชืืื. ืืชื ืืืืื ืืืืื ืืช ืืงืื ืืคืชืื
ืื ืืื ืืื ืืจืืจ ืืขืจื ืขื invokeWithLayer, ืื ืื ืื ืืกืืจ ืืื? ืืกืชืืจ, ื ื ืื ืฉืืฉ ืื ื - ืืืงืื ืืืจ ืืื ืขื ืื ืืฉืืื ืืช ืืฉืจืช - ืืฉ ืืงืฉื ืฉืจืฆืื ื ืืฉืืื:
ืืกืืื, [25.06.18 19:13] ืื ืืฉืคืื ืืคื ืืงืื, ืืฉืืื ืืจืืฉืื ื ืขืืืคื ืืืื ืืื, ืืืฉืืืช ืขืฆืื ืขืืืคื ื-invokewithlayer
ืืื initConnection ืื ืืืืื ืืืืืช ืฉืืื ื ืคืจืืช, ืืื ืืืืืช ืืืืืช ืขืืืคื? ืื, ืืคื ืฉืืชืืจืจ, ืื ืืืื ืืืืขืฉืืช ืืื ืคืขื ืืชืืืืช ืื ืคืืืฉื, ืืื ืคืขื ืืืช, ืืื ืขื ืืืคืชื ืืจืืฉื. ืืื! ืื ื ืืชื ืืืชืงืฉืจ ืืืื ืขื ืืื ืืฉืชืืฉ ืื ืืืจืฉื! ืขืืฉืื ืืืขื ื ืืฉืื ืฉืื ืื ืืฉืื
ืจืง ืืืง ืงืื ืืฉืืืืช ื-API ืืืื ืืช ืืืฉืชืืฉืื ืื ืืืจืฉืื:
- auth.sendCode
- auth.resendCode
- account.getPassword
- auth.checkPassword
- auth.checkPhone
- auth.signUp
- auth.signIn
- auth.importAuthorization
- help.getConfig
- help.getNearestDc
- help.getAppUpdate
- help.getCdnConfig
- langpack.getLangPack
- langpack.getStrings
- langpack.getDifference
- langpack.getLanguages
- langpack.getLanguage
ืืจืืฉืื ืฉืืื, auth.sendCode
, ืืืฉ ืืช ืืืงืฉื ืืจืืฉืื ื ืืืงืจื ืฉืื ืื ืื ื ืฉืืืืื api_id ื-api_hash, ืืืืจืื ืืงืืืื SMS ืขื ืงืื. ืืื ืื ืื ื ื ืืฆืืื ื-DC ืืื ื ืืื (ืืกืคืจื ืืืคืื ืืืืื ื ืื ืืฉืจืชืื ืขื ืืื ืืืจ, ืืืฉื), ืื ื ืงืื ืฉืืืื ืขื ืืกืคืจ ื-DC ืืจืฆืื. ืืื ืืืืืช ืืืืื ืืชืืืช IP ืืคื ืืกืคืจ DC ืืชื ืฆืจืื ืืืชืืืจ, ืขืืืจ ืื ื help.getConfig
. ืคืขื ืืื ืจืง 5 ืื ืืกืืช, ืืื ืืืจื ืืืืจืืขืื ืืืคืืจืกืืื ืฉื 2018, ืืืกืคืจ ืืื ืืืืคื ืืฉืืขืืชื.
ืขืืฉืื ืืืื ื ืืืืจ ืฉืืืขื ื ืืฉืื ืืื ืืฉืจืช ืืืืคื ืื ืื ืืื. ืื ืื ืืงืจ ืืื ืืงืื ืจืง ืืชืืืช IP? ืืื ืื ืืขืฉืืช ืืช ืื, ืืคืขืืืืช ืืืจืืช, ืืืืง ืืื ืืืฆืคื ืฉื MTProto? ืื ื ืฉืืืข ืืช ืืืชื ืืืืช: "ืืื ื ืืื ืืืืื ืฉืื RKN ืืื ืฉืืืื ืืืชืืืืช ืืืืืืช?" ืืื ืื ื ืืืืจืื ืื, ืืืืคื ืืืื, ืืงืืืืช ืจืฉืืืื ืืคืชืืืช RSA ืืืืืขืื, ืืืืืจ ืืชื ืืืื ืคืฉืื ืกึดืืึธื ืืืืืข ืืื. ืืืขืฉื, ืื ืืืจ ื ืขืฉื ืขืืืจ ืืืืข ืขื ืขืงืืคืช ืืกืืื ืฉืืงืืืืช ืืงืืืื ืืจื ืขืจืืฆืื ืืืจืื (ืืืืื ื ืืืืืช, ืื ืื ืืืื ืืืืขืฉืืช ื-MTProto ืขืฆืื; ืฆืจืื ืื ืืืขืช ืืื ืืืชืืืจ).
ืืกืืจ. ืืฉืื ืื ืฉื ืืจืฉืืช ืืืงืื, ืื ืื ื ืขืืืื ืื ืืืจืฉืื ืืื ืจืฉืื ื ืืช ืืืงืฉื ืฉืื ื. ืื ืื ื ืจืง ืจืืฆืื ืืจืืืช ืืขืช ืขืชื ืื ืืฉืจืช ืืืื ืืฉืืืืช ืืืืื ืืช ืืืฉืชืืฉ ืื ืืืจืฉื. ืืื ืโฆ
ืืกืืื, [10.07.18 14:45]
https://core.telegram.org/method/help.getConfig config#7dae33e0 [...] = Config; help.getConfig#c4f9186b = Config;
https://core.telegram.org/api/datacenter config#232d5905 [...] = Config; help.getConfig#c4f9186b = Config;
ืืชืื ืืช, ืจืืฉืื ืืืืข ืฉื ื
ืืกืืืืช tdesktop ืืขืจื ืืฉืืืฉื ืืื
ืื, ืืื, ืืืืื, ืืชืืขืื ืขืืืื. ืืืจืืช ืฉืืงืจืื ืื ืฉืื ืขืืื ืืืคืื ืืื ืจืืืื ืื. ืืื ืืคืชื ืืชืืื ืฆืจืื ืืืขืช? ืืืื ืื ืชืจืฉืื ืืช ืืืงืฉื ืฉืื, ืื ืืืืืขื ืื? ืืืกืืื ืขืฉื ืืช ืื, ืืื ืืืื, ืื ืื ืฉืืื ืื ืฉืื ืืืจ (ืฉืื, ื ืืืจ ืขื ืื ืืืืง ืืฉื ื).
...ืฉืืชื ืื ืฉืืืจ ืืืืฉืื ืขืืจื ื ื-API, ืืืืืจ. ืืฉืื ืืื, ืืคืกืคืก ืืฉืื ืื ืืฉื MTProto? ืื ืืคืชืืข:
ืืืกืืื, [28.06.18 02:04] ืื, ืื ืืคืฉืคืฉืื ืืืื ืืืืืืืจืืชืืื ื-e2e
Mtproto ืืืืืจ ืืืืืจืืชืื ืืฆืคื ื ืืืคืชืืืช ืืฉื ื ืืชืืืืื, ืืื ืื ืืื ื ืืขืืคืช
ืืื ืื ืื ืืืื ืืขืจืืืื ืจืืืช ืฉืื ืืช ืฉื ืืขืจืืื, ืื ืฉืื ืชืืื ืืจืืจ ืืืคื mtproto ื ืืืจ ืืืฉืื ืืื ืืชืืื
ืืื ืื ืืชืขืจืืืื? ืืืื, ืื ื ืืืชื ืืคืชื ืืื ื ืขืืืจ PFS, ืืืฉื (ืืื, Telegram Desktop ืื ืืืื ืืขืฉืืช ืืช ืื). ืื ืืืืฆืข ืขื ืืื ืืงืฉืช API auth.bindTempAuthKey
, ืืืืืจ ืืืจืื ืืขืืืื ื. ืืื ืืืืชื ืืื ืื ืืคืจืืข ืืืฆืคื ื ืืจืื ืื ืืืื ืืืชืจ - ืืืจื ืื, ืืืฉื, ืืชื ืฆืจืื ืืขืฉืืช ืืช ืื ืฉืื initConnection
ืืื', ืื ืื ืจืง ืืงืฉื ืจืืืื. ืื ืฉืืืืื ืืื ืฉืืชื ืืืื ืืงืื ืจืง ืืคืชื ืืื ื ืืื ืืื DC, ืืืจืืช ืืฉืื auth_key_id
ืืื ืืืืขื ืืืคืฉืจ ืื ืืฉื ืืช ืืช ืืืคืชื ืืคืืืช ืืื ืืืืขื, ืืืฉืจืช ืืฉ ืืช ืืืืืช "ืืฉืืื" ืืช ืืืคืชื ืืืื ื ืืื ืขืช - ืืชืืขืื ืื ืืืืจ ืื ืืขืฉืืช ืืืงืจื ืื... ืืืื, ืืื ืืคืฉืจ ืืื ืื ืืื ืืคืชืืืช, ืืื ืขื ืกื ืฉื ืืืืื ืขืชืืืืื, ื?..
ืืฉ ืขืื ืืื ืืืจืื ืฉืืืื ืืฉืื ืื ืื ืืฉื MTProto.
ืืืืขืืช ืืืืขื, msg_id, msg_seqno, ืืืฉืืจืื, ืคืื ืืื ืืืืืื ืืื ื ืืื ืืขืื ืืืืจืืืืช
ืืื ืืชื ืฆืจืื ืืืขืช ืขืืืื? ืื ืื "ืืืืคืื" ืืจืื ืืืืื ืืืชืจ, ืืืชื ืฆืจืื ืืืืืช ืืืืข ืืืืื ืืฉืืชื ืขืืื ืขื ื-API. ืืื ื ื ืื ืฉืื ืื ื ืื ืืขืื ืืื ืื ื-msg_key; ืืจืื ืื ืืืื ืคืืขื ืื ืขืืืจื ื ืืื. ืืื ืืชืื ืื ืชืื ืื ืืืคืืขื ืืื ืืฉ ืื ื ืืช ืืฉืืืช ืืืืื (ืื ืืช ืืืจื ืื ืชืื ืื, ืื ืื ืื ื ืืืืขืื ืืืคื ืืจืืคืื, ืืื ืื ืื ืืฉืื):
- ืืื - int64
- session_id - int64
- message_id - int64
- seq_no - int32
ื ืืืืจ ืืื ืฉืืฉ ืจืง ืืื ืืื ืืื ื-DC. ืืื ืืืขืช ืขืืื? ืื ืจืง ืืืื ืฉืืฉ ืืงืฉื get_future_salts
, ืฉืืืืจ ืื ืืืื ืืจืืืืื ืืืื ืชืงืคืื, ืืื ืื ืื ืื ืืืื ืฉืื "ืจืงืื", ืื ืืืืืขื (ืืืงืฉื) ืคืฉืื ืชืืื. ืืฉืจืช, ืืืืื, ืืืืื ืขื ืืืื ืืืืฉ ืขื ืืื ืื ืคืงื new_session_created
- ืืื ืขื ืืืฉื ืชืฆืืจื ืืฉืืื ืืืชื ืืืืฉืื ืืืืฉ, ืืืฉื. ืืื ืืฉื ืืื ืืฉืคืืข ืขื ืืจืืืืงืืืจืช ืืืคืืืงืฆืื.
ืืฉืจืช ืจืฉืื ืืืคืกืืง ืืช ืืคืขืืืช ืืืืืืื ืืืืืื ืืฆืืจื ืื ืืกืืืืช ืจืืืช. ืืืขืฉื, ืืื ืืคืืฉ MTProto ืืฆื ืืืงืื? ืืื ืฉื ื ืืกืคืจืื session_id
ะธ seq_no
ืืืืขืืช ืืชืื ืืคืขืื ืื. ืืืื, ืืืืืืจ ื-TCP ืืืกืืกื, ืืืืื. ื ื ืื ืฉืืืงืื ืฉืื ื ืขืืืื ืื ืืืืข ืืขืฉืืช ืืจืื ืืืจืื, ืืื ืืชื ืชืง ืืืชืืืจ ืืืืฉ. ืื ืื ืงืจื ืืืจ - ืืืคืขืื ืืืฉื ื ื ืืฉืื ืืืืืืจ ื-TCP ืืืืฉ, ืืืื seq_no
ื ืืกืฃ. ืื ืื ืืืงื ืืจืื ืืื, ืืฉืจืช ืืืื ืืืืืง ืืืชื, ืื ืืฆื ืฉืื ืื ืื ืชืืจ, ืืคื ืฉืืืืื ื.
ืื ืื ืฆืจืื ืืืืืช seq_no
? ืื, ืื ืฉืืื ืืกืืืืช. ื ืกื ืืืืื ืืื ืืช ืืื ืืืืื ื:
ืืืืขื ืืงืฉืืจื ืืชืืื
ืืืืขื ืืืืจืฉืช ืืืฉืืจ ืืคืืจืฉ. ืืื ืืืืืื ืืช ืื ืืืฉืชืืฉ ืืืืืขืืช ืฉืืจืืช ืจืืืช, ืืืขืฉื ืืืื ืืืขื ืงืื ืืืื ืจืื ืืืืฉืืจืื.
ืืกืคืจ ืจืฆืฃ ืืืืขื (msg_seqno)
ืืกืคืจ 32 ืกืืืืืช ืืฉืืื ืืืกืคืจ ืืคืื ืฉื ืืืืขืืช "ืงืฉืืจืืช ืืชืืื" (ืืื ืืืืจืฉืืช ืืืฉืืจ, ืืืืืืื ืืื ืฉืืื ื ืืืืืืช) ืฉื ืืฆืจื ืขื ืืื ืืฉืืื ืืคื ื ืืืืขื ืื ืืืืืฉื ืืืื ืืืืช ืื ืืืืืขื ืื ืืืืืช ืืื ืืืืขื ืืงืฉืืจื ืืชืืื. ืืืื ื ืืฆืจ ืชืืื ืืืจื ืื ืืชืืื ืฉืื; ืืื, ืืกืคืจ ืืจืฆืฃ ืฉืื ืืืื ืื ืฉืืื ืืืกืคืจื ืืจืฆืฃ ืฉื ืืืืืขืืช ืืืืืืื ืื.
ืืืื ืกืื ืฉื ืงืจืงืก ืื ืขื ืขืืืื ืฉื 1, ืืืืจ ืื ืขืื ื-2?.. ืื ื ืืืฉื ืฉืืืชืืื ืื ืืชืืืื ื "ืืืืง ืืื ืคืืืช ืืฉืืขืืชื ืขืืืจ ACK, ืืฉืืจ ืื ืืกืคืจ", ืืื ืืชืืฆืื ืื ืืืฉ ืืื - ืืคืจื, ืื ืืืฆื, ื ืืชื ืืฉืืื ืืื ืืืฉืืจืื ืืขืื ืืืชื ืืืจ seq_no
! ืึตืื? ืืืื, ืืืฉื, ืืฉืจืช ืฉืืื ืื ื ืืฉืื, ืฉืืื ืืืชื, ืืื ืื ื ืขืฆืื ื ืฉืืชืงืื, ืจืง ืืืืืื ืืืืืขืืช ืฉืืจืืช ืืืืฉืจืืช ืืช ืงืืืช ืืืืืขืืช ืฉืื. ืืืงืจื ืื, ืืืืฉืืจืื ืืืืฆืืื ืฉืื ื ืืืื ืืขืื ืืืชื ืืกืคืจ ืืืฆื. ืื ืืชื ืืืืจืื ืืช TCP ืืืฉืืชื ืฉืื ื ืฉืืข ืคืจืืข ืืืืฉืื, ืืื ืื ื ืจืื ืื ืืืื ืคืจืืข, ืื ื-TCP seq_no
ืื ืืฉืชื ื, ืืื ืืืืฉืืจ ืขืืืจ ื seq_no
ืืืฆื ืืฉื ื, ืื ื ืืืืจ ืืืจืืื ืืืชื. ืืืฉืืจืื ืืกืืคืงืื ื-MTProto ืื ืขื seq_no
, ืืื ื-TCP, ืืื ืืคื msg_id
!
ืื ืื msg_id
, ืืืฉืื ืืืืชืจ ืืืื ืืชืืืืื ืืืื? ืืืื ืืืืขื ืืืืืื, ืืคื ืฉืืฉื ืืจืื. ืืื ืืืืืจ ืืืกืคืจ ืฉื 64 ืกืืืืืช, ืฉืืกืืืืืช ืื ืืืืืช ืืืืชืจ ืฉืืื ืืฉ ืฉืื ืืช ืืงืกื ืฉื "ืฉืจืช-ืื-ืฉืจืช", ืืืฉืืจ ืืื ืืืชืืช ืืื ืฉื ืืื ืืงืก, ืืืื ืืืืง ืืฉืืจืืจื, ืืืืื 32 ืกืืืืืช ืฉืืืื. ืึธืึตื. ืืืชืืช ืืื ืืฉืืขืฆืื (ืืืืืขืืช ืขื ืืื ืื ืฉืื ืื ืืื ืืืืื ืขื ืืื ืืฉืจืช). ืืืื ืืกืชืืจ ืฉืืืืคื ืืืื ืืืืืจ ืขื ืืืื ืฉืืื ืืืืืื ืขืืืจ ืืืงืื. ืืืชืืฉื ืืื - ืืืื ื ืืืืจ session_id
- ืืืืื ืื ื: ืืฉืื ืคื ืื ืืืืคื ืื ื ืืชื ืืฉืืื ืืืืขื ืืืืืขืืช ืืืคืขืื ืืืช ืืืคืขืื ืืืจืช. ืืืืืจ, ืืกืชืืจ ืฉืืืจ ืืฉ ืฉืืืฉ ืจืื - ืืคืขืื, ืืกืคืจ ืืคืขืื, ืืืื ืืืืขื. ืืืืข ืกืืืื ืืชืจ ืืื, ืืืกืชืืจืื ืืื ืืืื ืืืื.
ืืคืืื, msg_id
ื ืืืฅ ื...
RPC: ืืงืฉืืช, ืชืืืืืช, ืฉืืืืืช. ืืืฉืืจืื.
ืืคื ืฉืืืื ืฉืืชื ืื, ืืื ืกืื ืื ืคืื ืงืฆืื ืืืืืืช ืฉื "ืืฆืข ืืงืฉืช RPC" ืืฉืื ืืงืื ืืชืจืฉืื, ืืืจืืช ืฉืืฉ ืชืฉืืืืช. ืืืจื ืืื, ืืฉ ืื ื ืืืืขืืช ืืงืฉืืจืืช ืืชืืื! ืื, ืื ืืืืืขื ืืืืื ืืืืืช ืืงืฉื! ืื ืื ืืืืืช. ืืืจื ืืื, ืื ืืฉ msg_id
. ืืื ืืฉ ืชืฉืืืืช:
rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult;
ืืื ืืฆืืื ืืืืื ืืืืขื ืืืืืจ ืืชืืืื. ืืื, ืืจืื ืืขืืืื ื ืฉื ื-API, ืชืฆืืจืื ืืืืืจ ืื ืืื ืืกืคืจ ืืืงืฉื ืฉืืื - ืื ื ืืืฉื ืฉืืื ืฆืืจื ืืืกืืืจ ืฉืืขืืืื ืืื ืืกืื ืืจืื ืืช, ืืืืืืืช ืืืืืช ืืกืคืจ ืืงืฉืืช ืืขืืฆืืื ืื ืืื ืืช, ืืช ืืชืฉืืืืช ืืื ื ืืชื ืืืืืืจ ืืื ืกืืจ? ืืืืคื ืขืงืจืื ื, ืืชืื ืื ืืืืืขืืช ืฉืืืื ืืื ืืื ืขืืืืื, ื ืืชื ืืขืงืื ืืืจ ืืืจืืืืงืืืจื ืืืืืจื ืื: ืืฉืจืช ืฉืฉืืืจ ืืืชื ืขื ืืืืืจ TCP ืืื ืืืื ืืืืชื, ืืื ืืขืืืจ ืืงืฉืืช ื-backends ืืืืกืฃ ืืืชื ืืืืจื ืืืืฆืขืืช message_id
. ื ืจืื ืฉืืื ืืื ืืจืืจ, ืืืืื ื ืืืื.
ืื?.. ืืื ืืืฉืืื ืขื ืื? ืืจื ืื ืืชืืืืช ื-RPC ืขืฆืื ืืฉ ืฉืื msg_id
! ืืื ืื ืื ื ืฆืจืืืื ืืฆืขืืง ืืฉืจืช "ืืชื ืื ืขืื ื ืื ืขื ืืชืฉืืื!"? ืืื, ืื ืืื ืืืื ืืืฉืืจืื? ืขืืื ืืืืืช
msgs_ack#62d6b459 msg_ids:Vector long = MsgsAck;
ืืื ืืืื ืืืืขืฉืืช ืขื ืืื ืื ืฆื. ืืื ืื ืชืืื! ืื ืงืืืืช RpcResult, ืื ืขืฆืื ืืฉืืฉ ืืืืฉืืจ. ืืืืืจ, ืืฉืจืช ืืืื ืืืืื ืืืงืฉื ืฉืื ืขื MsgsAck - ืืื, "ืงืืืืชื ืืช ืื." RpcResult ืืืื ืืืืื ืืื. ืื ืืืื ืืืืืช ืื ืืื.
ืืื, ืืชื ืขืืืื ืฆืจืื ืืขื ืืช ืขื ืืชืฉืืื! ืึดืฉืืึผืจ. ืืืจืช, ืืฉืจืช ืืืฉืื ืืืชื ืืืืชื ื ืืชื ืืืกืืจื ืืืฉืื ืืืชื ืืืื ืฉืื. ืื ืืืืจ ืืืืืจ ืืืืฉ. ืืื ืืื, ืืืืื, ืขืืื ืกืืืืืช ืคืกืงื ืืืื. ืืืื ื ืกืชืื ืขืืืื ืงืฆืช ืืืืืจ ืืืชืจ.
ืืื ืชืืื, ืืืื ื ืกืชืื ืขื ืฉืืืืืช ืืคืฉืจืืืช ืืืืฆืืข ืฉืืืืชื.
rpc_error#2144ca19 error_code:int error_message:string = RpcError;
ืื, ืืืฉืื ืืฆืขืง, ืื ื ืคืืจืื ืืืชืจ ืื ืืฉื โ ืืฉ ืืฉืืจื! ืงื ืืช ืืืื. ืืื FLOOD_WAIT_3600
ืื ืืืืจ ืฉืืชื ืฆืจืื ืืืืืช ืฉืขื, ื PHONE_MIGRATE_5
, ืฉืืกืคืจ ืืืคืื ืขื ืงืืืืืช ืื ืืืื ืืืืืช ืจืฉืื ื-5th DC. ืืฉ ืื ื ืฉืคืช ืืืคืืก, ื ืืื? ืื ืื ื ืื ืฆืจืืืื ืืืืื ืืืืจืืืช, ืจืืืืื ืืขืฉื ืืืช, ืืกืืจ.
ืฉืื, ืื ืื ืืขืืื ืืืืขืืช ืืฉืืจืืช, ืืื, ืืคื ืฉืืืจ ื ืืื ืืคืจืืืงื ืื, ื ืืชื ืืืฆืื ืืช ืืืืืข ืืืฃ ืชืืขืื ืืืจ. ืื ืืืืื ืืฉื. ืจืืฉืืช, ืชืจืื, ืืงืืื/ืืคืจืช ืฉืืื - RpcError
ื ืืชื ืืงื ื RpcResult
. ืืื ืื ืืืืฅ? ืื ืื ืืงืื ื ืืืฉืืื?.. ืืืชืื, ืืืื ืืขืจืืืช ืืื RpcError
ืื ืืืื ืืืืืช ืืืืืข ื RpcResult
, ืืื ืืืืืช ืืฉืืจืืช ืื ืืงืื ื ืืกืื ืืืจ?.. ืืื ืื ืื ืืืื, ืืื ืื ืื ืืจืื ืืขืืืื ื, ืืืืืจ. ืื ืืกืจ req_msg_id
? ..
ืืื ืืืื ื ืืฉืื ืืืื ืืืืขืืช ืฉืืจืืช. ืืืงืื ืขืฉืื ืืืฉืื ืฉืืฉืจืช ืืืฉื ืืจืื ืืื ืืืืงืฉ ืืช ืืืงืฉื ืื ืคืืื ืืื:
rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer;
ืืฉื ื ืฉืืืฉ ืชืฉืืืืช ืืคืฉืจืืืช ืืฉืืื ืื, ืฉืื ืืฆืืืืืช ืขื ืื ืื ืื ืืืืฉืืจ; ืื ืืกืืื ืืืืื ืื ืื ืฆืจืืืืช ืืืืืช (ืืื ืืจืฉืืื ืืืืืืช ืฉื ืืกืืืื ืฉืืื ื ืืืจืฉืื ืืืฉืืจ) ื ืืชืจ ืืงืืจื ืืฉืืขืืจื ืืืช (ืฉืืื ืื: ืืืืืข ื ืงืื ืืืงืืจ ืฉื Telegram Desktop ืืื ื ืฉืื).
ืืชืืืจืืช ืืกืืื: ืกืืืืกืื ืฉื ืืืืขืืช
ืืืืคื ืืืื, ืืงืืืืช ืจืืื ื-TL, MTProto ืืืืืืจื ืืืื ืืฉืืืจืื ืชืืืฉืช ืขืงืฉื ืืช, ืื ืืชืื ื ืืืืก, ืืงื ืืืืจืื ืืืืื ืืืืช ืจืืืช ืฉืชืงื ื ืขื ืื ืื ืืืืก, ืืฆืื ืืจื ื ืืช ืืืกืืืืช ืืืืืืืืื. ืขื ืืืช, ืืืงืื ืืืะืจืื ืืขืืื ืขืืกืง
ืื ืืชืืื ืืชืืืืืช, ืขื ืืืฉืืจืื. ืืืจ ืื ืื ืืกืคืจืื ืื ื ืขื
bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification;
bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification;
ืืืื, ืื ืื ืฉืืชืืื ืืขืืื ืขื MTProto ืืฆืืจื ืืืชืืืื ืืืชื; ืืืืืืจ "ืชืืงื - ืืืืืจ ืืืืฉ - ืืืฉืง", ืงืืืช ืฉืืืืืช ืืกืคืจืื ืื ืืื ืฉืืฆืืืื ืืืชืงืืงื ืืืืื ืืขืจืืืืช ืืื ืืืจ ื ืคืืฅ. ืขื ืืืช, ืืฉ ืืื ืฉืชื ื ืงืืืืช:
- ืืืฉืืขืืช ืืื ืฉืืืืืขื ืืืงืืจืืช ืืืื. ืื ืื ื ืฆืจืืืื ืืืฆืืจ ืืื ืชืืจืื, ื ืกืชืื ืขื ืื ืืืืืจ ืืืชืจ.
- ืืื ืืกืคืจื ืืฉืืืืืช ืืืืืจืื ืืืื? 16, 17, 18, 19, 20, 32, 33, 34, 35, 48, 64... ืืืคื ืฉืืจ ืืืกืคืจืื, ืืืื?
ืืชืืขืื ื ืืชื:
ืืืืื ื ืืื ืฉืขืจืื error_code ืืงืืืฆืื (error_code >> 4): ืืืืืื, ืืงืืืื 0x40 - 0x4f ืชืืืืื ืืฉืืืืืช ืืคืืจืืง ืืืื.
ืืื, ืจืืฉืืช, ืฉืื ืื ืืืืืื ืืฉื ื, ืืฉื ืืช, ืื ืื ืืฉื ื, ืืืคื ืืงืืืื ืืืืจืื? ืืจืืฉื ืฉื ืืืืืจ?.. ืืืื ืืื ืืืืืช.
ืืืชืืืจืืช ืืชืืืื ืืืืืขืืช ืขื ืกืืืืกืื ืฉื ืืืืขืืช ืืืขืชืงื ืืืืขืืช:
- ืืงืฉื ืืืืืข ืขื ืกืืืืก ืืืืขื
ืื ืื ืืืฆืืืื ืื ืงืืื ืืืืข ืขื ืืฆื ืืืืืขืืช ืืืืฆืืืช ืฉืื ืืืฉื ืืื ืื, ืืื ืขืฉืื ืืืงืฉ ืืืช ืืืคืืจืฉ ืืืฆื ืืฉื ื:
msgs_state_req#da69fb52 msg_ids:Vector long = MsgsStateReq;
- ืืืืขืช ืืืืข ืืืื ืืฆื ืืืืืขืืช
msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo;
ืืื,info
ืืื ืืืจืืืช ืืืืืื ืืืืืง ืืืช ืืื ืฉื ืกืืืืก ืืืืขื ืขืืืจ ืื ืืืืขื ืืจืฉืืืช ื-msg_ids ืื ืื ืกืืช:- 1 = ืฉืื ืืืจ ืื ืืืืข ืขื ืืืืืขื (msg_id ื ืืื ืืื, ืืืชืื ืฉืืฆื ืืฉื ื ืฉืื ืืืชื)
- 2 = ืืืืขื ืื ืืชืงืืื (msg_id ื ืืฆื ืืืืื ืืืืืื ืืืืืืกื ืื; ืขื ืืืช, ืืฆื ืืฉื ื ืืืืื ืื ืงืืื ืืืืขื ืืื)
- 3 = ืืืืขื ืื ืืชืงืืื (msg_id ืืืื ืืื; ืขื ืืืช, ืืฆื ืืฉื ื ืืืืื ืื ืงืืื ืืืชื ืขืืืื)
- 4 = ืืืืขื ืฉืืชืงืืื (ืฉืืื ืื ืฉืชืืืื ืื ืืื ืื ืืืืชื ืืืื ืืืฉืืจ ืงืืื)
- +8 = ืืืืืขื ืืืจ ืืืฉืจื
- +16 = ืืืืขื ืฉืืื ื ืืืจืฉืช ืืืฉืืจ
- +32 = ืฉืืืืชืช RPC ืืืืืื ืืืืืขื ืืขืืืื ืื ืฉืืขืืืื ืืืจ ืืืฉืื
- +64 = ืชืืืื ืืงืฉืืจื ืืชืืื ืืืืืขื ืฉืืืจ ื ืืฆืจื
- +128 = ืฆื ืืืจ ืืืืข ืืืืืืืช ืฉืืืืืขื ืืืจ ืืชืงืืื
ืชืืืื ืื ืืื ื ืืืจืฉืช ืืืฉืืจ. ืืืื ืืืฉืืจ ืฉื msgs_state_req ืืจืืืื ืื, ืืฉืืขืฆืื.
ืฉืืื ืื ืฉืื ืืชืืจืจ ืคืชืืื ืฉืืฆื ืืฉื ื ืืื ืืืืขื ืฉื ืจืืืช ืืืืื ื ืฉืืื ืืืื, ืืคืฉืจ ืคืฉืื ืืฉืืื ืืช ืืืืืขื ืืืืฉ. ืื ืื ืืฆื ืืฉื ื ืืงืื ืฉื ื ืขืืชืงืื ืฉื ืืืืืขื ืื-ืืื ืืช, ืชืชืขืื ืืืืคืืืืช. (ืื ืขืืจ ืืืชืจ ืืื ืืื, ืื-msg_id ืืืงืืจื ืืื ื ืชืงืฃ ืขืื, ืืฉ ืืขืืืฃ ืืช ืืืืืขื ื-msg_copy).
- ืชืงืฉืืจืช ืืจืฆืื ืฉื ืกืืืืก ืฉื ืืืืขืืช
ืื ืืื ืืืฆืืืื ืจืฉืื ืืืืืืข โโืืฆื ืืฉื ื ืืจืฆืื ื ืขื ืืฆื ืืืืืขืืช ืืืืขืืจืืช ืขื ืืื ืืฆื ืืฉื ื.
msgs_all_info#8cc0d131 msg_ids:Vector long info:string = MsgsAllInfo
- ืชืงืฉืืจืช ืืจืฆืื ืืืจืืืช ืฉื ืกืืืืก ืฉื ืืืืขื ืืืช
...
msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo;
- ืืงืฉื ืืคืืจืฉืช ืืฉืืื ืืืืฉ ืืืืขืืช
msg_resend_req#7d861a08 msg_ids:Vector long = MsgResendReq;
ืืฆื ืืืจืืืง ืืืื ืืื ืขื ืืื ืฉืืืืช ืืืืืขืืช ืืืืืงืฉืืช ืืืืฉ [โฆ] - ืืงืฉื ืืคืืจืฉืช ืืฉืืื ืืืืฉ ืชืฉืืืืช
msg_resend_ans_req#8610baeb msg_ids:Vector long = MsgResendReq;
ืืฆื ืืืจืืืง ืืืื ืืื ืขื ืืื ืฉืืืื ืืืืจืช ืชืฉืืืืช ืืืืืขืืช ืืืืืงืฉืืช [โฆ] - ืขืืชืงื ืืืืขื
ืืืฆืืื ืืกืืืืื, ืืฉ ืืฉืืื ืืืืฉ ืืืืขื ืืฉื ื ืขื msg_id ืฉืืื ื ืืืงืืช ืืืชืจ. ืืืืจ ืืื, ืืื ืขืืืฃ ืืืืื ืืขืชืงื:
msg_copy#e06046b2 orig_message:Message = MessageCopy;
ืืืืจ ืงืืืช ืืืืืขื, ืืืืืขื ืืขืืืืช ืืืืื ืืขืืืคื ืื ืืืืชื ืฉื. ืขื ืืืช, ืื ืืืืข ืืืืืืืช ืฉืืืืืขื orig_message.msg_id ืืชืงืืื, ืื ืืืืืขื ืืืืฉื ืื ืืขืืืืช (ืืืงืืื, ืืื ื-orig_message.msg_id ืืืืฉืจืื). ืืขืจื ืฉื orig_message.msg_id ืืืื ืืืืืช ื ืืื ืื-msg_id ืฉื ืืืื.
ืืืื ืืคืืื ื ืฉืชืืง ืขื ืื msgs_state_info
ืฉืื ืืืืื ืืื ืฉื ื-TL ืืื ืืืืจ ืืืืืืช ืืืืฆื (ืืืื ื ืฆืจืืืื ืืงืืืจ ืฉื ืืชืื, ืืืฉื ื ืืืืืื ืืชืืชืื ืื ืืื enum, ืืืฉื ื ืืืืืื ืืืืืืื ืืืชืจ ืืื ืืืืื). ืื ืงืืื ืืื ืืืจืช. ืืืฉืื ืืืื ืืื ืื ืื ืืคืืขื? ืืืงืื ืืืืชื ืืืจืื?.. ืืงืืฉื, ืืื ืืคืฉืจ ืืืืืื ืชืืขืืช ืืืฉืื ืื ืืื ืขืืกืง ืืืืชืืจ ืืืืื, ืืืืฆื ืืื ืืจืืงืืืื - ืฉืื ืืช ืืฉืจืช ืื ืืืื. ืืื ืืื ืืชืืืจืืช ืืืงืฉืืช ืืฉื ื ืืืืืื ืื.
ืืืื ื ืืืข ืฉืื ืฆื ืืืื ืื ืจืง ืืืฆืคืื ืืืฉืืื ืืืืขืืช, ืืื ืื ืืืืกื ื ืชืื ืื ืขื ืขืฆืื, ืขื ืืชืืืืืช ืืืืื, ืืืฉื ืืื ืื ืืืืข. ืืชืืขืื ืืื ื ืืชืืจ ืื ืืช ืืชืืืื ืื ืื ืืช ืืืฉืืืืช ืืืขืฉืืช ืฉื ืชืืื ืืช ืืื. ืืฉืื ืืืคื. ืื ืฉืืื ืืืืื ืืื ืฉืื ืืฉืืฉืื ืืืขืฉื ืืงืื ืฉื ืืงืืืืช ืจืฉืืืื! ืื ืจืื ื ืืืจ ืืื ืืฉืื ืฉืื ื ืืื ืืชืืขืื ืืฆืืืืจื. ืืืืื ืืืงืื ืืื, ืืืจ ืื ืื ืื ืคืฉืื ืืื ืืืงืจื ืฉื TL - ืื ืื ืืืง ืืืืื (ืืืกืืช) ืืืืื ื ืืืืืช, ืืื ืืชืืื ืฉืงืฉืืจื ืืืจืืืืงืืืจืช ืืืคืืืงืฆืื, ืืืืืจ. ืืืจืืฉ ืืจืื ืืืชืจ ืืื ืืื ืืืืื ืืช ืงืื ืืืืฉืื.
ืคืื ืืื ืืชืืืื ืื. ืชืืจืื.
ืืืื, ืื ื ืืืืจ ืืช ืื ืืืืฉืื ืืืื ืืจืืืืงืืืจืช ืืฉืจืช (ืืคืฆืช ืืงืฉืืช ืขื ืคื ื ืงืฆื ืืืืจื), ืืืจ ืื ืขืฆืื ื ืืืข - ืืืจืืช ืื ืขืจืืืืืช ืืืกืืจื ื-TCP (ืื ืฉืื ืชืื ืื ื ืืกืจืื, ืื ืฉืชืืืืขื ืขื ืืคืขืจ, ืืื ืื ืชืื ืื ืืืืกืจื ืืคื ื ืฉืืืขืื ืืชืจืืฉืช), ืฉืืืืฉืืจืื ื-MTProto ืขืฆืื - ืืื ืขืจืืืืืช. ืืฉืจืช ืืืื ืืงืืืช ืืืื ืื ืืืจืืง ืืช ืืืืืขื ืฉืื, ืืื ื ืืชื ืืขืฉืืช ืืืจ ืื ืืืื, ืคืฉืื ืืฉืชืืฉ ืืกืืืื ืฉืื ืื ืฉื ืงืืืื.
ืืงืืื ืื - ืชืืจื ืืืืขืืช. ืืืื, ืขื ืืืจ ืืื ืืื ืืื ืืจืืจ ืืืืชืืื - ืืฉ ืืืืกื ืืืืขื ืื ืืืืืชืช ืืืืชืจืขื. ืืืืจื ืืืื ืฉืขื? ืืืืฆื ืืืืจ ืืืชื. ืืืื ืืืชื ืืืืขืืช ืฉืืจืืช ืืืืจืืช ืคืืชืจืืช ืืืืฉืื ืืช ืืืขืื ืืื ืขื ืงืืืื, ื ื ืื, ื-Telegram Desktop ืืฉ ืืขืจื 4 ืชืืจืื ืืืชืืืืื ืืื (ืืืื ืืืชืจ, ืืคื ืฉืืืจ ืืืืืจ, ืืฉืืื ืื ืืชื ืฆืจืื ืืืชืขืืง ืืงืื ืืืืจืืืืงืืืจื ืฉืื ืืืชืจ ืืจืฆืื ืืช; ืืืงืืื ืืื, ืื ืื ื ืืืืขืื ืฉืื ื ืืชื ืืงืืช ืืืชื ืืืืื; ืืกืคืจ ืืกืืื ืฉื ืกืืืื ืืกืืืืช MTProto ืืื ื ืืฉืืฉืื ืื).
ืืื ืื ืงืืจื? ืื ืจืื, ืืชืื ืชื ืืฉืจืชืื ืื ืืฆืืืื ืืืืืื ืืืื ืืช ืืชืื ืืืฉืืื, ืื ืืคืืื ืืฆืืฆื ืืืืื ืืงืืื, ืืืขืืืจื ืืช ืืืขืื ืืื ืืืงืื. ืืชืื ืืืืืฉ, ืืืกืืื ื ืืกื ืืืืฉื ืืคืฉืจืืช ืืืืคืืช, ืขื ืฉื ื ืชืืจืื ืืืื, ืืืืฆืขืืช ืืืืืจืืชืืื ื-TCP - ืืืืืช ื-RTT ืืฉืจืช ืืืชืืืช ืืืื ื"ืืืื" (ืืืืืขืืช) ืืืชืื ืืืกืคืจ ืืืงืฉืืช ืืื ืืืืฉืจืืช. ืืืืืจ, ืืืืจืืกืืืงื ืื ืืกื ืืืขืจืืช ืืขืืืก ืฉื ืืฉืจืช ืืื ืืื ืืืืงืฉืืช ืฉืื ื ืืื ืืืื ืืืขืืก ืื ืืื ืืช ืืื ืืืคืกืื.
ืืืื, ืืืืืจ, ืืชื ืืืื, ื ืืื? ืื ืืชื ืฆืจืื ืืืืฉื TCP ืฉืื ืขื ืืื ืคืจืืืืงืื ืืคืืขื ืขื TCP, ืื ืืฆืืืข ืขื ืคืจืืืืงืื ืืขืืฆื ืืฆืืจื ืืจืืขื ืืืื.
ืื ืื, ืืื ืืชื ืฆืจืื ืืืชืจ ืืชืืจ ืืื, ืืื ืื ืืืืจ ืขื ืืื ืฉืขืืื ืขื API ืืจืื ืืืืื ืืื ืืงืจื? ืชืจืื, ืืชื ืืืืฉ ืืงืฉื, ืขืืฉื ืืืชื ืืกืืืจื, ืืื ืืขืชืื ืงืจืืืืช ืืชื ืื ืืืื ืืฉืืื ืืืชื ืืื. ืืื? ืื ืืชืฉืืื ืชืืื msg_id
, ืฉืืื ืืื ืะฐืื ื ืชืืืืช ืฉืขืืืฃ ืืืืืช ืืช ืืงืฆืืชื ืืืืืืจ ืืื ืืืคืฉืจ - ืืืงืจื ืฉืืฉืจืช ืืืื ืืืชื ืืืื ืืืกืจ ืืชืืื ืฉื ืืื ืืื ืื ื ืืืื ื (ืืืืื, ืื ืื ื ืืืืืื ืืขืฉืืช ืงื ืฉืืขืืืจ ืืช ืืืื ืฉืื ื ืืืืืื ืืฉืจืช ืขื ืืื ืืืกืคืช ืืืชื ืืืืืฉืืช ืืชืืืืืช ืืฉืจืช - ืืงืืืืช ืจืฉืืืื ืขืืฉืื ืืืช, ืืื ืื ืืก ืืื ืืืืืง ืืืื ืืฆืืฆื). ืืื, ืืืฉืจ ืืชื ืืืืฉ ืืงืฉื ืขื ืฉืืืช ืคืื ืงืฆืื ืืงืืืืช ืืืกืคืจืืื, ืืืืืขื ืขืืืจืช ืืช ืืฉืืืื ืืืืื:
- ืืื ืฉืืื ืืชืืจ ืืื ืืืืื ืืืฆืคื ื.
- ืืื ื
msg_id
ืืืืืืขื ืขืืจื ืืชืืจ ืืืจ - ืืขืืจื ืืคืฉืจืืช; ืืฉืืื ืืฉืงืข. - ื) ืืฉืจืช ืืืื ื-MsgsAck - ืืืืืขื ื ืืกืจื, ืื ื ืืืืงืื ืืืชื ืื"ืชืืจ ืืืืจ".
ื) ืื ืืืืคื, ืืื ืื ืืื ืืฉืื, ืืื ืขื ื badmsg - ืฉืื ืฉืื ื"ืชืืจ ืืืจ"
ื) ืื ืืืืข ืืืจ, ืืฉ ืืฉืืื ืืืืฉ ืืช ืืืืืขื ืืชืืจ ืืืจ - ืื ืื ืืืืข ืืชื ืืืืืง. - ืืฉืจืช ืืืื ืืืกืืฃ
RpcResult
- ืืชืืืื (ืื ืืฉืืืื) ืืคืืขื - ืื ืจืง ื ืืกืจื, ืืื ืื ืืขืืืืช.
ืืืื, ืืฉืืืืฉ ืืืืืืื ืืืื ืืคืชืืจ ืืืงืืช ืืช ืืืขืื. ืื ืืืฉืจ ืืืืจื ืฉื ืืืืขืืช ื ืืจืืืช ืืืืช, ืืืฉืจืช ืืืื ืขื ืืืฉืืจ ืืืืื ืืืช ืืืช, ืืืืช msg_id
. ืืื ืืื ืื ืืืื ืืช ืืืคืืกื ืืื, ืื ืืฉืื ืืฉืชืืฉ, ืืฉืืืืชื.
ืืืฉืื ืื ื ืื ืกืื ืืชืืื ื ืฉืืงืืืื ืื ืืื ืืื. ืื ืืกืืื ืจืืื ื ืงืืืื ืจืืื, ืืื ืืกืฃ, ื ืจืื ืืขืช ืขืื ืืืืืืืช ืืขืฆืืช ืืืืจืืืืืช ืืจืืขืืช โ ืืื ืืชื ืืื ืืืื ืืืื ืืกืืื ืืืงืื ืืืืืืช ืืืื? ืืฉืืื ืืื ืจืืืจืืช (ืืืืื ืฉืื).
ืขื ืื ืื ืื ื ืืืืจืื? ืื ืื ืืฉื "ืืืืขืืช ืกืืื ืขื ืืืืขืืช" ืืชื ืขืืืื ืืืื ืืฉืขืจ ืขื ืืชื ืืืืืืช ืืื "ืืชื ืืืคืฉ, ืื ืืื ืช ืืช ืืชืืื ืืช ืืืืจืืงื ืฉืื ื!" (ืื ืชืืชืื ืืช ืืชืืขืื ืงืืื, ืืื ืฉืื ืฉืื ืจืืืืื ืฆืจืืืื, ืขื ืจืฆืืื ื ืืืืืืืืช ืฉื ืืืืคืช ืื ืืช, ืืื ื ืืืจ), ืืื ืชืืืื ืื/ืคืกืงื ืืื ืื ืฉืืื ืืขืฉืืช ืืกืคืฆืืคืืช ืืืื, ืืื ืืื ืืืืข ืืืจ ืืจืื ืืื. ืื ืืืืจ ืื ื ืืชืืขืื ืขื ืคืกืงื ืืื?
ืฉืจืช ืืืจื ืืื ืืืฉืจ ืืช ืงืืืช ืืืืขื ืืืงืื (ืืืจื ืืื ืฉืืืืชืช RPC) ืืืืฆืขืืช ืชืืืืช RPC. ืื ืชืืืื ืืจืืื, ืฉืจืช ืขืฉืื ืืฉืืื ืชืืืื ืืืฉืืจ ืงืืื, ืืงืฆืช ืืืืืจ ืืืชืจ, ืชืืืืช ื-RPC ืขืฆืื.
ืืงืื ืืืฉืจ ืืืจื ืืื ืืช ืงืืืช ืืืืืขื ืืฉืจืช (ืืืจื ืืื, ืชืืืืช RPC) ืขื ืืื ืืืกืคืช ืืืฉืืจ ืืฉืืืืชืช ื-RPC ืืืื ืื โโืืื ืื ื ืฉืืื ืืืืืจ ืืื (ืื ืืื ื ืืฆืจื, ืืืฉื, 60-120 ืฉื ืืืช ืืืืจ ืืงืืื ืฉื ืืืืขื ืืืฉืจืช). ืขื ืืืช, ืื ืืืฉื ืชืงืืคื ืืจืืื ืืื ืกืืื ืืฉืืื ืืืืขืืช ืืฉืจืช ืื ืื ืืฉ ืืกืคืจ ืจื ืฉื ืืืืขืืช ืื ืืืืฉืจืืช ืืืฉืจืช (ื ื ืื ืืขื 16), ืืืงืื ืืฉืืจ ืืืฉืืจ ืขืฆืืื.
... ืื ื ืืชืจืื: ืื ืื ื ืืขืฆืื ื ืื ืืืืขืื ืืื ืืืื ืื ืื ื ืฆืจืืืื ืืช ืื, ืื ืืืื ื ื ืื ืฉืืืื ืืื.
ืืืืื ืคืื ืืื:
ืืืืขืืช ืคืื ื (PING/PONG)
ping#7abe77ec ping_id:long = Pong;
ืชืืืื ืืืืืจืช ืืืจื ืืื ืืืืชื ืืืืืจ:
pong#347773c5 msg_id:long ping_id:long = Pong;
ืืืืขืืช ืืื ืืื ื ืืืจืฉืืช ืืืฉืืจืื. ืคืื ื ืืืขืืจ ืจืง ืืชืืืื ืืคืื ื ืืืืื ืคืื ื ืืืื ืืืชืืฆืข ืขื ืืื ืื ืฆื.
ืกืืืจืช ืืืืืจ ื ืืื + PING
ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;
ืขืืื ืืื ืคืื ื. ืื ืืกืฃ, ืืืืจ ืงืืืช ืื, ืืฉืจืช ืืคืขืื ืืืืืจ ืฉืืกืืืจ ืืช ืืืืืืจ ืื ืืืื disconnect_delay ืฉื ืืืช ืืืืืจ ืืืชืจ ืืื ืื ืืงืื ืืืืขื ืืืฉื ืืืืชื ืกืื ืืืืคืก ืืืืืืืืช ืืช ืื ืืืืืืจืื ืืงืืืืื. ืื ืืืงืื ืฉืืื ืืช ืืคืื ืืื ืืืื ืคืขื ื-60 ืฉื ืืืช, ืืืฉื, ืืื ืขืฉืื ืืืืืืจ disconnect_delay ืฉืืื ื-75 ืฉื ืืืช.
ืืชื ืืฉืืืข?! ืชืื 60 ืฉื ืืืช ืืจืืืช ืชืืื ืก ืืชืื ื, ืชืืจืื ืืชืืกืืฃ ื ืืกืขืื ืืฉืื ืชืืื ืงืฉืจ ืืื ืืจื. ืชืื 120 ืฉื ืืืช, ืืืื ืฉืืชื ืฉืืืข ืืืชื, ืืื ืืืืข ืืขืื ืืื, ืืกืืืจ ืืื ืื ืฉืืืืืืจ ืืชืงืืงื. ืืืื, ืืจืืจ ืืืืคื ืืจืืืืื ืืืืขืืช - "ืฉืืขืชื ืฆืืฆืื, ืืื ืื ืืืืข ืืืคื ืื", ืืฉ ืืช ืืืืืืจืืชื ืฉื Nagl ืืืคืฉืจืืช TCP_NODELAY ืืืืืขืืช ืืขืืืื ืืื ืืจืืงืืืืืช. ืืื, ืชืกืืื ืื, ืชืืืืงื ืืขืจื ืืจืืจืช ืืืืื ืฉืื - 200 ืึธืึฐืคึผึดืืชืฉื ืืืช ืื ืืชื ืืืืช ืจืืฆื ืืชืืจ ืืฉืื ืืืื ืืืฉืืืจ ืขื ืืื ืื ืืช ืืคืฉืจืืืช, ืื ืืื ืืช ืื ื-5 ืฉื ืืืช, ืื ืื ืฉืื ืืืื ืคืกืง ืืืื ืฉื ืืืืขืช "ืืืฉืชืืฉ ืืงืืื..." ืืขืช. ืืื ืื ืืืชืจ.
ืืืืกืืฃ, ืคืื ื. ืืืืืจ, ืืืืงืช ืืืืื ืฉื ืืืืืจ ื-TCP. ืื ืืฆืืืง, ืืื ืืคื ื ืืขืฉืจ ืฉื ืื ืืชืืชื ืืงืกื ืืืงืืจืชื ืขื ืืฉืืื ืฉื ืืืขืื ืืช ืฉื ืืคืงืืืื ืฉืื ื - ืืืืืจืื ืฉื ืื ืคืื ื ืืฉืจืช ืืืืงืื, ืืื ืืืืคื. ืืื ืกืืืื ืืื ืฉื ื ื' ืื ืืืจ ืืื, ืืืฉืจื ืืื ืืืืื ืื ืืืจ ืืืจ, ื ืืื?..
ืจืืฉืืช, ืชืืื ืืช ืืื ืืืืช ืงืื ื. ืืืืืจ TCP, ืืืืขืืจ ืืืืคืช ืื ืืช, ืืืื ืืืืืช ืืืฉื ืฉืืืขืืช. ืื ืื ืืื ืืื ืจืข, ืชืืื ืืืืจื. ืืื ืื ืืื ืื ืืืืืจ SSH ืคืชืื ืืฉืจืช, ืงืืช ืืืืืฉื, ืืชืืืช ืืช ืืจืืืืจ, ืืืจืช ืืืงืื ืฉืื - ืืกืฉื ืืจื ืืฉืจืช ืืื ืื ื ืงืจืข (ืื ืืงืืืช ืืืื, ืื ืืื ืื ืืช) , ืื ื ืื. ืื ืจืข ืื ืืฉ ืืืคื ืืงืืืืช ืืฉืจืช, ืฉืื ืืื ืืื ืชืืคืก ืืฉืืืื (ืฉืืื, Postgres!), ืืืืืจื ืฉื ืืืงืื ืืืื ืืชืืชืื ืืืื - ืืื ืื ื ืืข ืขื ืื.
ืืขืจืืืช ืฆ'ืื/IM ื ืื ืกืืช ืืืงืจื ืืฉื ื ืืกืืื ืืืช ื ืืกืคืช - ืกืืืืกืื ืืงืืื ืื. ืื ืืืฉืชืืฉ "ื ืคื", ืขืืื ืืืืืข ืืช ืื ื ืฉืืื ืขื ืื. ืืืจืช ืชืกืชืืื ืืืขืืช ืฉืขืฉื ืืืฆืจื ื'ืืืจ (ืืชืืงื ื ืืืฉื 20 ืฉื ื) - ืืืฉืชืืฉ ืืชื ืชืง, ืืื ืื ืืืฉืืืื ืืืชืื ืื ืืืืขืืช, ืืชืื ืืืื ื ืฉืืื ืืงืืื (ืฉืื ืืืื ืืืืืื ืืืืจื ืืืื ืืื ืืงืืช ืืคื ื ืืืืื ืื ืืชืืง). ืื, ืืคืฉืจืืช ื-TCP_KEEPALIVE, ืฉืื ืฉืื ืจืืื ืฉืื ืืืื ืื ืืืฆื ืคืืขืืื ืืืืืจืื ืฉื TCP ืืืจืงืื ืืืืคื ืืงืจืื (ืขื ืืื ืืืืจืช ืขืจืื ืคืจื ืืื ืขืฉืจืืช ืฉื ืืืช), ืื ืชืขืืืจ ืืื - ืืชื ืฆืจืื ืืืืื ืฉืื ืจืง ืืืืช ืืขืจืืช ืืืคืขืื ืฉื ืืืืฉื ืฉื ืืืฉืชืืฉ ืื, ืืื ืื ืืชืคืงื ืืจืืื, ืืกืืื ืืืืื, ืืืืคืืืงืฆืื ืขืฆืื (ืืชื ืืืฉื ืฉืืื ืื ืืืืื ืืืงืคืื? Telegram Desktop ืืืืืื ืื 18.04 ืงืคื ืื ืืืชืจ ืืคืขื ืืืช).
ืืืื ืื ืืชื ืฆืจืื ืืขืฉืืช ืคืื ื ืฉืจืช ืืงืื, ืืื ืืืืคื - ืื ืืืงืื ืืขืฉื ืืืช, ืื ืืืืืืจ ื ืฉืืจ, ืืคืื ื ืื ืืืืกืจ, ืืืืจื ืื ืชืืฉื.
ืื ืื ืื ื ืจืืืื ืืืืืจื? ืื ืืืืืง ืืืคื! ืืืื, ืืืืืจ. ืจืฉืืืช, ืืืืื, ืฉื ื ืืฆืืืื ืืืืืื ืืขืฉืืช ืคืื ื ืืื ืืฉื ื. ืืคืืขื, ืืงืืืืช ืืฉืชืืฉืื ืืงืืืื ping_delay_disconnect
, ืฉืืืืืจ ืืช ืืืืืืจ ืืฉืจืช. ืืืื, ืชืกืืื ืื, ืื ืื ืชืืื ืืืงืื ืืืืืื ืืื ืืื ืืื ืจืืฆื ืืืืืช ืฉื ืืื ืคืื ื. ืืฉืจืช, ืขื ืกืื ืืขืืืก ืฉืื, ืืืืข ืืื ืืืชืจ. ืืื, ืืืืื, ืื ืื ืืืคืช ืื ืืืืฉืืืื, ืื ืืชื ืชืืื ืคืื ืืงืื ืืจืฉืข ืฉื ืขืฆืื, ืืงื ืืขืฉื...
ืืื ืืื ืฆืจืื ืืขืฆื ืืืชื?
ืื ื ืืืืื ืฉืืขืืืืืช ืืขืื ืืฆืืืขืืช ืืืืจืืจ ืขื ืื ืฉืฆืืืช Telegram/VKontakte ืืื ื ืืืืฉืจ ืืืืืื ืืชืืื ืืชืืืืจื (ืืืจืื ืื ืืืื ืืืชืจ) ืฉื ืจืฉืชืืช ืืืฉืืื ืืืืฉืืจืืื ืื ืืืืื ืืขื ืืื ืื ืจืืืื ืืืื.
ืืื ืืชืืจืจ ืฉืื ืื ืื ืืกืืื, ืืืื ืืืจืืืื ืืืืจื ืืืืืื ืื ืกืืช ืืืชื ืื? ืืช ืืขืืืื ืฉืื ื ืืกื ืืขืฉืืช ืกืฉื ืฉืฉืืจื ืืคืกืงืืช ืืืืืจ ืฉื TCP, ืืืืืจ, ืื ืฉืื ื ืืกืจ ืขืืฉืื, ื ืขืืืจ ืืืืฉื. ืื ืื ืจืื ืื ื ืืกื ืืืฆืข ืืจื ืกืคืืจื UDP, ืืื ืื ื ืชืงืื ืืงืฉืืื ืื ืืฉื ืืืชื (ืืืื ืื ืืชืืขืื ืจืืง - ืื ืืื ืืื ืืืชืคืืจ). ืืื ืืืื ืืืกืจ ืืื ื ืฉื ืืื ืจืฉืชืืช ืืืื ื-TCP ืืคืจื ืขืืืืืช, ืืืคื ืืคืฉืจ ืืกืืื ืขื ืื, ืืืืคื ืฆืจืื ืืขืฉืืช ืืช ืื ืืขืฆืื (ืืืื), ืื ืืกืืื ืืฉืื ืืช ืื ืขื ืงืจืืคืืืืจืคืื "ืฉืชื ืฆืืคืืจืื ืขื ืืื ืืืช", ืื ืืชืืฆืื.
ืืื ืื ืืื ื ืืืฅ? ืขื ืกืื ืืขืืืื ืฉ msg_id
ืืื ืืืชืืช ืืื ืื ืืืฆื ืื ืงืืืช ืืื ืงืจืืคืืืืจืคืืช ืืื ืืื ืืข ืืชืงืคืืช ืฉื ืืฉืืง ืืืืจ, ืื ืืขืืช ืืฆืจืฃ ืืืื ืคืื ืงืฆืืืช ืืืื ืืืืืืืช. ืืื, ืืืื ืืฉื ืืช ืืืืชืืช ืืช ืืืจืืืืงืืืจื ืื ืืืืืช (ืืืฉืจ ืืจื ืืขืืืื ืื ื ืืฆืจ, ืื ื ืืฉื API ืืจืื ืืืืื ืขืืืจ ืืืง ืืืจ ืืกืืจืช ืืคืืกืืื ืืื), ืืืื ืฆืืจื:
- ืืฉืจืช ืืืืืืง ืืืืืืจ ื-TCP ืืืงืื ืืืงื ืืืจืืืช - ืื ืืื ืงืจื ืืืฉืงืข, ื ื ืืืฉืจ, ืืขืื ืื ืืืืืืจ ืฉืืืื, ืืื ืืคืกืืื. ืื ืืืืฉืืจ ืืื ื ืืงืืืจ ืฉื ืืืืื, ืืื ืคืฉืื "ืืืืจืื ืฉืืชืงืื seq_no" - ืจืง ืืกืคืจ, ืืื ื-TCP (ืฉื ื ืืกืคืจืื - ืืืืฉื ืฉืื ืืืืกืคืจ ืฉืืืฉืจ). ืื ืื ื ืชืืื ืืชืื ืืคืืืฉื, ืื?
- ืืืชืืช ืืืื ืืื ืืขืช ืืชืงืคืืช ืืืืจืืช ืืืคืืช ืืฉืื ื ืคืจื, a la nonce. ืื ื ืืืง, ืืื ืื ืืฉืคืืข ืขื ืฉืื ืืืจ ืืืจ. ืื ื
uint32
- ืื ืืืื ืฉืื ื ืืฉืชื ื ืืคืืืช ืื ืืฆื ืืื, ื ืืื ืืืงืฆืืช 16 ืืืืื ืืกืืืืืช ืืกืืจ ื ืืื ืฉื ืืืง ืฉืื ืฉื ืืืื ืื ืืืื, ืืฉืืจ - ืืฉืืจืืจ ืฉื ืฉื ืืื (ืืื ืขืืฉืื). - ืืืกืจ
msg_id
ืืืื - ืื ืงืืืช ืืืื ืฉื ืืืงืฉืืช ืฉื ืืืงืฉืืช ื-backends, ืืฉ, ืจืืฉืืช, ืืช ืืืื ืืืงืื, ืืฉื ืืช, ืืืื ืืคืืืฉื, ืืฉืจืฉืจ ืืืชื. ืืืชืื ืืื, ืจืง ืืืจ ืืื ืืกืคืืง ืืืืื ืืงืฉืseq_no
.
ืื ืื ืื ืืืคืฉืจืืช ืืืืฆืืืช ืืืืชืจ; ืืงืจืื ืืืืื ืืืื ืืฉืืฉ ืืืืื - ืื ืืืจ ื ืขืฉื ื-API ืืจืื ืืืืื ืืขืช ืฉืืืืช ืืืืขื, ืืื. ืขืืืฃ ืืขืฉืืช ืืืืฉ ืืืืืืื ืืช ืืืจืืืืงืืืจื ืืืืกืืช ืืืืืืืช, ืืื ืื ื ืืฉื ืืืืง ืืืจ, ืื ืืคืืกื ืืื.
API?
ืื-ืืื! ืื, ืืืืจ ืฉื ืืืงื ื ืื ืชืื ืืื ืืืื ืืงืืืื, ืืฆืืื ื ืกืืฃ ืกืืฃ ืืฉืืื ืื ืืงืฉื ืืฉืจืช ืืืงืื ืื ืชืฉืืื ืขืืืื, ืืื ืื ืืงืื ืขืืืื ืื ืืืฉืจืช (ืื ืืชืืืื ืืืงืฉื, ืืื ืืื ืขืฆืื ืฉืืื ืื ื, ืืื PUSH, ืื ืืืฉืื ืื ืืืชืจ ืืจืืจ ืืื).
ืฉืืื ืื, ืืขืช ืชืืื ืืืืืื ืืืืืื ืืคืจื ืืืืืจ! (ืืื ืฉืื ืืืืจ ืืช ืืชืืืืจ, ืืืืขืื ืืจืืฉืื ืฉื ืืจืื ืืื ืืื ื ืื ืชืื ืื ืฉื ืืืืืืืงื, ืืฉื ื ืืื ืืืืืงื ืฉืื):
2019.10.24 12:00:51 $1 = {
'cb' => 'TeleUpd::__ANON__',
'out' => bless( {
'filter' => bless( {}, 'Telegram::ChannelMessagesFilterEmpty' ),
'channel' => bless( {
'access_hash' => '-6698103710539760874',
'channel_id' => '1380524958'
}, 'Telegram::InputPeerChannel' ),
'pts' => '158503',
'flags' => 0,
'limit' => 0
}, 'Telegram::Updates::GetChannelDifference' ),
'req_id' => '6751291954012037292'
};
2019.10.24 12:00:51 $1 = {
'in' => bless( {
'req_msg_id' => '6751291954012037292',
'result' => bless( {
'pts' => 158508,
'flags' => 3,
'final' => 1,
'new_messages' => [],
'users' => [],
'chats' => [
bless( {
'title' => 'ะฅัะปะธะฝะพะผะธะบะฐ',
'username' => 'hoolinomics',
'flags' => 8288,
'id' => 1380524958,
'access_hash' => '-6698103710539760874',
'broadcast' => 1,
'version' => 0,
'photo' => bless( {
'photo_small' => bless( {
'volume_id' => 246933270,
'file_reference' => '
'secret' => '1854156056801727328',
'local_id' => 228648,
'dc_id' => 2
}, 'Telegram::FileLocation' ),
'photo_big' => bless( {
'dc_id' => 2,
'local_id' => 228650,
'file_reference' => '
'secret' => '1275570353387113110',
'volume_id' => 246933270
}, 'Telegram::FileLocation' )
}, 'Telegram::ChatPhoto' ),
'date' => 1531221081
}, 'Telegram::Channel' )
],
'timeout' => 300,
'other_updates' => [
bless( {
'pts_count' => 0,
'message' => bless( {
'post' => 1,
'id' => 852,
'flags' => 50368,
'views' => 8013,
'entities' => [
bless( {
'length' => 20,
'offset' => 0
}, 'Telegram::MessageEntityBold' ),
bless( {
'length' => 18,
'offset' => 480,
'url' => 'https://alexeymarkov.livejournal.com/[url_ะฒััะตะทะฐะฝ].html'
}, 'Telegram::MessageEntityTextUrl' )
],
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'text' => '???? 165',
'data' => 'send_reaction_0'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 9'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'message' => 'ะ ะฒะพั ะธ ะฝะพะฒะฐั ะบะฝะธะณะฐ!
// [ัะตะบัั ัะพะพะฑัะตะฝะธั ะฒััะตะทะฐะฝ ััะพะฑ ะฝะต ะฝะฐัััะฐัั ะฟัะฐะฒะธะป ะฅะฐะฑัะฐ ะพ ัะตะบะปะฐะผะต]
ะฝะฐะฟะตัะฐัะฐั.',
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'date' => 1571724559,
'edit_date' => 1571907562
}, 'Telegram::Message' ),
'pts' => 158508
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'pts' => 158508,
'message' => bless( {
'edit_date' => 1571907589,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'date' => 1571807301,
'message' => 'ะะพัะตะผั ะั ััะธัะฐะตัะต Facebook ะฟะปะพั
ะพะน ะบะพะผะฟะฐะฝะธะตะน? ะะพะถะตัะต ะฟัะพะบะพะผะผะตะฝัะธัะพะฒะฐัั? ะะพ-ะผะพะตะผั, ััะพ ัะธะบะฐัะฝะฐั ะบะพะผะฟะฐะฝะธั. ะะตะท ะดะพะปะณะพะฒ, ั ั
ะพัะพัะตะน ะฟัะธะฑัะปัั, ะฐ ะตัะปะธ ัะตัะฐั ะดะธะฒั ะฟะปะฐัะธัั, ัะพ ะธ ะตัะต ะผะพะณัั ะฝะตั
ะธะปะพ ะฟะพะดะพัะพะถะฐัั.
ะะปั ะผะตะฝั ะพัะฒะตั ัะพะฒะตััะตะฝะฝะพ ะพัะตะฒะธะดะตะฝ: ะฟะพัะพะผั ััะพ Facebook ะดะตะปะฐะตั ัะถะฐัะฝัะน ะฟะพ ะบะฐัะตััะฒั ะฟัะพะดัะบั. ะะฐ, ั ะฝะตะณะพ ะผะพะฝะพะฟะพะปัะฝะพะต ะฟะพะปะพะถะตะฝะธะต ะธ ะดะฐ, ะธะผ ะฟะพะปัะทัะตััั ะพะณัะพะผะฝะพะต ะบะพะปะธัะตััะฒะพ ะปัะดะตะน. ะะพ ะผะธั ะฝะต ััะพะธั ะฝะฐ ะผะตััะต. ะะพะณะดะฐ-ัะพ ะฒะปะฐะดะตะปััะฐะผ ะะพะบะธะธ ะฑัะปะพ ัะผะตัะฝะพ ะพั ะฟะตัะฒะพะณะพ ะะนัะพะฝะฐ. ะะฝะธ ะดัะผะฐะปะธ, ััะพ ะปัััะต ะะพะบะธะธ ะฝะธัะตะณะพ ะฑััั ะฝะต ะผะพะถะตั ะธ ะพะฝะฐ ะฝะฐะฒัะตะณะดะฐ ะพััะฐะฝะตััั ัะฐะผัะผ ัะดะพะฑะฝัะผ, ะบัะฐัะธะฒัะผ ะธ ัะฒััะดัะผ ัะตะปะตัะพะฝะพะผ - ะธ ะดะพะปั ััะฝะบะฐ ััะพ ะบัะฐัะฝะพัะตัะธะฒะพ ะดะตะผะพะฝัััะธัะพะฒะฐะปะฐ. ะขะตะฟะตัั ะธะผ ะฝะต ัะผะตัะฝะพ.
ะะพะฝะตัะฝะพ, ัะตะฟัะธะปะพะธะดั ัะพะฟัะพัะธะฒะปััััั ะฝะฐะฟะพัั ะผะพะปะพะดัั
ะณะตะฝะธะตะฒ: ัะฐะบ ะฆัะบะตัะฑะตัะณะพะผ ะฑัะป ะฟะพะถัะฐะฝ Whatsapp, ะฟะพัะพะผ Instagram. ะะพ ะฒัั ะธะผ ะฝะต ะฟะพะถัะฐัั, ะะฐัะฐ ะััะพะฒ ะฝะต ะฟัะพะดะฐัััั!
ะขะฐะบ ะฑัะดะตั ะธ ั ะคะตะนัะฑัะบะพะผ. ะะตะปัะทั ะฒัั ะฒัะตะผั ะดะตะปะฐัั ะณะพะฒะฝะพ. ะัะพ-ัะพ ะบะพะณะดะฐ-ัะพ ัะดะตะปะฐะตั ั
ะพัะพัะธะน ะฟัะพะดัะบั, ะบัะดะฐ ะฒัั ะธ ัะนะดัั.
#ัะพััะตัะธ #facebook #ะฐะบัะธะธ #ัะตะฟัะธะปะพะธะดั',
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 452'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'text' => '???? 21',
'data' => 'send_reaction_1'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'entities' => [
bless( {
'length' => 199,
'offset' => 0
}, 'Telegram::MessageEntityBold' ),
bless( {
'length' => 8,
'offset' => 919
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'offset' => 928,
'length' => 9
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 6,
'offset' => 938
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 11,
'offset' => 945
}, 'Telegram::MessageEntityHashtag' )
],
'views' => 6964,
'flags' => 50368,
'id' => 854,
'post' => 1
}, 'Telegram::Message' ),
'pts_count' => 0
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'message' => bless( {
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 213'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 8'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'views' => 2940,
'entities' => [
bless( {
'length' => 609,
'offset' => 348
}, 'Telegram::MessageEntityItalic' )
],
'flags' => 50368,
'post' => 1,
'id' => 857,
'edit_date' => 1571907636,
'date' => 1571902479,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'message' => 'ะะพัั ะฟัะพ 1ะก ะฒัะทะฒะฐะป ะฑััะฝัั ะฟะพะปะตะผะธะบั. ะงะตะปะพะฒะตะบ 10 (ะฒะธะดะธะผะพ, 1ั-ะฟัะพะณัะฐะผะผะธััะพะฒ) ะตะดะธะฝะพะดััะฝะพ ะฝะฐะฟะธัะฐะปะธ:
// [ัะตะบัั ัะพะพะฑัะตะฝะธั ะฒััะตะทะฐะฝ ััะพะฑ ะฝะต ะฝะฐัััะฐัั ะฟัะฐะฒะธะป ะฅะฐะฑัะฐ ะพ ัะตะบะปะฐะผะต]
ะฏ ะฑั ะดะพะฑะฐะฒะธะป, ััะพ ะฑะปะตััััะฐั ั 1ะก ะดะธัััะธะฑััะธั, ะฐ ะผะฐัะบะตัะธะฝะณ... ะฝั, ัะฐะบะพะต.'
}, 'Telegram::Message' ),
'pts_count' => 0,
'pts' => 158508
}, 'Telegram::UpdateEditChannelMessage' ),
bless( {
'pts' => 158508,
'pts_count' => 0,
'message' => bless( {
'message' => 'ะะดัะฐะฒััะฒัะนัะต, ัะฐััะบะฐะถะธัะต, ะฟะพะถะฐะปัะนััะฐ, ัะตะผ ะฒัะตะดะธั ัะบะพะฝะพะผะธะบะต 1ะก?
// [ัะตะบัั ัะพะพะฑัะตะฝะธั ะฒััะตะทะฐะฝ ััะพะฑ ะฝะต ะฝะฐัััะฐัั ะฟัะฐะฒะธะป ะฅะฐะฑัะฐ ะพ ัะตะบะปะฐะผะต]
#ัะพัั #it #ัะบะพะฝะพะผะธะบะฐ',
'edit_date' => 1571907650,
'date' => 1571893707,
'to_id' => bless( {
'channel_id' => 1380524958
}, 'Telegram::PeerChannel' ),
'flags' => 50368,
'post' => 1,
'id' => 856,
'reply_markup' => bless( {
'rows' => [
bless( {
'buttons' => [
bless( {
'data' => 'send_reaction_0',
'text' => '???? 360'
}, 'Telegram::KeyboardButtonCallback' ),
bless( {
'data' => 'send_reaction_1',
'text' => '???? 32'
}, 'Telegram::KeyboardButtonCallback' )
]
}, 'Telegram::KeyboardButtonRow' )
]
}, 'Telegram::ReplyInlineMarkup' ),
'views' => 4416,
'entities' => [
bless( {
'offset' => 0,
'length' => 64
}, 'Telegram::MessageEntityBold' ),
bless( {
'offset' => 1551,
'length' => 5
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'length' => 3,
'offset' => 1557
}, 'Telegram::MessageEntityHashtag' ),
bless( {
'offset' => 1561,
'length' => 10
}, 'Telegram::MessageEntityHashtag' )
]
}, 'Telegram::Message' )
}, 'Telegram::UpdateEditChannelMessage' )
]
}, 'Telegram::Updates::ChannelDifference' )
}, 'MTProto::RpcResult' )
};
2019.10.24 12:00:51 $1 = {
'in' => bless( {
'update' => bless( {
'user_id' => 2507460,
'status' => bless( {
'was_online' => 1571907651
}, 'Telegram::UserStatusOffline' )
}, 'Telegram::UpdateUserStatus' ),
'date' => 1571907650
}, 'Telegram::UpdateShort' )
};
2019.10.24 12:05:46 $1 = {
'in' => bless( {
'chats' => [],
'date' => 1571907946,
'seq' => 0,
'updates' => [
bless( {
'max_id' => 141719,
'channel_id' => 1295963795
}, 'Telegram::UpdateReadChannelInbox' )
],
'users' => []
}, 'Telegram::Updates' )
};
2019.10.24 13:01:23 $1 = {
'in' => bless( {
'server_salt' => '4914425622822907323',
'unique_id' => '5297282355827493819',
'first_msg_id' => '6751307555044380692'
}, 'MTProto::NewSessionCreated' )
};
2019.10.24 13:24:21 $1 = {
'in' => bless( {
'chats' => [
bless( {
'username' => 'freebsd_ru',
'version' => 0,
'flags' => 5440,
'title' => 'freebsd_ru',
'min' => 1,
'photo' => bless( {
'photo_small' => bless( {
'local_id' => 328733,
'volume_id' => 235140688,
'dc_id' => 2,
'file_reference' => '
'secret' => '4426006807282303416'
}, 'Telegram::FileLocation' ),
'photo_big' => bless( {
'dc_id' => 2,
'file_reference' => '
'volume_id' => 235140688,
'local_id' => 328735,
'secret' => '71251192991540083'
}, 'Telegram::FileLocation' )
}, 'Telegram::ChatPhoto' ),
'date' => 1461248502,
'id' => 1038300508,
'democracy' => 1,
'megagroup' => 1
}, 'Telegram::Channel' )
],
'users' => [
bless( {
'last_name' => 'Panov',
'flags' => 1048646,
'min' => 1,
'id' => 82234609,
'status' => bless( {}, 'Telegram::UserStatusRecently' ),
'first_name' => 'Dima'
}, 'Telegram::User' )
],
'seq' => 0,
'date' => 1571912647,
'updates' => [
bless( {
'pts' => 137596,
'message' => bless( {
'flags' => 256,
'message' => 'ะกะพะทะดะฐัั ะดะถะตะนะป ั ะธะผะตะฝะตะผ ะฟะพะบะพัะพัะต ??',
'to_id' => bless( {
'channel_id' => 1038300508
}, 'Telegram::PeerChannel' ),
'id' => 119634,
'date' => 1571912647,
'from_id' => 82234609
}, 'Telegram::Message' ),
'pts_count' => 1
}, 'Telegram::UpdateNewChannelMessage' )
]
}, 'Telegram::Updates' )
};
ืื, ืื ืกืคืืืืจ ืืืืื ื - ืื ืขืืืื ืื ืงืจืืชื ืืืชื, ืงืืืื, ืขืฉื ืืืช!
ืื, ืืืื~~... ืืื ืื ื ืจืื? ืืฉืื ืืืื ืืืืจ... ืืืื ืื ืืื ื ืื ืชืื ืื ืฉื Web API ืืืคืืกื ื-JSON, ืืืฅ ืืื ืฉืื ืืืืงืืช ืืืืืจืืช ืืืืืืืงืืื?..
ืื ืืื ืื ืืืฆื... ืื ืื ืืืื, ืืืจืื?.. ืื ืื ืืจืื ืืืืฅ - ืืขืฆืจื ื ืื ืื ืืืคื ืฉืืชืื ืชื ืืืื ืืจื ื ืจืง ืืชืืื?..ืืื ืจืง JSON ืขื HTTPS ืื ืืืื ืคืฉืื ืืืชืจ?! ืื ืงืืืื ื ืืชืืืจื? ืืื ืืืืืฅ ืืื ืฉืืื ืืช ืื?
ืืื ื ืขืจืื ืื TL+MTProto ื ืชื ืื ื ืืืืื ืืืืจื ืืืืืช ืืคืฉืจืืืช. ืืืื, HTTP, ืืืชืืงื ืืืืื ืืชืืืื ืืืงืฉื, ืืชืืื ืื ืืื, ืืื ืืคืืืช ืืฉืื ื ืืกืฃ ืขื TLS?
ืกืืจื ืงืืืคืงืืืช. ืืฉืื ื ืจืืื ืืช ืืื ื ืื ืชืื ืื ืืื, ืืืืื ื-JSON, ืื ื ืืืืจ ืฉืืฉ ืืจืกืืืช ืืื ืืจืืืช ืฉืื. ืืืื ื ืกืื ืืช MsgPack ืืืืชื ื ืืชื ืืืจืืื ืืกืคืืง, ืืื ืืฉ, ืืืฉื, CBOR - ืืื, ืชืงื ืืืชืืืจ ื
- 25 + 256 - ืืืืคืช ืฉืืจืืช ืืืืจืืช ืืืชืืืืกืืช ืืืกืคืจ ืืฉืืจื, ืฉืืืช ืืืืกื ืืืื ืืื
- 26 - ืืืืืืงื Perl ืืกืืืจ ืขื ืฉื ืืืืงื ืืืจืืืื ืืื ืฉื ืื ืื
- 27 - ืืืืืืงื ืืกืืืจ ืืื ืชืืืช ืืฉืคื ืขื ืฉื ืกืื ืืืจืืืื ืืื ืฉื ืื ืื
ืืืื, ื ืืกืืชื ืืขืฉืืช ืกืืจื ืฉื ืืืชื ื ืชืื ืื ื-TL ืื-CBOR ืขื ืืคืขืืช ืืืจืืืช ืืืคืฆืื. ืืชืืฆืื ืืืื ืืืฉืชื ืืช ืืืืืช CBOR ืืืคืฉืื ืืืื-ืืืื:
cborlen=1039673 tl_len=1095092
ืืคืืื, ืืกืงื ื: ืืฉื ื ืคืืจืืืื ืคืฉืืืื ืืืชืจ ืืืืคื ืืืืชื ืฉืืื ื ื ืชืื ืื ืืืขืื ืฉื ืืฉื ืกื ืืจืื ืื ืืืื ืื ืืืืข, ืขื ืืขืืืืช ืืืื.
ืืฆืืจืช ืืืืืจ ืืืืจื. ืืฉืืขืืช ืืืืจ ืืื ืืคืก RTT ืืืืจ ืืืืืจ ืืืืฉ (ืืืฉืจ ืืืคืชื ืืืจ ื ืืฆืจ ืคืขื ืืืช) - ืืฉืื ืืืจ ืืืืืขืช ื-MTProto ืืจืืฉืื ื, ืื ืขื ืืื ืืกืชืืืืืืืช - ืคืืข ืืืืชื ืืื, ืืกืฉื ืื ืจืงืื ืืื'. ืื ืืฆืืขื ืื ื TLS ืืืงืื ืืืช? ืฆืืืื ืื ืืฉื:
ืืขืช ืฉืืืืฉ ื-PFS ื-TLS, ืืจืืืกื ืืคืขืื ืฉื TLS (
RFC 5077 ) ืืื ืืืืฉ ืืคืขืื ืืืฆืคื ืช ืืื ื ืืืื ืืฉื ืืืชื ืืืืฉ ืขื ืืคืชืืืช ืืืื ืืืกืื ืืืืข ืืคืชื ืืฉืจืช. ืืขืช ืคืชืืืช ืืืืืืจ ืืจืืฉืื ืืืฆืืจืช ืืคืชืืืช, ืืฉืจืช ืืฆืคืื ืืช ืืฆื ืืืืืืจ ืืืฉืืจ ืืืชื ืืืงืื (ืืฆืืจื ืฉื ืืจืืืก ืืคืขืื). ืืืชืื ืืื, ืืืฉืจ ืืืืืืจ ืืชืืืฉ, ืืืงืื ืฉืืื ืืจืืืก ืืคืขืื, ืืืื ืืคืชื ืืืคืขืื, ืืืืจื ืืฉืจืช. ืืืจืืืก ืขืฆืื ืืืฆืคื ืืืคืชื ืืื ื (ืืคืชื ืืจืืืก ืืคืขืื), ืืฉืจ ืืืืืกื ืืฉืจืช ืืืฉ ืืืคืืฅ ืืืชื ืืื ืื ืฉืจืชื ืืืืืช ืืืขืืืื SSL ืืคืชืจืื ืืช ืืงืืืฆืื.[10] ืืคืืื, ืืื ืกืช ืืจืืืก ืืคืขืื ืขืืืื ืืืคืจ ืืช PFS ืื ืืคืชืืืช ืฉืจืช ืืื ืืื ื ืคืืขืื, ืืืฉื, ืืืฉืจ ืื ืืืืืกื ืื ืืืฉื ืืื ืจื (OpenSSL, nginx, Apache ืืืืกื ืื ืืืชื ืืืจืืจืช ืืืื ืืื ืืฉื ืืชืืื ืืช; ืืชืจืื ืคืืคืืืจืืื ืืฉืชืืฉืื ืืืคืชื ืืืกืคืจ ืฉืขืืช, ืขื ืืืื).
ืืื ื-RTT ืืื ื ืืคืก, ืืชื ืฆืจืื ืืืืืืฃ ืืคืืืช ClientHello ื-ServerHello, ืืืืืจ ืืื ืืืงืื ืืืื ืืฉืืื ื ืชืื ืื ืืื ืขื Finished. ืืื ืืื ืขืืื ื ืืืืืจ ืฉืืื ืื ื ืืช ื-Web, ืขื ืฉืื ืืืืืืจืื ืืืืฉืื ืฉื ืคืชืื, ืืื ืฉืืื, ืฉืืืืืืจ ืฉืื ืืื ืืจืื ืืงืฉืืช ืืจืืืืช ืืืชืจ ืื ืคืืืช, ืงืฆืจืืช ืืืกืืช ืืืคื ืืื ืืจื ื - ืืื ืืจืืื. ืึผึฐืึทืคึผึตื ืคึผึฐื ึดืื. ืืืืืจ, ืื ืื ืืงืืื ืื ืื ื ืชืงืื ื ืืงืืข ืืืฉ ืืจืืข ืืจืืืช ืืชืืชืืช.
ืฉืืืช ืขืื ืืฉืื? ืืชืื ืืชืืืืืช.
ืืืฉื ืืืื!
ืืืืง ืืฉื ื ืฉื ืกืืจืช ืคืืกืืื ืื ื ืฉืงืื ืื ื ืืฉืืื ืืื ืืื, ืืื ืืจืืื ืืื - ืืืฉืืช, ืืืืืืืืืืื, ืืืฉืง, ืืืก ืืืฉืชืืฉืื ืืื'. ืขื ืืืช, ืืืชืืกืก ืขื ืืืืืข ืืืื ื ืฉืืืฆื ืืื.
ืืืืง ืืฉืืืฉื ืืืฉืื ืื ืชื ืืช ืืจืืื ืืืื ื / ืืืืืช ืืคืืชืื. ืชืืื, ืืืืืื:
- ืืืฉื ืืืืืคื ืขื ืืืืื ืกืืื ื-TL
- ืืืจืื ืื ืืืืขืื ืขื ืขืจืืฆืื ืืงืืืฆืืช ืขื
- ืืืืข ืืืืืืืื ืืจืืขืื ืืจืืกืืจ
- ืขื ืืชืืืืกืืช ืืืกืจ ืืืืื ืืขืืืช ืืืกื
- ืื ืืืืื ืืื ืชืืื ื ืืชืืื ื
- ืืืฆื ืืืื'ื ืืคืจืืขืื ืืืงืกื ื ืืื
ืืงืืืื ืืืจืื! ืืืฉื ืืขืงืื!
ืืงืืจ: www.habr.com