/
v-list-database-hosts
executable file
·145 lines (132 loc) · 4.02 KB
/
v-list-database-hosts
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
141
142
143
144
145
#!/bin/bash
# info: list database hosts
# options: [FORMAT]
#
# example: v-list-database-hosts json
#
# This function for obtaining the list of all configured database hosts.
#----------------------------------------------------------#
# Variables & Functions #
#----------------------------------------------------------#
# Argument definition
format=${1-shell}
# Includes
# shellcheck source=/etc/hestiacp/hestia.conf
source /etc/hestiacp/hestia.conf
# shellcheck source=/usr/local/hestia/func/main.sh
source $HESTIA/func/main.sh
# shellcheck source=/usr/local/hestia/func/db.sh
source $HESTIA/func/db.sh
# load config file
source_conf "$HESTIA/conf/hestia.conf"
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=0
for type in $(echo $DB_SYSTEM | sed -e 's/,/\n/'); do
if [ -e "$HESTIA/conf/$type.conf" ]; then
# Set default port values if they don't exist in database configuration file.
database_set_default_ports
db_hosts=$(grep HOST $HESTIA/conf/$type.conf | wc -l)
objects=$((objects + db_hosts))
fi
done
echo "["
for type in $(echo $DB_SYSTEM | sed -e 's/,/\n/'); do
if [ -e "$HESTIA/conf/$type.conf" ]; then
for str in $(cat $HESTIA/conf/$type.conf); do
parse_object_kv_list "$str"
echo -n ' {
"HOST": "'$HOST'",
"PORT": "'$PORT'",
"TYPE": "'$type'",
"CHARSETS": "'$CHARSETS'",
"MAX_DB": "'$MAX_DB'",
"U_SYS_USERS": "'$U_SYS_USERS'",
"U_DB_BASES": "'$U_DB_BASES'",
"TPL": "'$TPL'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done
fi
done
echo ']'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "HOST PORT TYPE MAX_DB DB_USED SPND TIME DATE"
echo "---- ---- ---- ------ ------- ---- ---- ----"
for type in $(echo $DB_SYSTEM | sed -e 's/,/\n/'); do
if [ -e "$HESTIA/conf/$type.conf" ]; then
# Set default port values if they don't exist in database configuration file.
database_set_default_ports
for str in $(cat $HESTIA/conf/$type.conf); do
parse_object_kv_list "$str"
echo "$HOST $PORT $type $MAX_DB $U_DB_BASES $SUSPENDED $TIME $DATE"
done
fi
done
}
# PLAIN list function
plain_list() {
IFS=$'\n'
for type in $(echo $DB_SYSTEM | sed -e 's/,/\n/'); do
if [ -e "$HESTIA/conf/$type.conf" ]; then
# Set default port values if they don't exist in database configuration file.
database_set_default_ports
for str in $(cat $HESTIA/conf/$type.conf); do
parse_object_kv_list "$str"
echo -ne "$HOST\t$PORT\t$type\t$CHARSETS\t$MAX_DB\t$U_SYS_USERS\t"
echo -e "$U_DB_BASES\t$TPL\t$SUSPENDED\t$TIME\t$DATE"
done
fi
done
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "HOST,PORT,TYPE,CHARSETS,MAX_DB,U_SYS_USERS,"
echo "U_DB_BASES,TPL,SUSPENDED,TIME,DATE"
for type in $(echo $DB_SYSTEM | sed -e 's/,/\n/'); do
if [ -e "$HESTIA/conf/$type.conf" ]; then
# Set default port values if they don't exist in database configuration file.
database_set_default_ports
for str in $(cat $HESTIA/conf/$type.conf); do
parse_object_kv_list "$str"
echo -n "$HOST,$PORT,$type,\"$CHARSETS\",$MAX_DB,\"$U_SYS_USERS\","
echo "$U_DB_BASES,$TPL,$SUSPENDED,$TIME,$DATE"
done
fi
done
}
# Type format validator
is_type_format_valid() {
exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]|\."
if [[ "$1" =~ $exclude ]]; then
check_result $E_INVALID "invalid type extention format :: $1"
fi
}
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Listing data
case $format in
json) json_list ;;
plain) plain_list ;;
csv) csv_list ;;
shell) shell_list | column -t ;;
esac
#----------------------------------------------------------#
# Hestia #
#----------------------------------------------------------#
exit