Skip to content

Commit 28804e7

Browse files
authored
Merge pull request #256 from ton-blockchain/mytonctrl2_dev
merge mytonctrl2_dev into mytonctrl2_testnet
2 parents 48e5486 + 860f1b5 commit 28804e7

File tree

9 files changed

+88
-10
lines changed

9 files changed

+88
-10
lines changed

modules/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
from modules.single_pool import SingleNominatorModule
88
from modules.validator import ValidatorModule
99
from modules.controller import ControllerModule
10+
from modules.liteserver import LiteserverModule
1011

1112

1213
MODES = {
1314
'validator': ValidatorModule,
1415
'nominator-pool': NominatorPoolModule,
1516
'single-nominator': SingleNominatorModule,
1617
'liquid-staking': ControllerModule,
18+
'liteserver': LiteserverModule
1719
}
1820

1921

modules/liteserver.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import psutil
2+
3+
from modules.module import MtcModule
4+
5+
6+
class LiteserverModule(MtcModule):
7+
8+
description = 'For liteserver usage only - can\'t be used with validator.'
9+
default_value = False
10+
11+
def enable(self):
12+
from mytoninstaller.mytoninstaller import set_node_argument
13+
set_node_argument(self.local, ["--celldb-no-preload-all"])
14+
data = psutil.virtual_memory()
15+
ram = data.total / 2**30
16+
if ram < 100:
17+
set_node_argument(self.local, ["--celldb-cache-size", "1073741824"])
18+
19+
def disable(self):
20+
from mytoninstaller.mytoninstaller import set_node_argument
21+
from mytoninstaller.node_args import get_node_args
22+
set_node_argument(self.local, ["--celldb-no-preload-all", "-d"])
23+
if get_node_args()['--celldb-cache-size']:
24+
set_node_argument(self.local, ["--celldb-cache-size", "-d"])
25+
26+
def add_console_commands(self, console):
27+
...

mytoncore/functions.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ def Event(local, event_name):
5454
ValidatorDownEvent(local)
5555
elif event_name == "enable_ton_storage_provider":
5656
enable_ton_storage_provider_event(local)
57+
elif event_name == "enable_liteserver_mode":
58+
enable_liteserver_mode(local)
5759
local.exit()
5860
# end define
5961

@@ -90,6 +92,13 @@ def enable_ton_storage_provider_event(local):
9092
#end define
9193

9294

95+
def enable_liteserver_mode(local):
96+
ton = MyTonCore(local)
97+
ton.disable_mode('validator')
98+
ton.enable_mode('liteserver')
99+
#end define
100+
101+
93102
def Elections(local, ton):
94103
use_pool = ton.using_pool()
95104
use_liquid_staking = ton.using_liquid_staking()

mytoncore/mytoncore.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3261,9 +3261,21 @@ def get_modes(self):
32613261
current_modes[name] = mode.default_value # assign default mode value
32623262
return current_modes
32633263

3264+
def check_enable_mode(self, name):
3265+
if name == 'liteserver':
3266+
if self.using_validator():
3267+
raise Exception(f'Cannot enable liteserver mode while validator mode is enabled. '
3268+
f'Use `disable_mode validator` first.')
3269+
MODES['liteserver'](self, self.local).enable()
3270+
if name == 'validator':
3271+
if self.using_liteserver():
3272+
raise Exception(f'Cannot enable validator mode while liteserver mode is enabled. '
3273+
f'Use `disable_mode liteserver` first.')
3274+
32643275
def enable_mode(self, name):
32653276
if name not in MODES:
32663277
raise Exception(f'Unknown module name: {name}. Available modes: {", ".join(MODES)}')
3278+
self.check_enable_mode(name)
32673279
current_modes = self.get_modes()
32683280
current_modes[name] = True
32693281
self.local.save()
@@ -3272,6 +3284,8 @@ def disable_mode(self, name):
32723284
current_modes = self.get_modes()
32733285
if name not in current_modes:
32743286
raise Exception(f'Unknown module name: {name}. Available modes: {", ".join(MODES)}')
3287+
if name == 'liteserver':
3288+
MODES['liteserver'](self, self.local).disable()
32753289
current_modes[name] = False
32763290
self.local.save()
32773291

@@ -3296,6 +3310,9 @@ def using_pool(self) -> bool:
32963310
def using_validator(self):
32973311
return self.get_mode_value('validator')
32983312

3313+
def using_liteserver(self):
3314+
return self.get_mode_value('liteserver')
3315+
32993316
def Tlb2Json(self, text):
33003317
# Заменить скобки
33013318
start = 0

