-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathstart-qortal.sh
More file actions
139 lines (120 loc) · 5.17 KB
/
start-qortal.sh
File metadata and controls
139 lines (120 loc) · 5.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
# Define color codes for output
RED='\033[0;31m'
NC='\033[0m' # No color
# Check if Qortal is running
QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0)
GUI_START="${HOME}/.config/autostart/start-qortal.desktop"
QORTAL_LOG="${HOME}/qortal/qortal.log"
if [[ -f "$GUI_START" ]]; then
echo "Qortal is set to start via GUI. Checking if it is running..."
if [[ "$QORTAL_RUNNING" -eq 1 ]]; then
echo "Qortal is already running. Checking if it's responding..."
sleep 60
QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status")
if [[ -n "$QORTAL_RESPONDING" ]]; then
echo "Qortal is running and responding. Exiting..."
exit 0
else
echo "Qortal is running but not responding. Checking for bootstrapping..."
if tail -n 5 "$QORTAL_LOG" | grep -Ei 'bootstrap|bootstrapping' > /dev/null; then
echo -e "${RED}Node seems to be bootstrapping, assuming it is fine, exiting...${NC}"
exit 0
fi
echo "Qortal is not bootstrapping. Restarting..."
killall -9 java
sleep 5
fi
fi
echo "Qortal is not running. Starting Qortal..."
cd "${HOME}/qortal" || exit
./start.sh
echo "Waiting 120 seconds..."
sleep 120
QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0)
QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status")
if [[ "$QORTAL_RUNNING" -eq 1 ]]; then
echo "Qortal started successfully. Verifying response after 60 seconds..."
sleep 60
if [[ -n "$QORTAL_RESPONDING" ]]; then
echo "Qortal is responding! All good! Exiting..."
exit 0
fi
fi
echo "Qortal is still not running. Checking for auto-fix-visible script..."
if [[ -f "${HOME}/.config/autostart/auto-fix-visible*" ]]; then
echo "Auto-fix script exists. Waiting for it to run..."
exit 1
else
echo "Auto-fix script not found. Downloading and executing manually..."
curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh
chmod +x auto-fix-qortal.sh
./auto-fix-qortal.sh
exit 0
fi
else
echo "Qortal is not set to start via GUI. Checking if it is running..."
if [[ "$QORTAL_RUNNING" -eq 1 ]]; then
echo "Qortal is running. Checking response after 60 seconds..."
sleep 60
QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status")
if [[ -n "$QORTAL_RESPONDING" ]]; then
echo "Qortal is responding. Exiting..."
exit 0
else
echo "Qortal is running but unresponsive. Checking for bootstrapping..."
if tail -n 5 "$QORTAL_LOG" | grep -Ei 'bootstrap|bootstrapping' > /dev/null; then
echo -e "${RED}Node seems to be bootstrapping, assuming it is operational... exiting...${NC}"
exit 0
fi
echo "Qortal is not bootstrapping. Restarting..."
killall -9 java
sleep 5
fi
fi
echo "Qortal is not running. Attempting to start..."
cd "${HOME}/qortal" || exit
./start.sh
echo "Start script executed. Waiting 90 seconds..."
sleep 90
QORTAL_RUNNING=$(pgrep -f 'java.*qortal' > /dev/null && echo 1 || echo 0)
QORTAL_RESPONDING=$(curl -sS --connect-timeout 10 "localhost:12391/admin/status")
if [[ "$QORTAL_RUNNING" -eq 1 ]]; then
echo "Qortal started successfully. Checking response..."
if [[ -n "$QORTAL_RESPONDING" ]]; then
echo "Qortal is running and responding! Exiting..."
exit 0
fi
fi
echo "Qortal did not start. Killing Java processes and retrying..."
killall -9 java
cd "${HOME}/qortal"
./start.sh
echo "Checking crontab for auto-fix script..."
if crontab -l | grep -q '#.*auto-fix-qortal.sh'; then
echo "Auto-fix script is commented out. Running manually..."
curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh
chmod +x auto-fix-qortal.sh
./auto-fix-qortal.sh
exit 0
elif crontab -l | grep -q '[^#]*auto-fix-qortal.sh'; then
echo "Auto-fix script is in crontab. Checking machine uptime..."
UPTIME=$(awk '{print int($1)}' /proc/uptime)
if [[ "$UPTIME" -ge 420 ]]; then
echo "Machine has been online for over 7 minutes. Running auto-fix manually..."
curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh
chmod +x auto-fix-qortal.sh
./auto-fix-qortal.sh
exit 0
else
echo "Machine has been online less than 7 minutes. Allowing auto-fix script to run automatically..."
exit 0
fi
else
echo "Auto-fix script not found in crontab. Running manually and setting up auto-run..."
curl -L -O https://raw.githubusercontent.com/crowetic/QORTector-scripts/main/auto-fix-qortal.sh
chmod +x auto-fix-qortal.sh
./auto-fix-qortal.sh
exit 0
fi
fi