From b999d873888d8154561317404b290ca402219122 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 8 Aug 2019 11:15:16 +0100 Subject: [PATCH] Divide scheme.tl to mtproto.tl and api.tl. --- Telegram/Resources/{scheme.tl => tl/api.tl} | 118 ------------------ Telegram/Resources/tl/mtproto.tl | 113 +++++++++++++++++ .../codegen/scheme/codegen_scheme.py | 24 ++-- Telegram/gyp/lib_scheme.gyp | 9 +- 4 files changed, 132 insertions(+), 132 deletions(-) rename Telegram/Resources/{scheme.tl => tl/api.tl} (95%) create mode 100644 Telegram/Resources/tl/mtproto.tl diff --git a/Telegram/Resources/scheme.tl b/Telegram/Resources/tl/api.tl similarity index 95% rename from Telegram/Resources/scheme.tl rename to Telegram/Resources/tl/api.tl index 04f2a3bb99..945b3893b4 100644 --- a/Telegram/Resources/scheme.tl +++ b/Telegram/Resources/tl/api.tl @@ -1,7 +1,3 @@ -// Core types (no need to gen) - -//vector#1cb5c415 {t:Type} # [ t ] = Vector t; - /////////////////////////////// /////////////////// Layer cons /////////////////////////////// @@ -28,124 +24,10 @@ //invokeWithLayer18#1c900537 query:!X = X; //invokeWithLayer#da9b0d0d layer:int query:!X = X; // after 18 layer -/////////////////////////////// -/// Authorization key creation -/////////////////////////////// - -resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector = ResPQ; - -p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data; -p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data; -p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 expires_in:int = P_Q_inner_data; -p_q_inner_data_temp_dc#56fddf88 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data; - -server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params; -server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params; - -server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data; - -client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data; - -dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; -dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; -dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer; - -destroy_auth_key_ok#f660e1d4 = DestroyAuthKeyRes; -destroy_auth_key_none#0a9f2259 = DestroyAuthKeyRes; -destroy_auth_key_fail#ea109b13 = DestroyAuthKeyRes; - ----functions--- - -req_pq#60469778 nonce:int128 = ResPQ; -req_pq_multi#be7e8ef1 nonce:int128 = ResPQ; - -req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params; - -set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer; - -destroy_auth_key#d1435160 = DestroyAuthKeyRes; - -/////////////////////////////// -////////////// System messages -/////////////////////////////// - ----types--- - -msgs_ack#62d6b459 msg_ids:Vector = MsgsAck; - -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; - -msgs_state_req#da69fb52 msg_ids:Vector = MsgsStateReq; -msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo; -msgs_all_info#8cc0d131 msg_ids:Vector 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 = MsgResendReq; - -//rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult; // parsed manually - -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; - -future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; -future_salts#ae500895 req_msg_id:long now:int salts:vector = FutureSalts; - -pong#347773c5 msg_id:long ping_id:long = Pong; - -destroy_session_ok#e22045fc session_id:long = DestroySessionRes; -destroy_session_none#62d350c9 session_id:long = DestroySessionRes; - -new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; - -//message msg_id:long seqno:int bytes:int body:Object = Message; // parsed manually -//msg_container#73f1f8dc messages:vector = MessageContainer; // parsed manually -//msg_copy#e06046b2 orig_message:Message = MessageCopy; // parsed manually, not used - use msg_container -//gzip_packed#3072cfa1 packed_data:string = Object; // parsed manually - -http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait; - -//ipPort ipv4:int port:int = IpPort; -//help.configSimple#d997c3c5 date:int expires:int dc_id:int ip_port_list:Vector = help.ConfigSimple; - -ipPort#d433ad73 ipv4:int port:int = IpPort; -ipPortSecret#37982646 ipv4:int port:int secret:bytes = IpPort; -accessPointRule#4679b65f phone_prefix_rules:string dc_id:int ips:vector = AccessPointRule; -help.configSimple#5a592a6c date:int expires:int rules:vector = help.ConfigSimple; - -tlsClientHello blocks:vector = TlsClientHello; - -tlsBlockString data:string = TlsBlock; -tlsBlockRandom length:int = TlsBlock; -tlsBlockZero length:int = TlsBlock; -tlsBlockDomain = TlsBlock; -tlsBlockGrease seed:int = TlsBlock; -tlsBlockScope entries:Vector = TlsBlock; - ----functions--- - -rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer; - -get_future_salts#b921bd04 num:int = FutureSalts; - -ping#7abe77ec ping_id:long = Pong; -ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; - -destroy_session#e7512126 session_id:long = DestroySessionRes; - -contest.saveDeveloperInfo#9a5f6e95 vk_id:int name:string phone_number:string age:int city:string = Bool; - /////////////////////////////// ///////// Main application API /////////////////////////////// ----types--- - boolFalse#bc799737 = Bool; boolTrue#997275b5 = Bool; diff --git a/Telegram/Resources/tl/mtproto.tl b/Telegram/Resources/tl/mtproto.tl new file mode 100644 index 0000000000..0f79e320ea --- /dev/null +++ b/Telegram/Resources/tl/mtproto.tl @@ -0,0 +1,113 @@ +// Core types (no need to gen) + +//vector#1cb5c415 {t:Type} # [ t ] = Vector t; + +/////////////////////////////// +/// Authorization key creation +/////////////////////////////// + +resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector = ResPQ; + +p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data; +p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data; +p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 expires_in:int = P_Q_inner_data; +p_q_inner_data_temp_dc#56fddf88 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data; + +server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params; +server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params; + +server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data; + +client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data; + +dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; +dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; +dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer; + +destroy_auth_key_ok#f660e1d4 = DestroyAuthKeyRes; +destroy_auth_key_none#0a9f2259 = DestroyAuthKeyRes; +destroy_auth_key_fail#ea109b13 = DestroyAuthKeyRes; + +---functions--- + +req_pq#60469778 nonce:int128 = ResPQ; +req_pq_multi#be7e8ef1 nonce:int128 = ResPQ; + +req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params; + +set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer; + +destroy_auth_key#d1435160 = DestroyAuthKeyRes; + +/////////////////////////////// +////////////// System messages +/////////////////////////////// + +---types--- + +msgs_ack#62d6b459 msg_ids:Vector = MsgsAck; + +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; + +msgs_state_req#da69fb52 msg_ids:Vector = MsgsStateReq; +msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo; +msgs_all_info#8cc0d131 msg_ids:Vector 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 = MsgResendReq; + +//rpc_result#f35c6d01 req_msg_id:long result:Object = RpcResult; // parsed manually + +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; + +future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; +future_salts#ae500895 req_msg_id:long now:int salts:vector = FutureSalts; + +pong#347773c5 msg_id:long ping_id:long = Pong; + +destroy_session_ok#e22045fc session_id:long = DestroySessionRes; +destroy_session_none#62d350c9 session_id:long = DestroySessionRes; + +new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; + +//message msg_id:long seqno:int bytes:int body:Object = Message; // parsed manually +//msg_container#73f1f8dc messages:vector = MessageContainer; // parsed manually +//msg_copy#e06046b2 orig_message:Message = MessageCopy; // parsed manually, not used - use msg_container +//gzip_packed#3072cfa1 packed_data:string = Object; // parsed manually + +http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait; + +//ipPort ipv4:int port:int = IpPort; +//help.configSimple#d997c3c5 date:int expires:int dc_id:int ip_port_list:Vector = help.ConfigSimple; + +ipPort#d433ad73 ipv4:int port:int = IpPort; +ipPortSecret#37982646 ipv4:int port:int secret:bytes = IpPort; +accessPointRule#4679b65f phone_prefix_rules:string dc_id:int ips:vector = AccessPointRule; +help.configSimple#5a592a6c date:int expires:int rules:vector = help.ConfigSimple; + +tlsClientHello blocks:vector = TlsClientHello; + +tlsBlockString data:string = TlsBlock; +tlsBlockRandom length:int = TlsBlock; +tlsBlockZero length:int = TlsBlock; +tlsBlockDomain = TlsBlock; +tlsBlockGrease seed:int = TlsBlock; +tlsBlockScope entries:Vector = TlsBlock; + +---functions--- + +rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer; + +get_future_salts#b921bd04 num:int = FutureSalts; + +ping#7abe77ec ping_id:long = Pong; +ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; + +destroy_session#e7512126 session_id:long = DestroySessionRes; diff --git a/Telegram/SourceFiles/codegen/scheme/codegen_scheme.py b/Telegram/SourceFiles/codegen/scheme/codegen_scheme.py index 3581b43093..4159cdbafa 100644 --- a/Telegram/SourceFiles/codegen/scheme/codegen_scheme.py +++ b/Telegram/SourceFiles/codegen/scheme/codegen_scheme.py @@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL ''' import glob, re, binascii, os, sys -input_file = '' +input_files = [] output_path = '' next_output_path = False for arg in sys.argv[1:]: @@ -19,9 +19,9 @@ for arg in sys.argv[1:]: elif re.match(r'^-o(.+)', arg): output_path = arg[2:] else: - input_file = arg + input_files.append(arg) -if input_file == '': +if len(input_files) == 0: print('Input file required.') sys.exit(1) if output_path == '': @@ -92,14 +92,16 @@ textSerializeMethods = ''; forwards = ''; forwTypedefs = ''; -with open(input_file) as f: - for line in f: - layerline = re.match(r'// LAYER (\d+)', line) - if (layerline): - layerIndex = int(layerline.group(1)); - layer = 'inline constexpr mtpPrime CurrentLayer = mtpPrime(' + str(layerIndex) + ');'; - else: - lines.append(line); +for input_file in input_files: + lines.append('---types---') + with open(input_file) as f: + for line in f: + layerline = re.match(r'// LAYER (\d+)', line) + if (layerline): + layerIndex = int(layerline.group(1)); + layer = 'inline constexpr mtpPrime CurrentLayer = mtpPrime(' + str(layerIndex) + ');'; + else: + lines.append(line); for line in lines: nocomment = re.match(r'^(.*?)//', line) diff --git a/Telegram/gyp/lib_scheme.gyp b/Telegram/gyp/lib_scheme.gyp index b52a9d0714..0c12f240b4 100644 --- a/Telegram/gyp/lib_scheme.gyp +++ b/Telegram/gyp/lib_scheme.gyp @@ -41,7 +41,8 @@ 'action_name': 'codegen_scheme', 'inputs': [ '<(src_loc)/codegen/scheme/codegen_scheme.py', - '<(res_loc)/scheme.tl', + '<(res_loc)/tl/mtproto.tl', + '<(res_loc)/tl/api.tl', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/scheme.cpp', @@ -49,9 +50,11 @@ ], 'action': [ 'python', '<(src_loc)/codegen/scheme/codegen_scheme.py', - '-o', '<(SHARED_INTERMEDIATE_DIR)', '<(res_loc)/scheme.tl', + '-o', '<(SHARED_INTERMEDIATE_DIR)', + '<(res_loc)/tl/mtproto.tl', + '<(res_loc)/tl/api.tl', ], - 'message': 'codegen_scheme-ing scheme.tl..', + 'message': 'codegen_scheme-ing *.tl..', 'process_outputs_as_sources': 1, }], }],