mytonctrl.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@
55
#
66
import os
77
import sys
8+
import subprocess
9+
10+
requirements_path = "/usr/src/mytonctrl/requirements.txt"
11+
if os.path.isfile(requirements_path):
12+
args = ["pip3", "install", "-r", requirements_path]
13+
subprocess.run(args)
14+
#end if
815

916
sys.path.insert(0, '/usr/bin/mytonctrl') # Add path to mytonctrl module
1017

mytonctrl/mytonctrl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def inject_globals(func):
141141
module = NominatorPoolModule(ton, local)
142142
module.add_console_commands(console)
143143

144-
if ton.get_mode_value('single-nominator'):
144+
if ton.using_single_nominator():
145145
from modules.single_pool import SingleNominatorModule
146146
module = SingleNominatorModule(ton, local)
147147
module.add_console_commands(console)

mytoninstaller/mytoninstaller.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
CreateSymlinks,
3030
enable_ls_proxy,
3131
enable_ton_storage,
32-
enable_ton_storage_provider
32+
enable_ton_storage_provider,
33+
EnableMode
3334
)
3435
from mytoninstaller.config import (
3536
CreateLocalConfig,
@@ -255,6 +256,10 @@ def General(local):
255256
mx = sys.argv.index("--dump")
256257
dump = sys.argv[mx+1]
257258
local.buffer.dump = str2bool(dump)
259+
if "-m" in sys.argv:
260+
mx = sys.argv.index("-m")
261+
mode = sys.argv[mx+1]
262+
local.buffer.mode = mode
258263
#end if
259264

260265
FirstMytoncoreSettings(local)
@@ -264,6 +269,7 @@ def General(local):
264269
BackupVconfig(local)
265270
BackupMconfig(local)
266271
CreateSymlinks(local)
272+
EnableMode(local)
267273
#end define
268274

269275

mytoninstaller/settings.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,3 +888,9 @@ def CreateSymlinks(local):
888888
file.write(fiftpath + '\n')
889889
file.close()
890890
#end define
891+
892+
893+
def EnableMode(local):
894+
if local.buffer.mode == 'liteserver':
895+
args = ["python3", "-m", "mytoncore", "-e", "enable_liteserver_mode"]
896+
subprocess.run(args)

scripts/install.sh

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,18 @@ fi
1515
author="ton-blockchain"
1616
repo="mytonctrl"
1717
branch="master"
18+
mode="validator"
1819

1920
show_help_and_exit() {
20-
echo 'Supported argumets:'
21-
echo ' -c PATH Provide custom config for toninstaller.sh'
22-
echo ' -t Disable telemetry'
23-
echo ' -i Ignore minimum reqiurements'
24-
echo ' -d Use pre-packaged dump. Reduces duration of initial synchronization.'
25-
echo ' -a Set MyTonCtrl git repo author'
21+
echo 'Supported argumets:'
22+
echo ' -c PATH Provide custom config for toninstaller.sh'
23+
echo ' -t Disable telemetry'
24+
echo ' -i Ignore minimum reqiurements'
25+
echo ' -d Use pre-packaged dump. Reduces duration of initial synchronization.'
26+
echo ' -a Set MyTonCtrl git repo author'
2627
echo ' -r Set MyTonCtrl git repo'
2728
echo ' -b Set MyTonCtrl git repo branch'
29+
echo ' -m MODE Install MyTonCtrl with specified mode (validator or liteserver)'
2830
echo ' -h Show this help'
2931
exit
3032
}
@@ -40,7 +42,8 @@ ignore=false
4042
dump=false
4143

4244

43-
while getopts c:tida:r:b: flag
45+
46+
while getopts c:tida:r:b:m: flag
4447
do
4548
case "${flag}" in
4649
c) config=${OPTARG};;
@@ -50,6 +53,7 @@ do
5053
a) author=${OPTARG};;
5154
r) repo=${OPTARG};;
5255
b) branch=${OPTARG};;
56+
m) mode=${OPTARG};;
5357
h) show_help_and_exit;;
5458
*)
5559
echo "Flag -${flag} is not recognized. Aborting"
@@ -115,7 +119,7 @@ if [ "$parent_name" = "sudo" ] || [ "$parent_name" = "su" ]; then
115119
user=$(logname)
116120
fi
117121
echo "User: $user"
118-
python3 -m mytoninstaller -u ${user} -t ${telemetry} --dump ${dump}
122+
python3 -m mytoninstaller -u ${user} -t ${telemetry} --dump ${dump} -m ${mode}
119123

120124
# set migrate version
121125
migrate_version=1

0 commit comments

Comments
 (0)