Skip to content

Commit feef0cb

Browse files
committed
add clear backup scripts
1 parent 56ef77c commit feef0cb

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

support/clear_backup.sh

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name="backup.tar.gz"
2+
dest="cleared_backup_$(hostname)_$(date +%s).tar.gz"
3+
ton_db=""
4+
tmp_dir="tmp/backup"
5+
user=$(logname)
6+
7+
8+
# Get arguments
9+
while getopts n:d:t: flag
10+
do
11+
case "${flag}" in
12+
n) name=${OPTARG};;
13+
d) dest=${OPTARG};;
14+
t) ton_db=${OPTARG};;
15+
*)
16+
echo "Flag -${flag} is not recognized. Aborting"
17+
exit 1 ;;
18+
esac
19+
done
20+
21+
rm -rf $tmp_dir
22+
mkdir tmp/backup -p
23+
24+
if [ ! -z "$ton_db" ]; then
25+
mkdir ${tmp_dir}/db
26+
cp -r "$ton_db"/db/keyring ${tmp_dir}/db
27+
cp "$ton_db"/db/config.json ${tmp_dir}/db
28+
else
29+
tar -xzf $name -C $tmp_dir
30+
fi
31+
32+
rm -rf ${tmp_dir}/mytoncore
33+
rm -rf ${tmp_dir}/keys
34+
mv ${tmp_dir}/db/keyring ${tmp_dir}/db/old_keyring
35+
mkdir ${tmp_dir}/db/keyring
36+
37+
keys=$(python3 -c "import json;import base64;f=open('${tmp_dir}/db/config.json');config=json.load(f);f.close();keys=set();[([keys.add(base64.b64decode(key['key']).hex().upper()) for key in v['temp_keys']], [keys.add(base64.b64decode(adnl['id']).hex().upper()) for adnl in v['adnl_addrs']]) for v in config['validators']];print('\n'.join(list(keys)))")
38+
39+
for key in $keys; do
40+
mv ${tmp_dir}/db/old_keyring/${key} ${tmp_dir}/db/keyring
41+
done
42+
43+
rm -rf ${tmp_dir}/db/old_keyring
44+
45+
tar -zcf $dest -C $tmp_dir .
46+
chown $user:$user $dest
47+
48+
echo -e "Cleared backup successfully created in ${dest}!"

support/setup_cleared_backup.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import argparse
2+
import base64
3+
import json
4+
import subprocess
5+
tmp_dir = "tmp/cleared_backup"
6+
7+
8+
def b64tohex(b64str: str):
9+
return base64.b64decode(b64str).hex().upper()
10+
11+
12+
def run_vc(cmd: str):
13+
args = ['/usr/bin/ton/validator-engine-console/validator-engine-console', '-k', '/var/ton-work/keys/client', '-p', '/var/ton-work/keys/server.pub', '-a', vc_address, '--cmd', cmd]
14+
subprocess.run(args)
15+
16+
17+
parser = argparse.ArgumentParser()
18+
parser.add_argument('-n')
19+
parser.add_argument('-a')
20+
21+
args = parser.parse_args()
22+
name = args.n
23+
vc_address = args.a
24+
25+
if not name or not vc_address:
26+
print("Usage: setup_cleared_backup.py -n <backup_name> -a <vc_address>")
27+
exit(1)
28+
29+
30+
subprocess.run(f"rm -rf {tmp_dir}", shell=True)
31+
subprocess.run(f"mkdir -p {tmp_dir}", shell=True)
32+
33+
subprocess.run(f'tar -xzf {name} -C {tmp_dir}', shell=True)
34+
35+
subprocess.run(f'cp -rf {tmp_dir}/db/keyring /var/ton-work/db/', shell=True)
36+
subprocess.run(f'chown -R validator:validator /var/ton-work/db/keyring', shell=True)
37+
38+
with open(f'{tmp_dir}/db/config.json', 'r') as f:
39+
config = json.load(f)
40+
41+
for v in config['validators']:
42+
run_vc(f'addpermkey {b64tohex(v["id"])} {v["election_date"]} {v["expire_at"]}')
43+
for tkey in v['temp_keys']:
44+
run_vc(f'addtempkey {b64tohex(v["id"])} {b64tohex(tkey["key"])} {v["expire_at"]}')
45+
for adnl in v['adnl_addrs']:
46+
run_vc(f'addadnl {b64tohex(adnl["id"])} 0')
47+
run_vc(f'addvalidatoraddr {b64tohex(v["id"])} {b64tohex(adnl["id"])} {v["expire_at"]}')
48+
49+
subprocess.run(f'systemctl restart validator', shell=True)

0 commit comments

Comments
 (0)