forked from mrgrshift/Server-Monitor
-
Notifications
You must be signed in to change notification settings - Fork 1
/
getdata.sh
140 lines (115 loc) · 3.99 KB
/
getdata.sh
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
139
140
#!/bin/bash
CONFIG=config.json
if ! [ -f "$CONFIG" ]; then
echo '{ "sucess": "Error", "data": "Create first config.json file in your server" }' > data.json
exit 0
fi
v1=$(cat $CONFIG | jq '.m_publicKey')
M_PUBLICKEY="${v1//\"/}"
v1=$(cat $CONFIG | jq '.t_publicKey')
T_PUBLICKEY="${v1//\"/}"
buffer=buffer.file
f=0
i=1
echo "{ \"success\": true, \"servers\": {" > $buffer
jq -r '.servers|keys[]' $CONFIG |
{ while read key ; do
if [ "$i" -ne "1" ]; then
echo "," >> $buffer
fi
echo "\"server$i\": {" >> $buffer
v1=$(jq ".servers.$key.http" $CONFIG)
HTTP="${v1//\"/}"
v1=$(jq ".servers.$key.ip" $CONFIG)
IP="${v1//\"/}"
v1=$(jq ".servers.$key.port" $CONFIG)
PORT="${v1//\"/}"
v1=$(jq ".servers.$key.testnet" $CONFIG)
TESTNET="${v1//\"/}"
RESPONSE=$(curl --connect-timeout 2 --fail -s $HTTP://$IP:$PORT/api/loader/status/sync)
HEIGHT=$(echo $RESPONSE | jq '.height')
SYNCING=$(echo $RESPONSE | jq '.syncing')
CONSENSUS=$(echo $RESPONSE | jq '.consensus')
if [ "$TESTNET" == "true" ];
then
PUBLICKEY="$T_PUBLICKEY"
else
PUBLICKEY="$M_PUBLICKEY"
fi
FORGING=$(curl --connect-timeout 2 --fail -s -k $HTTP://$IP:$PORT/api/delegates/forging/status?publicKey=$PUBLICKEY | jq '.enabled')
if [ "$FORGING" == "true" ]; then
DELEGATE_DATA=true
RESPONSE=$(curl --connect-timeout 2 --fail -s -k $HTTP://$IP:$PORT/api/delegates/get?publicKey=$PUBLICKEY)
USERNAME=$(echo $RESPONSE | jq '.delegate.username')
RANK=$(echo $RESPONSE | jq '.delegate.rate')
APPROVAL=$(echo $RESPONSE | jq '.delegate.approval')
PRODUCTIVITY=$(echo $RESPONSE | jq '.delegate.productivity')
PRODUCEDBLOCKS=$(echo $RESPONSE | jq '.delegate.producedblocks')
MISSEDBLOCKS=$(echo $RESPONSE | jq '.delegate.missedblocks')
if [ "$f" != "0" ]; then
echo "," >> tmp.file
fi
if [ "$TESTNET" == "true" ];
then
echo " \"testnet\": { \"success\": true," >> tmp.file
else
echo " \"mainnet\": { \"success\": true," >> tmp.file
fi
echo " \"username\": $USERNAME," >> tmp.file
echo " \"rank\": $RANK," >> tmp.file
echo " \"approval\": $APPROVAL," >> tmp.file
echo " \"productivity\": $PRODUCTIVITY," >> tmp.file
echo " \"producedblocks\": $PRODUCEDBLOCKS," >> tmp.file
echo " \"missedblocks\": $MISSEDBLOCKS," >> tmp.file
RESPONSE=$(curl --connect-timeout 2 --fail -s $HTTP://$IP:$PORT/api/delegates/getNextForgers?limit=101 | jq '.delegates')
n=0
while [ "$n" -lt "101" ]; do
v1=$(echo $RESPONSE | jq '.['$n']')
PK="${v1//\"/}"
if [ "$PK" == "$PUBLICKEY" ]; then
NEXTTURN="$n"
break
fi
((n++))
done
if [ -z "$NEXTTURN" ]; then
NEXTTURN=$"null"
fi
echo " \"nextturn\": $NEXTTURN," >> tmp.file
NEXTTURN=$"null"
RESPONSE=$(curl --connect-timeout 2 --fail -s $HTTP://$IP:$PORT/api/blocks?generatorPublicKey=$PUBLICKEY&limit=1)
FORGED_BLOCK=$(echo $RESPONSE | jq '.blocks[0].height')
echo " \"forged_block\": $FORGED_BLOCK }" >> tmp.file
((f++))
fi
if [ -z "$HEIGHT" ]; then
HEIGHT=$"\"Server Error\""
fi
if [ -z "$SYNCING" ]; then
SYNCING=$"false"
fi
if [ -z "$CONSENSUS" ]; then
CONSENSUS=$"\"Server Error\""
fi
if [ -z "$FORGING" ]; then
FORGING=$"\"Server Error\""
fi
echo " \"height\": $HEIGHT", >> $buffer
echo " \"syncing\": $SYNCING", >> $buffer
echo " \"consensus\": $CONSENSUS", >> $buffer
echo " \"forging\": $FORGING", >> $buffer
echo " \"testnet\": $TESTNET" >> $buffer
echo "}" >> $buffer
((i++))
done
if [ "$DELEGATE_DATA" == "true" ];
then
echo "}," >> $buffer
else
echo "}" >> $buffer
fi
}
cat tmp.file >> $buffer
rm tmp.file
echo "}" >> $buffer
cat buffer.file > data.json