From 722411b7914e94e913cb481b597bfd66031e016e Mon Sep 17 00:00:00 2001 From: yungwine Date: Sat, 25 May 2024 20:45:41 +0700 Subject: [PATCH 01/11] add default branch param to check_git --- mytonctrl/mytonctrl.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index 28d2b16c..f14f1c0a 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -293,13 +293,11 @@ def check_vport(local, ton): #end define -def check_git(input_args, default_repo, text): +def check_git(input_args, default_repo, text, default_branch='master'): src_dir = "/usr/src" git_path = f"{src_dir}/{default_repo}" fix_git_config(git_path) default_author = "ton-blockchain" - # default_branch = "master" - default_branch = "mytonctrl2" # Get author, repo, branch local_author, local_repo = get_git_author_and_repo(git_path) @@ -341,7 +339,7 @@ def check_branch_exists(author, repo, branch): def Update(local, args): repo = "mytonctrl" - author, repo, branch = check_git(args, repo, "update") + author, repo, branch = check_git(args, repo, "update", default_branch='mytonctrl2') # Run script update_script_path = pkg_resources.resource_filename('mytonctrl', 'scripts/update.sh') From c68b20d5b9c2a1bcfa6eee50d1d7581747ad0ab3 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 31 May 2024 12:30:56 +0700 Subject: [PATCH 02/11] fix printing controllers_list --- modules/controller.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/controller.py b/modules/controller.py index b9fa78ca..0acc8b1e 100644 --- a/modules/controller.py +++ b/modules/controller.py @@ -48,8 +48,9 @@ def print_controllers_list(self, args): old_controllers = self.ton.GetSettings("old_controllers") user_controllers_list = self.ton.GetSettings("user_controllers_list") print("using controllers:") - self.print_controllers_list_process(using_controllers) - if new_controllers != using_controllers: + if using_controllers is not None: + self.print_controllers_list_process(using_controllers) + if new_controllers is not None and new_controllers != using_controllers: print() print("new controllers:") self.print_controllers_list_process(new_controllers) From ab92202b34d8a0d37811666a7ccfd2c8ef426320 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 31 May 2024 12:30:56 +0700 Subject: [PATCH 03/11] add debug setting --- modules/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/__init__.py b/modules/__init__.py index 5a44fa3e..298302b0 100644 --- a/modules/__init__.py +++ b/modules/__init__.py @@ -52,6 +52,7 @@ class Setting: 'fift_timeout': Setting(None, 3, 'Fift default timeout'), 'useDefaultCustomOverlays': Setting(None, True, 'Participate in default custom overlays node eligible to'), 'defaultCustomOverlaysUrl': Setting(None, 'https://ton-blockchain.github.io/fallback_custom_overlays.json', 'Default custom overlays config url'), + 'debug': Setting(None, False, 'Debug mtc console mode. Prints Traceback on errors'), } From e254894b7b3ca75e110f2c5327580d6348627e63 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 31 May 2024 13:50:39 +0700 Subject: [PATCH 04/11] update state out of ser text --- mytonctrl/mytonctrl.py | 15 ++++++++++++--- mytonctrl/resources/translate.json | 6 +++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index 99ed9b56..caaba0c4 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -551,6 +551,8 @@ def PrintStatus(local, ton, args): disks_load_percent_avg = ton.GetStatistics("disksLoadPercentAvg", statistics) all_status = validator_status.is_working == True and validator_status.out_of_sync < 20 + config15 = None + if all_status: network_name = ton.GetNetworkName() rootWorkchainEnabledTime_int = ton.GetRootWorkchainEnabledTime() @@ -588,7 +590,7 @@ def PrintStatus(local, ton, args): if all_status: PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineValidators, shardsNumber, offersNumber, complaintsNumber, tpsAvg) PrintLocalStatus(local, adnl_addr, validator_index, validator_efficiency, validator_wallet, validator_account, validator_status, - db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg) + db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg, config15) if all_status: PrintTonConfig(local, fullConfigAddr, fullElectorAddr, config15, config17) PrintTimes(local, rootWorkchainEnabledTime_int, startWorkTime, oldStartWorkTime, config15) @@ -638,7 +640,7 @@ def PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineVa print() #end define -def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg): +def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg, config15): if validatorWallet is None: return walletAddr = validatorWallet.addrB64 @@ -716,7 +718,14 @@ def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, valid mytoncoreStatus_text = local.translate("local_status_mytoncore_status").format(mytoncoreStatus_color, mytoncoreUptime_text) validatorStatus_text = local.translate("local_status_validator_status").format(validatorStatus_color, validatorUptime_text) validator_out_of_sync_text = local.translate("local_status_validator_out_of_sync").format(GetColorInt(validator_status.out_of_sync, 20, logic="less", ending=" s")) - validator_out_of_ser_text = local.translate("local_status_validator_out_of_ser").format(GetColorInt(validator_status.out_of_ser, 20, logic="less", ending=" blocks")) + + validator_out_of_ser_text = local.translate("local_status_validator_out_of_ser").format(f'{validator_status.out_of_ser} blocks ago') + + if config15: + t = config15["validatorsElectedFor"] * 2 + if validator_status.out_of_ser * 5 > t: + validator_out_of_ser_text = local.translate("local_status_validator_out_of_ser").format(f'{{redc}}{validator_status.out_of_ser} blocks ago{{endc}}') + dbSize_text = GetColorInt(dbSize, 1000, logic="less", ending=" Gb") dbUsage_text = GetColorInt(dbUsage, 80, logic="less", ending="%") dbStatus_text = local.translate("local_status_db").format(dbSize_text, dbUsage_text) diff --git a/mytonctrl/resources/translate.json b/mytonctrl/resources/translate.json index 6b3a2823..90ae672e 100644 --- a/mytonctrl/resources/translate.json +++ b/mytonctrl/resources/translate.json @@ -330,9 +330,9 @@ "zh_TW": "本地驗證者不同步: {0}" }, "local_status_validator_out_of_ser": { - "en": "Local validator out of ser: {0}", - "ru": "Рассериализация локального валидатора: {0}", - "zh_TW": "本地驗證者不同步: {0}" + "en": "Local validator last state serialization: {0}", + "ru": "Серализация стейта локального валидатора была: {0}", + "zh_TW": "本地驗證者最後一次狀態序列化: {0}" }, "local_status_db": { "en": "Local validator database size: {0}, {1}", From 532aaf1c426db505efbe5fae732050241295a7ce Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 31 May 2024 14:05:40 +0700 Subject: [PATCH 05/11] bugfix --- mytonctrl/mytonctrl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index caaba0c4..c196596a 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -724,7 +724,7 @@ def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, valid if config15: t = config15["validatorsElectedFor"] * 2 if validator_status.out_of_ser * 5 > t: - validator_out_of_ser_text = local.translate("local_status_validator_out_of_ser").format(f'{{redc}}{validator_status.out_of_ser} blocks ago{{endc}}') + validator_out_of_ser_text = color_text(local.translate("local_status_validator_out_of_ser").format(f'{{red}}{validator_status.out_of_ser} blocks ago{{endc}}')) dbSize_text = GetColorInt(dbSize, 1000, logic="less", ending=" Gb") dbUsage_text = GetColorInt(dbUsage, 80, logic="less", ending="%") From df4dff32014e4a32a7de15cef718aba6c064c0d1 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 31 May 2024 19:58:35 +0700 Subject: [PATCH 06/11] add fullnode adnl addr --- mytonctrl/mytonctrl.py | 13 +++++++++++-- mytonctrl/resources/translate.json | 5 +++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index c196596a..0d820d00 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 # -*- coding: utf_8 -*- +import base64 import subprocess import json import psutil @@ -553,6 +554,12 @@ def PrintStatus(local, ton, args): all_status = validator_status.is_working == True and validator_status.out_of_sync < 20 config15 = None + try: + vconfig = ton.GetValidatorConfig() + fullnode_adnl = base64.b64decode(vconfig.fullnode).hex().upper() + except: + fullnode_adnl = 'n/a' + if all_status: network_name = ton.GetNetworkName() rootWorkchainEnabledTime_int = ton.GetRootWorkchainEnabledTime() @@ -590,7 +597,7 @@ def PrintStatus(local, ton, args): if all_status: PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineValidators, shardsNumber, offersNumber, complaintsNumber, tpsAvg) PrintLocalStatus(local, adnl_addr, validator_index, validator_efficiency, validator_wallet, validator_account, validator_status, - db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg, config15) + db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg, config15, fullnode_adnl) if all_status: PrintTonConfig(local, fullConfigAddr, fullElectorAddr, config15, config17) PrintTimes(local, rootWorkchainEnabledTime_int, startWorkTime, oldStartWorkTime, config15) @@ -640,7 +647,7 @@ def PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineVa print() #end define -def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg, config15): +def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg, config15, fullnode_adnl): if validatorWallet is None: return walletAddr = validatorWallet.addrB64 @@ -659,6 +666,7 @@ def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, valid validatorEfficiency_text = GetColorInt(validatorEfficiency, 10, logic="more", ending=" %") validatorEfficiency_text = local.translate("local_status_validator_efficiency").format(validatorEfficiency_text) adnlAddr_text = local.translate("local_status_adnl_addr").format(bcolors.yellow_text(adnlAddr)) + fullnode_adnl_text = local.translate("local_status_fullnode_adnl").format(bcolors.yellow_text(fullnode_adnl)) walletAddr_text = local.translate("local_status_wallet_addr").format(bcolors.yellow_text(walletAddr)) walletBalance_text = local.translate("local_status_wallet_balance").format(bcolors.green_text(walletBalance)) @@ -751,6 +759,7 @@ def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, valid print(validatorIndex_text) print(validatorEfficiency_text) print(adnlAddr_text) + print(fullnode_adnl_text) print(walletAddr_text) print(walletBalance_text) print(cpuLoad_text) diff --git a/mytonctrl/resources/translate.json b/mytonctrl/resources/translate.json index 90ae672e..22c2b283 100644 --- a/mytonctrl/resources/translate.json +++ b/mytonctrl/resources/translate.json @@ -284,6 +284,11 @@ "ru": "ADNL адрес локального валидатора: {0}", "zh_TW": "本地驗證者的 ADNL 地址: {0}" }, + "local_status_fullnode_adnl": { + "en": "Public ADNL address of node: {0}", + "ru": "Публичный ADNL адрес ноды: {0}", + "zh_TW": "節點的公共 ADNL 地址: {0}" + }, "local_status_wallet_addr": { "en": "Local validator wallet address: {0}", "ru": "Адрес кошелька локального валидатора: {0}", From 6aa46b3feae357cdd215954eb915c703ae2eeee6 Mon Sep 17 00:00:00 2001 From: yungwine Date: Tue, 4 Jun 2024 13:24:06 +0700 Subject: [PATCH 07/11] revert red color for out-of-ser --- mytonctrl/mytonctrl.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index 0d820d00..78917240 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -552,7 +552,6 @@ def PrintStatus(local, ton, args): disks_load_percent_avg = ton.GetStatistics("disksLoadPercentAvg", statistics) all_status = validator_status.is_working == True and validator_status.out_of_sync < 20 - config15 = None try: vconfig = ton.GetValidatorConfig() @@ -597,7 +596,7 @@ def PrintStatus(local, ton, args): if all_status: PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineValidators, shardsNumber, offersNumber, complaintsNumber, tpsAvg) PrintLocalStatus(local, adnl_addr, validator_index, validator_efficiency, validator_wallet, validator_account, validator_status, - db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg, config15, fullnode_adnl) + db_size, db_usage, memory_info, swap_info, net_load_avg, disks_load_avg, disks_load_percent_avg, fullnode_adnl) if all_status: PrintTonConfig(local, fullConfigAddr, fullElectorAddr, config15, config17) PrintTimes(local, rootWorkchainEnabledTime_int, startWorkTime, oldStartWorkTime, config15) @@ -647,7 +646,7 @@ def PrintTonStatus(local, network_name, startWorkTime, totalValidators, onlineVa print() #end define -def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg, config15, fullnode_adnl): +def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, validatorWallet, validatorAccount, validator_status, dbSize, dbUsage, memoryInfo, swapInfo, netLoadAvg, disksLoadAvg, disksLoadPercentAvg, fullnode_adnl): if validatorWallet is None: return walletAddr = validatorWallet.addrB64 @@ -729,11 +728,6 @@ def PrintLocalStatus(local, adnlAddr, validatorIndex, validatorEfficiency, valid validator_out_of_ser_text = local.translate("local_status_validator_out_of_ser").format(f'{validator_status.out_of_ser} blocks ago') - if config15: - t = config15["validatorsElectedFor"] * 2 - if validator_status.out_of_ser * 5 > t: - validator_out_of_ser_text = color_text(local.translate("local_status_validator_out_of_ser").format(f'{{red}}{validator_status.out_of_ser} blocks ago{{endc}}')) - dbSize_text = GetColorInt(dbSize, 1000, logic="less", ending=" Gb") dbUsage_text = GetColorInt(dbUsage, 80, logic="less", ending="%") dbStatus_text = local.translate("local_status_db").format(dbSize_text, dbUsage_text) From dfd2d61ff6dfe41b487f704f9500f929f120dde3 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 7 Jun 2024 18:41:33 +0700 Subject: [PATCH 08/11] remove state-ttl from installation --- mytoninstaller/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mytoninstaller/settings.py b/mytoninstaller/settings.py index 9f4ca19f..d04c5673 100644 --- a/mytoninstaller/settings.py +++ b/mytoninstaller/settings.py @@ -58,7 +58,7 @@ def FirstNodeSettings(local): # Прописать автозагрузку cpus = psutil.cpu_count() - 1 - cmd = f"{validatorAppPath} --threads {cpus} --daemonize --global-config {globalConfigPath} --db {ton_db_dir} --logname {tonLogPath} --state-ttl 604800 --archive-ttl {archive_ttl} --verbosity 1" + cmd = f"{validatorAppPath} --threads {cpus} --daemonize --global-config {globalConfigPath} --db {ton_db_dir} --logname {tonLogPath} --archive-ttl {archive_ttl} --verbosity 1" add2systemd(name="validator", user=vuser, start=cmd) # post="/usr/bin/python3 /usr/src/mytonctrl/mytoncore.py -e \"validator down\"" # Получить внешний ip адрес From fd782afea8543c753c79ae3ae78075210146c6f4 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 7 Jun 2024 21:04:49 +0700 Subject: [PATCH 09/11] rm state-ttl only if validator --- mytonctrl/mytonctrl.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index 78917240..87b5972d 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -382,6 +382,9 @@ def Upgrade(ton, args): upgrade_script_path = pkg_resources.resource_filename('mytonctrl', 'scripts/upgrade.sh') runArgs = ["bash", upgrade_script_path, "-a", author, "-r", repo, "-b", branch] exitCode = run_as_root(runArgs) + if ton.using_validator(): + from mytoninstaller.mytoninstaller import set_node_argument + set_node_argument(ton.local, ["--state-ttl", "-d"]) if exitCode == 0: text = "Upgrade - {green}OK{endc}" else: From 3c20a79e9b4f2d45e317957d387e7234ff5069dc Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 7 Jun 2024 21:46:09 +0700 Subject: [PATCH 10/11] rm state-ttl only if its value default --- mytonctrl/mytonctrl.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index e0fc8df3..a82c41bb 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -381,8 +381,13 @@ def Upgrade(ton, args): runArgs = ["bash", upgrade_script_path, "-a", author, "-r", repo, "-b", branch] exitCode = run_as_root(runArgs) if ton.using_validator(): - from mytoninstaller.mytoninstaller import set_node_argument - set_node_argument(ton.local, ["--state-ttl", "-d"]) + try: + from mytoninstaller.mytoninstaller import set_node_argument, get_node_args + node_args = get_node_args() + if node_args['--state-ttl'] == 604800: + set_node_argument(ton.local, ["--state-ttl", "-d"]) + except Exception as e: + color_print(f"{{red}}Failed to set node argument: {e} {{endc}}") if exitCode == 0: text = "Upgrade - {green}OK{endc}" else: From f511780fc7a14c2237f6f753fec8159426e71b86 Mon Sep 17 00:00:00 2001 From: yungwine Date: Fri, 7 Jun 2024 21:51:42 +0700 Subject: [PATCH 11/11] bugfix --- mytonctrl/mytonctrl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mytonctrl/mytonctrl.py b/mytonctrl/mytonctrl.py index a82c41bb..9598716f 100755 --- a/mytonctrl/mytonctrl.py +++ b/mytonctrl/mytonctrl.py @@ -384,7 +384,7 @@ def Upgrade(ton, args): try: from mytoninstaller.mytoninstaller import set_node_argument, get_node_args node_args = get_node_args() - if node_args['--state-ttl'] == 604800: + if node_args['--state-ttl'] == '604800': set_node_argument(ton.local, ["--state-ttl", "-d"]) except Exception as e: color_print(f"{{red}}Failed to set node argument: {e} {{endc}}")