@@ -1208,6 +1208,8 @@ def SignBocWithWallet(self, wallet, boc_path, dest, coins, **kwargs):
12081208 elif "v3" in wallet .version :
12091209 fift_script = "wallet-v3.fif"
12101210 args = [fift_script , wallet .path , dest , subwallet , seqno , coins , boc_mode , boc_path , result_file_path ]
1211+ else :
1212+ raise Exception (f"SignBocWithWallet error: Wallet version '{ wallet .version } ' is not supported" )
12111213 if flags :
12121214 args += flags
12131215 result = self .fift .Run (args )
@@ -1912,6 +1914,8 @@ def MoveCoins(self, wallet, dest, coins, **kwargs):
19121914 elif "v3" in wallet .version :
19131915 fiftScript = "wallet-v3.fif"
19141916 args = [fiftScript , wallet .path , dest , subwallet , seqno , coins , "-m" , mode , resultFilePath ]
1917+ else :
1918+ raise Exception (f"MoveCoins error: Wallet version '{ wallet .version } ' is not supported" )
19151919 if flags :
19161920 args += flags
19171921 result = self .fift .Run (args )
@@ -2276,6 +2280,9 @@ def GetComplaints(self, electionId=None, past=False):
22762280 complaints [chash ] = item
22772281 #end for
22782282
2283+ # sort complaints by their creation time and hash
2284+ complaints = dict (sorted (complaints .items (), key = lambda item : (item [1 ]["createdTime" ], item [0 ])))
2285+
22792286 # Set buffer
22802287 self .SetFunctionBuffer (bname , complaints )
22812288
@@ -2707,6 +2714,43 @@ def GetDbSize(self, exceptions="log"):
27072714 return result
27082715 #end define
27092716
2717+ def check_adnl (self ):
2718+ telemetry = self .local .db .get ("sendTelemetry" , False )
2719+ check_adnl = self .local .db .get ("checkAdnl" , telemetry )
2720+ if not check_adnl :
2721+ return
2722+ url = 'http://45.129.96.53/adnl_check'
2723+ try :
2724+ data = self .get_local_adnl_data ()
2725+ response = requests .post (url , json = data , timeout = 5 ).json ()
2726+ except Exception as e :
2727+ self .local .add_log (f'Failed to check adnl connection: { type (e )} : { e } ' , 'error' )
2728+ return False
2729+ result = response .get ("ok" )
2730+ if not result :
2731+ self .local .add_log (f'Failed to check adnl connection to local node: { response .get ("message" )} ' , 'error' )
2732+ return result
2733+ #end define
2734+
2735+ def get_local_adnl_data (self ):
2736+
2737+ def int2ip (dec ):
2738+ import socket
2739+ return socket .inet_ntoa (struct .pack ("!i" , dec ))
2740+
2741+ vconfig = self .GetValidatorConfig ()
2742+
2743+ data = {"host" : int2ip (vconfig ["addrs" ][0 ]["ip" ]), "port" : vconfig ["addrs" ][0 ]["port" ]}
2744+
2745+ dht_id = vconfig ["dht" ][0 ]["id" ]
2746+ dht_id_hex = base64 .b64decode (dht_id ).hex ().upper ()
2747+
2748+ result = self .validatorConsole .Run (f"exportpub { dht_id_hex } " )
2749+ pubkey = parse (result , "got public key: " , "\n " )
2750+ data ["pubkey" ] = base64 .b64encode (base64 .b64decode (pubkey )[4 :]).decode ()
2751+ return data
2752+ #end define
2753+
27102754 def Result2List (self , text ):
27112755 buff = parse (text , "result:" , "\n " )
27122756 if buff is None or "error" in buff :
@@ -3220,9 +3264,20 @@ def get_modes(self):
32203264 current_modes [name ] = mode .default_value # assign default mode value
32213265 return current_modes
32223266
3267+ def check_enable_mode (self , name ):
3268+ if name == 'liteserver' :
3269+ if self .using_validator ():
3270+ raise Exception (f'Cannot enable liteserver mode while validator mode is enabled. '
3271+ f'Use `disable_mode validator` first.' )
3272+ if name == 'validator' :
3273+ if self .using_liteserver ():
3274+ raise Exception (f'Cannot enable validator mode while liteserver mode is enabled. '
3275+ f'Use `disable_mode liteserver` first.' )
3276+
32233277 def enable_mode (self , name ):
32243278 if name not in MODES :
32253279 raise Exception (f'Unknown module name: { name } . Available modes: { ", " .join (MODES )} ' )
3280+ self .check_enable_mode (name )
32263281 current_modes = self .get_modes ()
32273282 current_modes [name ] = True
32283283 self .local .save ()
@@ -3255,6 +3310,9 @@ def using_pool(self) -> bool:
32553310 def using_validator (self ):
32563311 return self .get_mode_value ('validator' )
32573312
3313+ def using_liteserver (self ):
3314+ return self .get_mode_value ('liteserver' )
3315+
32583316 def Tlb2Json (self , text ):
32593317 # Заменить скобки
32603318 start = 0
0 commit comments