listing scripts refactoring + new format

This commit is contained in:
Serghey Rodin 2016-06-09 16:26:54 +03:00
commit 6e0ef668bb
60 changed files with 3695 additions and 1991 deletions

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# info: list backup host # info: list backup host
# options: TYPE [FORMAT] # options: TYPE HOST [FORMAT]
# #
# The function for obtaining the list of backup host parameters. # The function for obtaining the list of backup host parameters.
@ -10,46 +10,55 @@
#----------------------------------------------------------# #----------------------------------------------------------#
# Argument definition # Argument definition
TYPE=$1 type=$1
format=${2-shell} format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_ftp_host() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
ip_data=$(cat $VESTA/conf/$TYPE.backup.conf)
echo '{' echo '{'
echo -e "\t\"$TYPE\": {" echo ' "'$type'": {
eval $ip_data "HOST": "'$HOST'",
for field in $fields; do "USERNAME": "'$USERNAME'",
eval value=$field "PORT": "'$PORT'",
if [ $fileds_count -eq $i ]; then "TYPE": "'$type'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "BPATH": "'$BPATH'",
else "TIME": "'$TIME'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "DATE": "'$DATE'"
fi }'
(( ++i)) echo '}'
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_ftp_host() { shell_list() {
line=$(cat $VESTA/conf/$TYPE.backup.conf) echo "HOST: $HOST"
eval $line echo "USERNAME: $USERNAME"
for field in $fields; do echo "PORT: $PORT"
eval key="$field" echo "TYPE: $type"
if [ -z "$key" ]; then echo "PATH: $BPATH"
key='NULL' echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -e "$HOST\t$USERNAME\t$PORT\t$type\t$BPATH\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo "HOST,USERNAME,PORT,TYPE,PATH,TIME,DATE"
echo "$HOST,$USERNAME,$PORT,$type,$BPATH,$TIME,$DATE"
}
# Type format validator
is_type_format_valid() {
exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]|\."
if [[ "$1" =~ $exclude ]]; then
check_result $E_INVALID "invalid type extention format :: $1"
fi fi
echo "${field//$/}: $key "
done
} }
@ -58,25 +67,27 @@ shell_list_ftp_host() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'TYPE [FORMAT]' check_args '1' "$#" 'TYPE [FORMAT]'
is_type_format_valid "$type"
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
if [ ! -e "$VESTA/conf/$TYPE.backup.conf" ]; then # Checking backup config
if [ ! -e "$VESTA/conf/$type.backup.conf" ]; then
exit exit
fi fi
# Defining fileds to select # Parsing backup config
fields='$HOST $USERNAME $PORT $TYPE $BPATH $TIME $DATE' source "$VESTA/conf/$type.backup.conf"
# Listing database # Listing data
case $format in case $format in
json) json_list_ftp_host ;; json) json_list ;;
plain) nohead=1; shell_list_ftp_host;; plain) plain_list ;;
shell) shell_list_ftp_host | column -t ;; csv) csv_list ;;
*) check_args '2' '0' '[FORMAT]' shell) shell_list |column -t ;;
esac esac

View file

@ -2,7 +2,7 @@
# info: list cron job # info: list cron job
# options: USER JOB [FORMAT] # options: USER JOB [FORMAT]
# #
# The function of obtaining cron job settings. # The function of obtaining cron job parameters.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -17,44 +17,46 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_job() { json_list() {
i=1 echo "{"
fileds_count=$(echo "$fields" | wc -w) echo -n ' "'$job'": {
line=$(grep "JOB='$job'" $conf) "MIN": "'$MIN'",
echo '{' "HOUR": "'$HOUR'",
eval $line "DAY": "'$HOUR'",
for field in $fields; do "MONTH": "'$MONTH'",
eval value=$field "WDAY": "'$WDAY'",
value=$(echo "$value"|sed -e 's/"/\\"/g' -e "s/%quote%/'/g") "CMD": "'$CMD'",
if [ "$i" -eq 1 ]; then "JOB": "'$JOB'",
echo -e "\t\"$value\": {" "SUSPENDED": "'$SUSPENDED'",
else "TIME": "'$TIME'",
if [ "$fileds_count" -eq "$i" ]; then "DATE": "'$DATE'"
echo -e "\t\t\"${field//$/}\": \"$value\"" }'
else echo
echo -e "\t\t\"${field//$/}\": \"$value\"," echo '}'
fi
fi
(( ++i))
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_job() { shell_list() {
line=$(grep "JOB='$job'" $conf) echo "MINUTE: $MIN"
eval $line echo "HOUR: $HOUR"
for field in $fields; do echo "DAY: $DAY"
eval key="$field" echo "DAY OF WEEK: $WDAY"
if [ -z "$key" ]; then echo "COMMAND: $CMD"
key=NULL echo "SUSPENDED: $SUSPENDED"
fi echo "TIME: $TIME"
echo "${field//$/}: $key " echo "DATE: $DATE"
done }
# PLAIN list function
plain_list() {
echo -e "$MIN\t$HOUR\t$DAY\t$WDAY\t$CMD\t$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo "MIN,HOUR,DAY,WDAY,CMD,SUSPENDED,TIME,DATE"
echo "$MIN,$HOUR,$DAY,$WDAY,\"$CMD\",$SUSPENDED,$TIME,$DATE'"
} }
@ -63,6 +65,8 @@ shell_list_job() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER JOB [FORMAT]' check_args '2' "$#" 'USER JOB [FORMAT]'
is_format_valid 'user'
is_number_format_valid "$job" "job_id"
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -70,17 +74,27 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields to select # Defining config
conf=$USER_DATA/cron.conf conf=$USER_DATA/cron.conf
fields="\$JOB \$MIN \$HOUR \$DAY \$MONTH \$WDAY \$CMD \$SUSPENDED"
fields="$fields \$TIME \$DATE"
# Listing domains # Checking job id
cron_line=$(grep "JOB='$job'" $conf)
if [ -z "$cron_line" ]; then
check_result $E_NOTEXIST "cron job $job doesn't exist"
fi
# Parsing cron job
eval $cron_line
# Replacing quoted and backslahed text
CMD=$(echo "$CMD" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
# Listing data
case $format in case $format in
json) json_list_job ;; json) json_list ;;
plain) nohead=1; shell_list_job ;; plain) plain_list ;;
shell) shell_list_job |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER JOB [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,53 +16,71 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json list function # JSON list function
json_list_cron() { json_list() {
echo '{' IFS=$'\n'
fileds_count=$(echo $fields| wc -w )
while read line; do
eval $line
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
IFS=' ' objects=$(grep JOB $USER_DATA/cron.conf |wc -l)
for field in $fields; do echo "{"
eval value=\"$field\" while read str; do
value=$(echo "$value"|sed -e 's/"/\\"/g' -e "s/%quote%/'/g") eval $str
if [ $i -eq 1 ]; then CMD=$(echo "$CMD" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
(( ++i)) echo -n ' "'$JOB'": {
echo -e "\t\"$value\": {" "MIN": "'$MIN'",
"HOUR": "'$HOUR'",
"DAY": "'$DAY'",
"MONTH": "'$MONTH'",
"WDAY": "'$WDAY'",
"CMD": "'$CMD'",
"JOB": "'$JOB'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi
done
done < $conf
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
}
# Shell list function
shell_list_cron() {
if [ -z "$nohead" ] ; then
echo "${fields//$/}"
for a in $fields; do
echo -e "------ \c"
done
echo echo
fi fi
while read line ; do ((i++))
eval $line done < <(cat $USER_DATA/cron.conf)
eval echo "$fields" | sed -e "s/%quote%/'/g" echo '}'
done < $conf }
# SHELL list function
shell_list() {
IFS=$'\n'
echo "JOB^MIN^HOUR^MONTH^WDAY^COMMAND"
echo "---^---^----^-----^----^-------"
while read str; do
eval $str
CMD=$(echo "$CMD" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
echo "$JOB^$MIN^$HOUR^$MONTH^$WDAY^$CMD"
done < <(cat $USER_DATA/cron.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
CMD=$(echo "$CMD" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
echo -ne "$JOB\t$MIN\t$HOUR\t$MONTH\t$WDAY\t$CMD\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/cron.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "MIN,HOUR,DAY,WDAY,CMD,SUSPENDED,TIME,DATE"
while read str; do
eval $str
CMD=$(echo "$CMD" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
echo -n "$JOB,$MIN,$HOUR,$MONTH,$WDAY,\"$CMD\","
echo "$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/cron.conf)
} }
@ -71,7 +89,7 @@ shell_list_cron() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -79,23 +97,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Listing data
conf=$USER_DATA/cron.conf
# Defining fileds to select
fields='$JOB $MIN $HOUR $DAY $MONTH $WDAY $CMD $JOB $SUSPENDED $TIME $DATE'
# Listing domains
case $format in case $format in
json) json_list_cron ;; json) json_list ;;
plain) nohead=1; plain) plain_list ;;
fields="\"\$JOB\" \"\$SUSPENDED\" \"\$MIN\" \"\$HOUR\" \"\$DAY\"" csv) csv_list ;;
fields="$fields \"\$MONTH\" \"\$WDAY\" \"\$CMD\" "; shell) shell_list |column -t -s '^';;
fields="$fields \"\$TIME\" \"\$DATE\""
shell_list_cron ;;
shell) fields='$JOB~$SUSPENDED~$MIN~$HOUR~$DAY~$MONTH~$WDAY~$CMD';
shell_list_cron |column -t -s '~';;
*) check_args '1' '0' 'USER [FORMAT]' ;;
esac esac

View file

@ -17,40 +17,46 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_db() { json_list() {
i=1
last_word=$(echo "$fields" | wc -w)
line=$(grep "DB='$database'" $conf)
echo '{' echo '{'
eval $line echo ' "'$database'": {
for field in $fields; do "DATABASE": "'$DB'",
eval value=$field "DBUSER": "'$DBUSER'",
if [ "$i" -eq 1 ]; then "HOST": "'$HOST'",
echo -e "\t\"$value\": {" "TYPE": "'$TYPE'",
else "CHARSET": "'$CHARSET'",
if [ "$last_word" -eq "$i" ]; then "U_DISK": "'$U_DISK'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "SUSPENDED": "'$SUSPENDED'",
else "TIME": "'$TIME'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "DATE": "'$DATE'"
fi }'
fi echo '}'
(( ++i))
done
if [ -n "$value" ]; then
echo -e "\t}"
fi
echo -e '}'
} }
# Shell list for single database # SHELL list function
shell_list_db() { shell_list() {
line=$(grep "DB='$database'" $conf) echo "DATABASE: $DB"
eval $line echo "DB USER: $DBUSER"
for field in $fields; do echo "HOST: $HOST"
eval key="$field" echo "TYPE: $TYPE"
echo "${field//$/}: $key " echo "CHARSET: $CHARSET"
done echo "DISK: $U_DISK"
echo "SUSPENDED: $SUSPENDED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$DB\t$DBUSER\t$HOST\t$TYPE\t$CHARSET\t$U_DISK\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo "DATABASE,DBUSER,HOST,TYPE,CHARSET,U_DISK,SUSPENDED,TIME,DATE"
echo "$DB,$DBUSER,$HOST,$TYPE,$CHARSET,$U_DISK,$SUSPENDED,$TIME,$DATE"
} }
@ -59,7 +65,7 @@ shell_list_db() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DATABASE [FORMAT]' check_args '2' "$#" 'USER DATABASE [FORMAT]'
validate_format 'user' 'database' is_format_valid 'user' 'database'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'db' 'DB' "$database" is_object_valid 'db' 'DB' "$database"
@ -68,17 +74,15 @@ is_object_valid 'db' 'DB' "$database"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Parsing database
eval $(grep "DB='$database'" $USER_DATA/db.conf)
# Defining fileds to select # Listing data
conf=$USER_DATA/db.conf
fields='$DB $DBUSER $HOST $TYPE $CHARSET $U_DISK $SUSPENDED $TIME $DATE'
# Listing database
case $format in case $format in
json) json_list_db ;; json) json_list ;;
plain) shell_list_db ;; plain) plain_list ;;
shell) shell_list_db | column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER DATABASE [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# info: list database server # info: list database host
# options: TYPE HOST [FORMAT] # options: TYPE HOST [FORMAT]
# #
# The function for obtaining database server parameters. # The function for obtaining database host parameters.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -17,40 +17,58 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_dbhost() { json_list() {
i=1
fields_count=$(echo "$fields" | wc -w)
line=$(grep "HOST='$host'" $conf)
echo '{' echo '{'
eval $line echo ' "'$HOST'": {
for field in $fields; do "HOST": "'$HOST'",
eval value=$field "TYPE": "'$type'",
if [ "$i" -eq 1 ]; then "CHARSETS": "'$CHARSETS'",
echo -e "\t\"$value\": {" "MAX_DB": "'$MAX_DB'",
else "U_SYS_USERS": "'$U_SYS_USERS'",
if [ "$fields_count" -eq "$i" ]; then "U_DB_BASES": "'$U_DB_BASES'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "TPL": "'$TPL'",
else "SUSPENDED": "'$SUSPENDED'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "TIME": "'$TIME'",
fi "DATE": "'$DATE'"
fi }'
(( ++i)) echo '}'
done
if [ -n "$value" ]; then
echo -e "\t}"
fi
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_dbhost() { shell_list() {
line=$(grep "HOST='$host'" $conf) echo "HOST: $HOST"
eval $line echo "TYPE: $type"
for field in $fields; do echo "CHARSETS: $CHARSETS"
eval key="$field" echo "MAX_DB: $MAX_DB"
echo "${field//$/}: $key" echo "U_DB_BASES: $U_DB_BASES"
done echo "U_SYS_USERS: $U_SYS_USERS"
echo "TPL: $TPL"
echo "SUSPENDED: $SUSPENDED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$HOST\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"
}
# CSV list function
csv_list() {
echo -n "HOST,TYPE,CHARSETS,MAX_DB,U_SYS_USERS,"
echo "U_DB_BASES,TPL,SUSPENDED,TIME,DATE'"
echo -n "$HOST,$type,\"$CHARSETS\",$MAX_DB,\"$U_SYS_USERS\","
echo "$U_DB_BASES,$TPL,$SUSPENDED,$TIME,$DATE"
}
# Type format validator
is_type_format_valid() {
exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]|\."
if [[ "$1" =~ $exclude ]]; then
check_result $E_INVALID "invalid type extention format :: $1"
fi
} }
@ -59,7 +77,7 @@ shell_list_dbhost() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'TYPE HOST [FORMAT]' check_args '2' "$#" 'TYPE HOST [FORMAT]'
validate_format 'host' is_type_format_valid "$type"
is_object_valid "../../conf/$type" 'HOST' "$host" is_object_valid "../../conf/$type" 'HOST' "$host"
@ -67,17 +85,15 @@ is_object_valid "../../conf/$type" 'HOST' "$host"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Parsing hosts
conf=$VESTA/conf/$type.conf eval $(grep "HOST='$host'" $VESTA/conf/$type.conf)
fields='$HOST $CHARSETS $MAX_DB $U_SYS_USERS $U_DB_BASES $TPL $SUSPENDED'
fields="$fields \$TIME \$DATE"
# Listing database # Listing data
case $format in case $format in
json) json_list_dbhost ;; json) json_list ;;
plain) nohead=1; shell_list_dbhost ;; plain) plain_list ;;
shell) shell_list_dbhost | column -t;; csv) csv_list ;;
*) check_args '2' '0' 'TYPE HOST [FORMAT]' shell) shell_list |column -t ;;
esac esac

View file

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# info: list database servers # info: list database hosts
# options: TYPE [FORMAT] # options: [FORMAT]
# #
# The function for obtaining the list of all hosts of the same databases' type. # The function for obtaining the list of all configured database hosts.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -10,37 +10,122 @@
#----------------------------------------------------------# #----------------------------------------------------------#
# Argument definition # Argument definition
type=${1-mysql} format=${1-shell}
format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.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 "$VESTA/conf/$type.conf" ]; then
db_hosts=$(grep HOST $VESTA/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 "$VESTA/conf/$type.conf" ]; then
for str in $(cat $VESTA/conf/$type.conf); do
eval $str
echo -n ' "'$HOST'": {
"HOST": "'$HOST'",
"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 TYPE MAX_DB DB_USED SPND TIME DATE"
echo "---- ---- ------ ------- ---- ---- ----"
for type in $(echo $DB_SYSTEM |sed -e 's/,/\n/'); do
if [ -e "$VESTA/conf/$type.conf" ]; then
for str in $(cat $VESTA/conf/$type.conf); do
eval $str
echo "$HOST $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 "$VESTA/conf/$type.conf" ]; then
for str in $(cat $VESTA/conf/$type.conf); do
eval $str
echo -ne "$HOST\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,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 "$VESTA/conf/$type.conf" ]; then
for str in $(cat $VESTA/conf/$type.conf); do
eval $str
echo -n "$HOST,$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
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
# Checking args
#check_args '1' "$#" 'TYPE [FORMAT]'
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$VESTA/conf/$type.conf
fields='$HOST $CHARSETS $MAX_DB $U_SYS_USERS $U_DB_BASES $TPL $SUSPENDED'
fields="$fields \$TIME \$DATE"
# Listing database
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list;; plain) plain_list ;;
shell) fields='$HOST $MAX_DB $U_DB_BASES $SUSPENDED $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '2' '0' 'TYPE [FORMAT]'
esac esac

View file

@ -16,31 +16,40 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Json function # JSON list function
json_list_dbtypes() { json_list() {
types=$(echo "${DB_SYSTEM//,/ }") objects=$(echo "${DB_SYSTEM//,/ }" |wc -w)
t_counter=$(echo "$types" | wc -w)
i=1 i=1
echo '[' echo '['
for type in $types; do for type in ${DB_SYSTEM//,/ }; do
if [ "$i" -lt "$t_counter" ]; then echo -n ' "'$type'"'
echo -e "\t\"$type\"," if [ "$i" -lt "$objects" ]; then
echo ','
else else
echo -e "\t\"$type\"" echo
fi fi
(( ++i)) ((i++))
done done
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_dbtypes() { shell_list() {
types=$(echo "${DB_SYSTEM//,/ }") echo -e "TYPE\n----"
if [ -z "$nohead" ]; then echo "$DB_SYSTEM" |sed -e "s/,/\n/"
echo "TYPES" }
echo "----------"
fi # PLAIN list function
for type in $types; do plain_list() {
for type in ${DB_SYSTEM//,/ }; do
echo "$type"
done
}
# CSV list function
csv_list() {
echo "TYPE"
for type in ${DB_SYSTEM//,/ }; do
echo "$type" echo "$type"
done done
} }
@ -50,12 +59,12 @@ shell_list_dbtypes() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Listing data
case $format in case $format in
json) json_list_dbtypes ;; json) json_list ;;
plain) nohead=1; shell_list_dbtypes ;; plain) plain_list ;;
shell) shell_list_dbtypes ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list;;
esac esac

View file

@ -16,13 +16,73 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep "DB=" $USER_DATA/db.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DB'": {
"DATABASE": "'$DB'",
"DBUSER": "'$DBUSER'",
"HOST": "'$HOST'",
"TYPE": "'$TYPE'",
"CHARSET": "'$CHARSET'",
"U_DISK": "'$U_DISK'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/db.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DATABASE USER HOST TYPE DISK SPND DATE"
echo "-------- ---- ---- ---- ---- ---- ----"
while read str; do
eval $str
echo "$DB $DBUSER $HOST $TYPE $U_DISK $SUSPENDED $DATE"
done < <(cat $USER_DATA/db.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DB\t$DBUSER\t$HOST\t$TYPE\t$CHARSET\t$U_DISK\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/db.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "DATABASE,DBUSER,HOST,TYPE,CHARSET,U_DISK,SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo "$DB,$DBUSER,$HOST,$TYPE,$CHARSET,$U_DISK,$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/db.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -30,17 +90,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$USER_DATA/db.conf
fields='$DB $DBUSER $HOST $TYPE $CHARSET $U_DISK $SUSPENDED $TIME $DATE'
# Listing databases
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DB $DBUSER $HOST $TYPE $U_DISK $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -2,8 +2,7 @@
# info: list dns domain # info: list dns domain
# options: USER DOMAIN [FORMAT] # options: USER DOMAIN [FORMAT]
# #
# The function of obtaining the list of domain parameters. This call, just as # The function of obtaining the list of dns domain parameters.
# all v_list_* calls, supports 3 formats - json, shell and plain.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -18,57 +17,52 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_domain() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "DOMAIN='$domain'" $conf)
# Print top bracket
echo '{' echo '{'
echo ' "'$DOMAIN'": {
# Assing key=value "IP": "'$IP'",
eval $line "TPL": "'$TPL'",
"TTL": "'$TTL'",
# Starting output loop "EXP": "'$EXP'",
for field in $fields; do "SOA": "'$SOA'",
# Parsing key=value "SERIAL": "'$SERIAL'",
eval value=$field "SRC": "'$SRC'",
"RECORDS": "'$RECORDS'",
# Checking first field "SUSPENDED": "'$SUSPENDED'",
if [ "$i" -eq 1 ]; then "TIME": "'$TIME'",
echo -e "\t\"$value\": {" "DATE": "'$DATE'"
else }'
if [ "$fileds_count" -eq "$i" ]; then echo '}'
echo -e "\t\t\"${field//$/}\": \"$value\""
else
echo -e "\t\t\"${field//$/}\": \"$value\","
fi
fi
# Updating iterator
(( ++i))
done
# If there was any output
if [ -n "$value" ]; then
echo -e ' }'
fi
# Printing bottom json bracket
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_domain() { shell_list() {
line=$(grep "DOMAIN='$domain'" $conf) echo "DOMAIN: $DOMAIN"
echo "IP: $IP"
echo "TEMPLATE: $TPL"
echo "TTL: $TTL"
echo "EXP: $EXP"
echo "SOA: $SOA"
echo "SERIAL: $SERIAL"
echo "RECORDS: $RECORDS"
echo "SUSPENDED: $SUSPENDED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# Parsing key=value
eval $line
# Print result line # PLAIN list function
for field in $fields; do plain_list() {
eval key="$field" echo -ne "$DOMAIN\t$IP\t$TPL\t$TTL\t$EXP\t$SOA\t$SERIAL\t$RECORDS\t"
echo "${field//$/}: $key " echo -e "$SUSPENDED\t$TIME\t$DATE"
done }
# CSV list function
csv_list() {
echo "DOMAIN,IP,TPL,TTL,EXP,SOA,SERIAL,RECORDS,SUSPENDED,TIME,DATE"
echo -n "$DOMAIN,$IP,$TPL,$TTL,$EXP,$SOA,$SERIAL,$RECORDS,$SUSPENDED,"
echo "$TIME,$DATE"
} }
@ -85,17 +79,15 @@ is_object_valid 'dns' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields to select # Parsing domain
conf=$USER_DATA/dns.conf eval $(grep "DOMAIN='$domain'" $USER_DATA/dns.conf)
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
$SUSPENDED $TIME $DATE'
# Listing domains # Listing data
case $format in case $format in
json) json_list_domain ;; json) json_list ;;
plain) nohead=1; shell_list_domain ;; plain) plain_list ;;
shell) shell_list_domain |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER DOMAIN [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,13 +16,78 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep DOMAIN $USER_DATA/dns.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DOMAIN'": {
"IP": "'$IP'",
"TPL": "'$TPL'",
"TTL": "'$TTL'",
"EXP": "'$EXP'",
"SOA": "'$SOA'",
"SERIAL": "'$SERIAL'",
"SRC": "'$SRC'",
"RECORDS": "'$RECORDS'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/dns.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DOMAIN IP TPL TTL REC SPND DATE"
echo "------ -- --- --- --- ---- ----"
while read str; do
eval $str
echo "$DOMAIN $IP $TPL $TTL $RECORDS $SUSPENDED $DATE"
done < <(cat $USER_DATA/dns.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DOMAIN\t$IP\t$TPL\t$TTL\t$EXP\t$SOA\t$SERIAL\t"
echo -e "$SRC\t$RECORDS\t$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/dns.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "DOMAIN,IP,TPL,TTL,EXP,SOA,SERIAL,SRC,RECORDS,SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo -n "$DOMAIN,$IP,$TPL,$TTL,$EXP,$SOA,$SERIAL,"
echo "$SRC,$RECORDS,$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/dns.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -30,18 +95,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields # Listing data
conf=$USER_DATA/dns.conf
fields='$DOMAIN $IP $TPL $TTL $EXP $SOA $SERIAL $SRC $RECORDS
$SUSPENDED $TIME $DATE'
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DOMAIN $IP $TPL $EXP $DATE'; csv) csv_list ;;
shell_list| column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]';;
esac esac

View file

@ -17,56 +17,67 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json func # JSON list function
json_list_dns() { json_list() {
echo '{'
fileds_count=$(echo $fields| wc -w )
while read line; do
IFS=$'\n' IFS=$'\n'
eval $line
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
IFS=' ' objects=$(grep ID $USER_DATA/dns/$domain.conf |wc -l)
for field in $fields; do echo "{"
eval value=\"$field\" while read str; do
value=$(echo "$value" | sed -e 's/"/\\"/g' -e "s/%quote%/'/g") eval $str
if [ $i -eq 1 ]; then VALUE=$(echo "$VALUE" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
(( ++i)) echo -n ' "'$ID'": {
echo -e "\t\"$value\": {" "RECORD": "'$RECORD'",
"TYPE": "'$TYPE'",
"PRIORITY": "'$PRIORITY'",
"VALUE": "'$VALUE'",
"ID": "'$ID'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi
done
done < $conf
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
}
# Shell function
shell_list_dns() {
if [ -z "$nohead" ] ; then
echo "${fields//$/}"
for a in $fields; do
echo -e "------ \c"
done
echo echo
fi fi
while read line ; do ((i++))
done < <(cat $USER_DATA/dns/$domain.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n' IFS=$'\n'
eval $line echo "ID^RECORD^TYPE^VALUE^DATE"
eval echo "$fields" | sed "s/%quote%/'/g" echo "--^------^----^-----^----"
done < $conf while read str; do
eval $str
echo "$ID^$RECORD^$TYPE^${VALUE:0:30}^$DATE"
done < <(cat $USER_DATA/dns/$domain.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
echo -ne "$ID\t$RECORD\t$TYPE\t$PRIORITY\t$VALUE\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/dns/$domain.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "ID,RECORD,TYPE,PRIORITY,VALUE,SUSPENDED,TIME,DATE"
while read str; do
eval $str
VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
echo -n "$ID,$RECORD,$TYPE,$PRIORITY,\"$VALUE\","
echo "$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/dns/$domain.conf)
} }
@ -75,7 +86,7 @@ shell_list_dns() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [FORMAT]' check_args '2' "$#" 'USER DOMAIN [FORMAT]'
validate_format 'user' 'domain' is_format_valid 'user' 'domain'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'dns' 'DOMAIN' "$domain" is_object_valid 'dns' 'DOMAIN' "$domain"
@ -84,17 +95,12 @@ is_object_valid 'dns' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields # Listing data
conf=$USER_DATA/dns/$domain.conf
fields='$ID $RECORD $TYPE $PRIORITY $VALUE $ID $SUSPENDED $TIME $DATE'
# Listing domains
case $format in case $format in
json) json_list_dns ;; json) json_list ;;
plain) nohead=1; shell_list_dns ;; plain) plain_list ;;
shell) fields='$ID $RECORD $TYPE $VALUE'; csv) csv_list ;;
shell_list_dns | column -t ;; shell) shell_list |column -t -s '^';;
*) check_args '2' '0' 'USER DOMAIN [FORMAT]'
esac esac

View file

@ -17,55 +17,62 @@ format=${2-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/func/domain.sh source $VESTA/func/domain.sh
# Json func # JSON list function
json_list_dns() { json_list() {
echo '{'
fileds_count=$(echo $fields| wc -w )
while read line; do
IFS=$'\n' IFS=$'\n'
eval $line
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
IFS=' ' objects=$(grep ID $DNSTPL/$template.tpl |wc -l)
for field in $fields; do echo "{"
eval value=\"$field\" while read str; do
value=$(echo "$value" | sed -e 's/"/\\"/g' -e "s/%quote%/'/g") eval $str
if [ $i -eq 1 ]; then VALUE=$(echo "$VALUE" |sed -e 's/"/\\"/g' -e "s/%quote%/'/g")
(( ++i)) echo -n ' "'$ID'": {
echo -e "\t\"$value\": {" "RECORD": "'$RECORD'",
"TYPE": "'$TYPE'",
"PRIORITY": "'$PRIORITY'",
"VALUE": "'$VALUE'",
"ID": "'$ID'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi
done
done < $conf
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
}
# Shell function
shell_list_dns() {
if [ -z "$nohead" ] ; then
echo "${fields//$/}"
for a in $fields; do
echo -e "------ \c"
done
echo echo
fi fi
((i++))
done < <(cat $DNSTPL/$template.tpl)
echo '}'
}
while read line ; do # SHELL list function
eval $line shell_list() {
eval echo "$fields" | sed "s/%quote%/'/g" IFS=$'\n'
done < $conf echo "ID^RECORD^TYPE^VALUE"
echo "--^------^----^-----"
while read str; do
eval $str
echo "$ID^$RECORD^$TYPE^$VALUE"
done < <(cat $DNSTPL/$template.tpl)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
echo -e "$ID\t$RECORD\t$TYPE\t$PRIORITY\t$VALUE"
done < <(cat $DNSTPL/$template.tpl)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "ID,RECORD,TYPE,PRIORITY,VALUE"
while read str; do
eval $str
VALUE=$(echo "$VALUE" |sed -e "s/%quote%/\\'/g")
echo "$ID,$RECORD,$TYPE,$PRIORITY,\"$VALUE\""
done < <(cat $DNSTPL/$template.tpl)
} }
@ -74,7 +81,7 @@ shell_list_dns() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'TEMPLATE [FORMAT]' check_args '1' "$#" 'TEMPLATE [FORMAT]'
validate_format 'template' is_format_valid 'template'
is_dns_template_valid is_dns_template_valid
@ -82,16 +89,12 @@ is_dns_template_valid
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields # Listing data
conf=$DNSTPL/$template.tpl
fields='$RECORD $TYPE $PRIORITY $VALUE'
# Listing templates
case $format in case $format in
json) json_list_dns ;; json) json_list ;;
plain) nohead=1; shell_list_dns ;; plain) plain_list ;;
shell) shell_list_dns | column -t ;; csv) csv_list ;;
*) check_args '1' '0' 'TEMPLATE [FORMAT]';; shell) shell_list |column -t -s '^';;
esac esac

View file

@ -15,30 +15,41 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_dnstpl() { json_list() {
templates=$(ls -t $DNSTPL |grep '\.tpl' |cut -f 1 -d '.') objects=$(echo "$templates" |wc -l)
t_counter=$(echo "$templates" | wc -w)
i=1 i=1
echo '[' echo "["
for template in $templates; do for template in $templates; do
if [ "$i" -lt "$t_counter" ]; then echo -n ' "'$template'"'
echo -e "\t\"$template\"," if [ "$i" -lt "$objects" ]; then
echo ','
else else
echo -e "\t\"$template\"" echo
fi fi
(( ++i)) ((i++))
done done
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_dnstpl() { shell_list() {
templates=$(ls -t $DNSTPL |grep '\.tpl' |cut -f 1 -d '.') echo "TEMPLATE"
if [ -z "$nohead" ]; then echo "--------"
echo "Templates" ls -t $DNSTPL |grep '\.tpl' |cut -f 1 -d '.'
echo "----------" }
fi
# PLAIN list function
plain_list() {
for template in $templates; do
echo "$template"
done
}
# CSV list function
csv_list() {
echo "TEMPLATE"
for template in $templates; do for template in $templates; do
echo "$template" echo "$template"
done done
@ -49,12 +60,15 @@ shell_list_dnstpl() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Defining template list
templates=$(ls -t $DNSTPL |grep '\.tpl' |cut -f 1 -d '.')
# Listing data
case $format in case $format in
json) json_list_dnstpl;; json) json_list ;;
plain) nohead=1; shell_list_dnstpl ;; plain) plain_list ;;
shell) shell_list_dnstpl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT] [LIMIT] [OFFSET]';; shell) shell_list;;
esac esac

View file

@ -15,25 +15,77 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep RULE $VESTA/data/firewall/rules.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$RULE'": {
"ACTION": "'$ACTION'",
"PROTOCOL": "'$PROTOCOL'",
"PORT": "'$PORT'",
"IP": "'$IP'",
"COMMENT": "'$COMMENT'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $VESTA/data/firewall/rules.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "RULE^ACTION^PROTO^PORT^IP^SPND^DATE"
echo "----^------^-----^----^--^----^----"
while read str; do
eval $str
echo "$RULE^$ACTION^$PROTOCOL^$PORT^$IP^$SUSPENDED^$DATE"
done < <(cat $VESTA/data/firewall/rules.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$RULE\t$ACTION\t$PROTOCOL\t$PORT\t$IP\t$COMMENT\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
done < <(cat $VESTA/data/firewall/rules.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "RULE,ACTION,PROTOCOL,PORT,IP,COMMENT,SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo -n "$RULE,$ACTION,$PROTOCOL,$PORT,$IP,\"$COMMENT\","
echo "$SUSPENDED,$TIME,$DATE"
done < <(cat $VESTA/data/firewall/rules.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Listing data
conf=$VESTA/data/firewall/rules.conf
# Defining fileds to select
fields="\$RULE \$ACTION \$PROTOCOL \$PORT \$IP \$COMMENT"
fields="$fields \$RULE \$SUSPENDED \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields="\$ACTION \$PROTOCOL \$PORT \$IP"; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t -s '^' ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -15,24 +15,71 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep IP $VESTA/data/firewall/banlist.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$IP'": {
"IP": "'$IP'",
"CHAIN": "'$COMMENT'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $VESTA/data/firewall/banlist.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "IP CHAIN TIME DATE"
echo "-- ----- ---- ----"
while read str; do
eval $str
echo "$IP $CHAIN $TIME $DATE"
done < <(cat $VESTA/data/firewall/banlist.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -e "$IP\t$CHAIN\t$TIME\t$DATE"
done < <(cat $VESTA/data/firewall/banlist.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "IP,CHAIN,TIME,DATE"
while read str; do
eval $str
echo "$IP,$CHAIN,$TIME,$DATE"
done < <(cat $VESTA/data/firewall/banlist.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Listing data
conf=$VESTA/data/firewall/banlist.conf
# Defining fileds to select
fields="\$IP:\$CHAIN \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$IP $CHAIN $TIME $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -16,43 +16,43 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function json_list() {
json_list_fw_rule() {
i=1
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "RULE='$rule'" $conf)
echo '{' echo '{'
eval $line echo ' "'$RULE'": {
for field in $fields; do "ACTION": "'$ACTION'",
eval value=$field "PROTOCOL": "'$PROTOCOL'",
if [ "$i" -eq 1 ]; then "PORT": "'$PORT'",
echo -e "\t\"$value\": {" "IP": "'$IP'",
else "COMMENT": "'$COMMENT'",
if [ "$fileds_count" -eq "$i" ]; then "SUSPENDED": "'$SUSPENDED'",
echo -e "\t\t\"${field//$/}\": \"$value\"" "TIME": "'$TIME'",
else "DATE": "'$DATE'"
echo -e "\t\t\"${field//$/}\": \"$value\"," }'
fi echo '}'
fi
(( ++i))
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_fw_rule() { shell_list() {
line=$(grep "RULE='$rule'" $conf) echo "ACTION: $ACTION"
eval $line echo "PROTOCOL: $PROTOCOL"
for field in $fields; do echo "PORT: $PORT"
eval key="$field" echo "IP: $IP"
if [ -z "$key" ]; then echo "COMMENT: $COMMENT"
key=NULL echo "SUSPENDED: $SUSPENDED"
fi echo "TIME: $TIME"
echo "${field//$/}: $key " echo "DATE: $DATE"
done }
# PLAIN list function
plain_list() {
echo -ne "$RULE\t$ACTION\t$PROTOCOL\t$PORT\t$IP\t$COMMENT\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo "RULE,ACTION,PROTOCOL,PORT,IP,COMMENT,SUSPENDED,TIME,DATE"
echo "$RULE,$ACTION,$PROTOCOL,$PORT,$IP,$COMMENT,$SUSPENDED,$TIME,$DATE"
} }
@ -61,6 +61,7 @@ shell_list_fw_rule() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'RULE [FORMAT]' check_args '1' "$#" 'RULE [FORMAT]'
is_number_format_valid "$rule" "rule id"
is_object_valid '../../data/firewall/rules' 'RULE' "$rule" is_object_valid '../../data/firewall/rules' 'RULE' "$rule"
@ -68,17 +69,15 @@ is_object_valid '../../data/firewall/rules' 'RULE' "$rule"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields to select # Parsing rules
conf=$VESTA/data/firewall/rules.conf eval $(grep "RULE='$rule'" $VESTA/data/firewall/rules.conf)
fields="\$RULE \$ACTION \$PROTOCOL \$PORT \$IP \$COMMENT"
fields="$fields \$RULE \$SUSPENDED \$TIME \$DATE"
# Listing fw rule # Listing data
case $format in case $format in
json) json_list_fw_rule ;; json) json_list ;;
plain) nohead=1; shell_list_fw_rule ;; plain) plain_list ;;
shell) shell_list_fw_rule |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'RULE [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -18,43 +18,49 @@ format=${4-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_account() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "ACCOUNT='$account'" $conf)
echo '{' echo '{'
eval $line echo ' "'$account'": {
for field in $fields; do "ALIAS": "'$ALIAS'",
eval value=$field "FWD": "'$FWD'",
if [ "$i" -eq 1 ]; then "FWD_ONLY": "'$FWD_ONLY'",
echo -e "\t\"$value\": {" "AUTOREPLY": "'$AUTOREPLY'",
else "QUOTA": "'$QUOTA'",
if [ "$fileds_count" -eq "$i" ]; then "U_DISK": "'$U_DISK'",
echo -e "\t\t\"${field//$/}\": \"$value\"" "SUSPENDED": "'$SUSPENDED'",
else "TIME": "'$TIME'",
echo -e "\t\t\"${field//$/}\": \"$value\"," "DATE": "'$DATE'"
fi }'
fi echo '}'
(( ++i))
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_account() { shell_list() {
line=$(grep "ACCOUNT='$account'" $conf) echo "ACCOUNT: $account"
eval $line echo "ALIAS: $ALIAS"
for field in $fields; do echo "FORWARD: $FWD"
eval key="$field" echo "FORWARD_ONLY: $FWD_ONLY"
if [ -z "$key" ]; then echo "AUTOREPLY: $AUTOREPLY"
key=NULL echo "QUOTA: $QUOTA"
fi echo "DISK: $U_DISK"
echo "${field//$/}: $key " echo "SUSPENDED: $SUSPENDED"
done echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$account\t$ALIAS\t$FWD\t$FWD_ONLY\t$AUTOREPLY\t$QUOTA\t"
echo -e "$U_DISK\t$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "ACCOUNT,ALIAS,FWD,FWD_ONLY,AUTOREPLY,QUOTA,U_DISK"
echo "SUSPENDED,TIME,DATE"
echo -n "$ACCOUNT,\"$ALIAS\",\"$FWD\",$FWD_ONLY,$AUTOREPLY,$QUOTA,"
echo "$U_DISK,$SUSPENDED,$TIME,$DATE"
} }
@ -63,6 +69,7 @@ shell_list_account() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '3' "$#" 'USER DOMAIN ACCOUNT [FORMAT]' check_args '3' "$#" 'USER DOMAIN ACCOUNT [FORMAT]'
is_format_valid 'user' 'domain' 'account'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
is_object_valid "mail/$domain" 'ACCOUNT' "$account" is_object_valid "mail/$domain" 'ACCOUNT' "$account"
@ -73,17 +80,15 @@ is_object_valid "mail/$domain" 'ACCOUNT' "$account"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields to select # Parsing mail account
conf=$USER_DATA/mail/$domain.conf eval $(grep "ACCOUNT='$account'" $USER_DATA/mail/$domain.conf)
fields="\$ACCOUNT \$ALIAS \$FWD \$FWD_ONLY \$QUOTA \$AUTOREPLY \$U_DISK"
fields="$fields \$SUSPENDED \$TIME \$DATE"
# Listing domains # Listing data
case $format in case $format in
json) json_list_account ;; json) json_list ;;
plain) nohead=1; shell_list_account ;; plain) plain_list ;;
shell) shell_list_account |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER DOMAIN ACCOUNT [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -18,8 +18,8 @@ format=${4-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_msg() { json_list() {
i='1' # iterator i='1' # iterator
echo '{' echo '{'
echo -e "\t\"$account\": {" echo -e "\t\"$account\": {"
@ -27,11 +27,20 @@ json_list_msg() {
echo -e "\t}\n}" echo -e "\t}\n}"
} }
# Shell function # SHELL list function
shell_list_msg() { shell_list() {
if [ ! -z "$msg" ]; then echo "$msg"
echo -e "$msg" }
fi
# PLAIN list function
plain_list() {
echo "$msg"
}
# CSV list function
csv_list() {
echo "MSG"
echo "$msg"
} }
@ -39,7 +48,8 @@ shell_list_msg() {
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [FORMAT]' check_args '3' "$#" 'USER DOMAIN ACCOUNT [FORMAT]'
is_format_valid 'user' 'domain' 'account'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
is_object_unsuspended 'mail' 'DOMAIN' "$domain" is_object_unsuspended 'mail' 'DOMAIN' "$domain"
@ -56,12 +66,12 @@ if [ -e "$USER_DATA/mail/$account@$domain.msg" ]; then
sed ':a;N;$!ba;s/\n/\\n/g' ) sed ':a;N;$!ba;s/\n/\\n/g' )
fi fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_msg ;; json) json_list ;;
plain) nohead=1; shell_list_msg ;; plain) plain_list ;;
shell) shell_list_msg ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -17,13 +17,90 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep ACCOUNT $USER_DATA/mail/$domain.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$ACCOUNT'": {
"ALIAS": "'$ALIAS'",
"FWD": "'$FWD'",
"FWD_ONLY": "'$FWD_ONLY'",
"AUTOREPLY": "'$AUTOREPLY'",
"QUOTA": "'$QUOTA'",
"U_DISK": "'$U_DISK'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/mail/$domain.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "ACCOUNT ALIAS FWD DISK DATE"
echo "------- ----- --- ---- ----"
while read str; do
eval $str
if [ -z "$ALIAS" ]; then
ALIAS='no'
else
if [ "${#ALIAS}" -gt 12 ]; then
ALIAS="${ALIAS:0:12}..."
fi
fi
if [ -z "$FWD" ]; then
FWD='no'
else
if [ "${#FWD}" -gt 20 ]; then
FWD="${FWD:0:20}..."
fi
fi
echo "$ACCOUNT $ALIAS $FWD $U_DISK $DATE"
done < <(cat $USER_DATA/mail/$domain.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$ACCOUNT\t$ALIAS\t$FWD\t$FWD_ONLY\t$AUTOREPLY\t"
echo -e "$QUOTA\t$U_DISK\t$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/mail/$domain.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "ACCOUNT,ALIAS,FWD,FWD_ONLY,AUTOREPLY,QUOTA,U_DISK,"
echo "SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo -n "$ACCOUNT,\"$ALIAS\",\"$FWD\",$FWD_ONLY,$AUTOREPLY,"
echo "$QUOTA,$U_DISK,$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/mail/$domain.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [FORMAT]' check_args '2' "$#" 'USER DOMAIN [FORMAT]'
validate_format 'user' 'domain' is_format_valid 'user' 'domain'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
@ -32,18 +109,12 @@ is_object_valid 'mail' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$USER_DATA/mail/$domain.conf
fields="\$ACCOUNT \$ALIAS \$FWD \$FWD_ONLY \$QUOTA \$AUTOREPLY \$U_DISK"
fields="$fields \$SUSPENDED \$TIME \$DATE"
# Listing domain accounts
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$ACCOUNT $AUTOREPLY $QUOTA $U_DISK $SUSPENDED $TIME $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -1,9 +1,8 @@
#!/bin/bash #!/bin/bash
# info: list web domain # info: list mail domain
# options: USER DOMAIN [FORMAT] # options: USER DOMAIN [FORMAT]
# #
# The function of obtaining the list of domain parameters. This call, just as # The function of obtaining the list of domain parameters.
# all v_list_* calls, supports 3 formats - json, shell and plain.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -18,41 +17,50 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_domain() { json_list() {
i=1 eval $(grep "DOMAIN='$domain'" $USER_DATA/mail.conf)
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "DOMAIN='$domain'" $conf)
echo '{' echo '{'
eval $line echo ' "'$DOMAIN'": {
for field in $fields; do "ANTIVIRUS": "'$ANTIVIRUS'",
eval value=$field "ANTISPAM": "'$ANTISPAM'",
if [ "$i" -eq 1 ]; then "DKIM": "'$DKIM'",
echo -e "\t\"$value\": {" "CATCHALL": "'$CATCHALL'",
else "ACCOUNTS": "'$ACCOUNTS'",
if [ "$fileds_count" -eq "$i" ]; then "U_DISKL": "'$U_DISK'",
echo -e "\t\t\"${field//$/}\": \"$value\"" "SUSPENDED": "'$SUSPENDED'",
else "TIME": "'$TIME'",
echo -e "\t\t\"${field//$/}\": \"$value\"," "DATE": "'$DATE'"
fi }'
fi echo '}'
(( ++i))
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_domain() { shell_list() {
line=$(grep "DOMAIN='$domain'" $conf) echo "DOMAIN: $DOMAIN"
eval $line echo "ANTIVIRUS: $ANTIVIRUS"
for field in $fields; do echo "ANTISPAM: $ANTISPAM"
eval key="$field" echo "DKIM: $DKIM"
echo "${field//$/}: $key " echo "CATCHALL: $CATCHALL"
done echo "ACCOUNTS: $ACCOUNTS"
echo "DISK: $U_DISK"
echo "SUSPENDED: $SUSPENDED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$DOMAIN\t$ANTIVIRUS\t$ANTISPAM\t$DKIM\t$CATCHALL\t"
echo -e "$ACCOUNTS\t$U_DISK\t$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "DOMAIN,ANTIVIRUS,ANTISPAM,DKIM,CATCHALL,ACCOUNTS,U_DISK,"
echo "SUSPENDED,TIME,DATE"
echo -n "$DOMAIN,$ANTIVIRUS,$ANTISPAM,$DKIM,$CATCHALL,$ACCOUNTS,$U_DISK"
echo "$SUSPENDED,$TIME,$DATE"
} }
@ -61,6 +69,7 @@ shell_list_domain() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [FORMAT]' check_args '2' "$#" 'USER DOMAIN [FORMAT]'
is_format_valid 'user' 'domain'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
@ -69,17 +78,15 @@ is_object_valid 'mail' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Parsing mail domain
conf=$USER_DATA/mail.conf eval $(grep "DOMAIN='$domain'" $USER_DATA/mail.conf)
fields='$DOMAIN $ANTIVIRUS $ANTISPAM $DKIM $ACCOUNTS $U_DISK $CATCHALL
$SUSPENDED $TIME $DATE'
# Listing domains # Listing data
case $format in case $format in
json) json_list_domain ;; json) json_list ;;
plain) nohead=1; shell_list_domain ;; plain) plain_list ;;
shell) shell_list_domain |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER DOMAIN [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -17,8 +17,8 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_ssl() { json_list() {
echo '{' echo '{'
echo -e "\t\"$domain\": {" echo -e "\t\"$domain\": {"
echo " \"PEM\": \"$pem\"," echo " \"PEM\": \"$pem\","
@ -26,14 +26,21 @@ json_list_ssl() {
echo -e "\t}\n}" echo -e "\t}\n}"
} }
# Shell function # SHELL list function
shell_list_ssl() { shell_list() {
if [ ! -z "$pem" ]; then
echo -e "$pem" echo -e "$pem"
fi
if [ ! -z "$pub" ]; then
echo -e "\n$pub" echo -e "\n$pub"
fi }
# PLAIN list function
plain_list() {
echo "$pem\t$pub"
}
# CSV list function
csv_list() {
echo "PEM,PUB"
echo "\"$pem\",\"$pub\""
} }
@ -42,6 +49,7 @@ shell_list_ssl() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [FORMAT]' check_args '2' "$#" 'USER DOMAIN [FORMAT]'
is_format_valid 'user' 'domain'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'mail' 'DOMAIN' "$domain" is_object_valid 'mail' 'DOMAIN' "$domain"
@ -49,6 +57,8 @@ is_object_valid 'mail' 'DOMAIN' "$domain"
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Parsing domain keys
if [ -e "$USER_DATA/mail/$domain.pem" ]; then if [ -e "$USER_DATA/mail/$domain.pem" ]; then
pem=$(cat $USER_DATA/mail/$domain.pem |sed ':a;N;$!ba;s/\n/\\n/g') pem=$(cat $USER_DATA/mail/$domain.pem |sed ':a;N;$!ba;s/\n/\\n/g')
fi fi
@ -57,12 +67,12 @@ if [ -e "$USER_DATA/mail/$domain.pub" ]; then
pub=$(cat $USER_DATA/mail/$domain.pub |sed ':a;N;$!ba;s/\n/\\n/g') pub=$(cat $USER_DATA/mail/$domain.pub |sed ':a;N;$!ba;s/\n/\\n/g')
fi fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_ssl ;; json) json_list ;;
plain) nohead=1; shell_list_ssl ;; plain) plain_list ;;
shell) shell_list_ssl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -17,8 +17,8 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_dkim_dns() { json_list() {
echo '{' echo '{'
echo -e "\t\"_domainkey\": {" echo -e "\t\"_domainkey\": {"
echo " \"TTL\": \"3600\"," echo " \"TTL\": \"3600\","
@ -26,17 +26,31 @@ json_list_dkim_dns() {
echo -e "\t}," echo -e "\t},"
echo -e "\n\t\"mail._domainkey\": {" echo -e "\n\t\"mail._domainkey\": {"
echo " \"TTL\": \"3600\"," echo " \"TTL\": \"3600\","
echo " \"TXT\": \"'$pub'\"" echo " \"TXT\": \"\\\"$pub\\\"\""
echo -e "\t}\n}" echo -e "\t}\n}"
} }
# Shell function # SHELL list function
shell_list_dkim_dns() { shell_list() {
echo "RECORD TTL TYPE VALUE"
echo "------ --- ---- -----"
echo "_domainkey 3600 IN TXT \"t=y; o=~;\"" echo "_domainkey 3600 IN TXT \"t=y; o=~;\""
echo "mail._domainkey 3600 IN TXT \"k=rsa; p=$pub\"" echo "mail._domainkey 3600 IN TXT \"k=rsa; p=$pub\""
} }
# PLAIN list function
plain_list() {
echo -e "_domainkey\t3600\tIN\tTXT\t\"t=y; o=~;\""
echo -e "mail._domainkey\t3600\tIN\tTXT\t\"k=rsa; p=$pub\""
}
# CSV list function
csv_list() {
echo "RECORD,TTL,IN,TYPE,VALUE"
echo "_domainkey,3600,IN,TXT,\"\"t=y; o=~;\"\""
echo "mail._domainkey,3600,IN,TXT,\"\"k=rsa; p=$pub\"\""
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
@ -51,19 +65,20 @@ is_object_valid 'mail' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Check pub key # Parsing domain keys
if [ -e "$USER_DATA/mail/$domain.pub" ]; then if [ -e "$USER_DATA/mail/$domain.pub" ]; then
pub=$(cat $USER_DATA/mail/$domain.pub | sed ':a;N;$!ba;s/\n/\\n/g') pub=$(cat $USER_DATA/mail/$domain.pub |grep -v "KEY-----")
pub=$(echo "$pub" |sed ':a;N;$!ba;s/\n/\\n/g')
else else
pub="DKIM-SUPPORT-IS-NOT-ACTIVATED" pub="DKIM-SUPPORT-IS-NOT-ACTIVATED"
fi fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_dkim_dns ;; json) json_list ;;
plain) shell_list_dkim_dns ;; plain) plain_list ;;
shell) shell_list_dkim_dns ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list |column -t -s '^';;
esac esac

View file

@ -16,13 +16,77 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep DOMAIN $USER_DATA/mail.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DOMAIN'": {
"ANTIVIRUS": "'$ANTIVIRUS'",
"ANTISPAM": "'$ANTISPAM'",
"DKIM": "'$DKIM'",
"CATCHALL": "'$CATCHALL'",
"ACCOUNTS": "'$ACCOUNTS'",
"U_DISKL": "'$U_DISK'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/mail.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DOMAIN ANTIVIRUS ANTISPAM DKIM ACC DISK SPND DATE"
echo "------ --------- -------- ---- --- ---- --- ----"
while read str; do
eval $str
echo -n "$DOMAIN $ANTIVIRUS $ANTISPAM $DKIM $ACCOUNTS $U_DISK "
echo "$SUSPENDED $DATE"
done < <(cat $USER_DATA/mail.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DOMAIN\t$ANTIVIRUS\t$ANTISPAM\t$DKIM\t$CATCHALL\t"
echo -e "$ACCOUNTS\t$U_DISK\t$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/mail.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "DOMAIN,ANTIVIRUS,ANTISPAM,DKIM,CATCHALL,ACCOUNTS,U_DISK,"
echo "SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo -n "$DOMAIN,$ANTIVIRUS,$ANTISPAM,$DKIM,$CATCHALL,$ACCOUNTS,"
echo "'$U_DISK,$SUSPENDED,$TIME,$DATE"
echo
done < <(cat $USER_DATA/mail.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -30,18 +94,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$USER_DATA/mail.conf
fields="\$DOMAIN \$ANTIVIRUS \$ANTISPAM \$DKIM \$ACCOUNTS \$U_DISK \$CATCHALL"
fields="$fields \$SUSPENDED \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DOMAIN $ANTIVIRUS $ANTISPAM $DKIM $ACCOUNTS $U_DISK $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -15,30 +15,84 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep HOST $VESTA/conf/dns-cluster.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$HOST'": {
"PORT": "'$PORT'",
"TYPE": "'$TYPE'",
"USER": "'$USER'",
"DNS_USER": "'$DNS_USER'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $VESTA/conf/dns-cluster.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "HOST PORT TYPE USER DNS_USER SPND DATE"
echo "---- ---- ---- ---- -------- ---- ----"
while read str; do
eval $str
echo "$HOST $PORT $TYPE $USER $DNS_USER $SUSPENDED $DATE"
done < <(cat $VESTA/conf/dns-cluster.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$HOST\t$PORT\t$TYPE\t$USER\t$DNS_USER\t"
echo -e "$SUSPENDED\t$TIME\t$DATE"
done < <(cat $VESTA/conf/dns-cluster.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "HOST,PORT,TYPE,USER,DNS_USER,SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo "$HOST,$PORT,$TYPE,$USER,$DNS_USER,$SUSPENDED,$TIME,$DATE"
done < <(cat $VESTA/conf/dns-cluster.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
if [ ! -e "$VESTA/conf/dns-cluster.conf" ]; then
exit
fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Check config # Listing data
conf=$VESTA/conf/dns-cluster.conf
if [ ! -e "$conf" ]; then
exit
fi
# Defining fileds to select
fields='$HOST $USER $DNS_USER $SUSPENDED $TIME $DATE'
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
csv) csv_list ;;
shell) shell_list |column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]';;
esac esac

View file

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# info: list system config # info: list system configuration
# options: [FORMAT] # options: [FORMAT]
# #
# The function for obtaining the list of system parameters. # The function for obtaining the list of system parameters.
@ -12,33 +12,167 @@
# Argument definition # Argument definition
format=${1-shell} format=${1-shell}
# Json function source $VESTA/conf/vesta.conf
json_list_conf() {
lines=$(wc -l $VESTA/conf/vesta.conf | cut -f 1 -d ' ') # JSON list function
i='0' json_list() {
IFS=$'\n' echo '{
echo -e "{\n\t\"config\": {" "config": {
for str in $(cat $VESTA/conf/vesta.conf); do "WEB_SYSTEM": "'$WEB_SYSTEM'",
(( ++i)) "WEB_RGROUPS": "'$WEB_RGROUPS'",
key=${str%%=*} "WEB_PORT": "'$WEB_PORT'",
value=${str#*=} "WEB_SSL": "'$WEB_SSL'",
if [ "$i" -lt "$lines" ]; then "WEB_SSL_PORT": "'$WEB_SSL_PORT'",
echo -e "\t\t\"$key\": \"${value//\'/}\"," "WEB_BACKEND": "'$WEB_BACKEND'",
else "PROXY_SYSTEM": "'$PROXY_SYSTEM'",
echo -e "\t\t\"$key\": \"${value//\'/}\"" "PROXY_PORT": "'$PROXY_PORT'",
fi "PROXY_SSL_PORT": "'$PROXY_SSL_PORT'",
done "FTP_SYSTEM": "'$FTP_SYSTEM'",
echo -e "\t}\n}" "MAIL_SYSTEM": "'$MAIL_SYSTEM'",
"IMAP_SYSTEM": "'$IMAP_SYSTEM'",
"ANTIVIRUS_SYSTEM": "'$ANTIVIRUS_SYSTEM'",
"ANTISPAM_SYSTEM": "'$ANTISPAM_SYSTEM'",
"DB_SYSTEM": "'$DB_SYSTEM'",
"DNS_SYSTEM": "'$DNS_SYSTEM'",
"DNS_CLUSTER": "'$DNS_CLUSTER'",
"STATS_SYSTEM": "'$STATS_SYSTEM'",
"BACKUP_SYSTEM": "'$BACKUP_SYSTEM'",
"CRON_SYSTEM": "'$CRON_SYSTEM'",
"DISK_QUOTA": "'$DISK_QUOTA'",
"FIREWALL_SYSTEM": "'$FIREWALL_SYSTEM'",
"FIREWALL_EXTENSION": "'$FIREWALL_EXTENSION'",
"FILEMANAGER_KEY": "'$FILEMANAGER_KEY'",
"SFTPJAIL_KEY": "'$SFTPJAIL_KEY'",
"REPOSITORY": "'$REPOSITORY'",
"VERSION": "'$VERSION'",
"LANGUAGE": "'$LANGUAGE'",
"BACKUP_GZIP": "'$BACKUP_GZIP'",
"BACKUP": "'$BACKUP'",
"MAIL_URL": "'$MAIL_URL'",
"DB_PMA_URL": "'$DB_PMA_URL'",
"DB_PGA_URL": "'$DB_PGA_URL'"
}
}'
} }
# Shell function # Shell list
shell_list_conf() { shell_list() {
IFS=$'\n' if [ ! -z "$WEB_SYSTEM" ]; then
for str in $(cat $VESTA/conf/vesta.conf); do echo "WEB Server: $WEB_SYSTEM:$WEB_PORT ($WEB_RGROUPS)"
key=${str%%=*} echo "SSL Support: $WEB_SSL:$WEB_SSL_PORT"
value=${str#*=} fi
echo "$key: ${value//\'/}" if [ ! -z "$WEB_BACKEND" ]; then
done echo "WEB Backend: $WEB_BACKEND"
fi
if [ ! -z "$PROXY_SYSTEM" ]; then
echo "Proxy Server: $PROXY_SYSTEM:$PROXY_PORT"
echo "Proxy SSL: $PROXY_SYSTEM:$PROXY_SSL_PORT"
fi
if [ ! -z "$STATS_SYSTEM" ]; then
echo "Web Stats: ${STATS_SYSTEM//,/, }"
fi
if [ ! -z "$FTP_SYSTEM" ]; then
echo "FTP Server: $FTP_SYSTEM"
fi
if [ ! -z "$MAIL_SYSTEM" ]; then
echo -n "Mail Server: $MAIL_SYSTEM"
if [ ! -z "$IMAP_SYSTEM" ]; then
echo -n " + $IMAP_SYSTEM"
fi
if [ ! -z "$ANTIVIRUS_SYSTEM" ]; then
echo -n " + $ANTIVIRUS_SYSTEM"
fi
if [ ! -z "$ANTISPAM_SYSTEM" ]; then
echo -n " + $ANTISPAM_SYSTEM"
fi
echo
if [ ! -z "$MAIL_URL" ]; then
echo "Web Mail: hostname + $MAIL_URL"
fi
fi
if [ ! -z "$DB_SYSTEM" ]; then
echo "Database: ${DB_SYSTEM//,/, }"
if [ ! -z "$DB_PMA_URL" ]; then
echo "PMA URL: $DB_PMA_URL"
fi
if [ ! -z "$DB_PGA_URL" ]; then
echo "PGA URL: $DB_PGA_URL"
fi
fi
if [ ! -z "$DNS_SYSTEM" ]; then
echo -n "DNS server: $DNS_SYSTEM"
if [ ! -z "$DNS_CLUSTER" ]; then
echo -n " (cluster)"
fi
echo
fi
if [ ! -z "$CRON_SYSTEM" ]; then
echo "CRON: $CRON_SYSTEM"
fi
if [ ! -z "$FIREWALL_SYSTEM" ]; then
echo -n "Firewall: $FIREWALL_SYSTEM"
if [ ! -z "$FIREWALL_EXTENSION" ]; then
echo -n "+ $FIREWALL_EXTENSION"
fi
echo
fi
if [ ! -z "$BACKUP_SYSTEM" ]; then
echo "Backups: ${BACKUP_SYSTEM//,/, }"
if [ ! -z "$BACKUP" ]; then
echo "Backup Dir: $BACKUP"
fi
fi
if [ ! -z "$DISK_QUOTA" ]; then
echo "Disk Quota: $DISK_QUOTA"
fi
if [ ! -z "$FILEMANAGER_KEY" ]; then
echo "FileManager: $FILEMANAGER_KEY"
fi
if [ ! -z "$SFTPJAIL_KEY" ]; then
echo "SFTP Chroot: $SFTPJAIL_KEY"
fi
if [ ! -z "$LANGUAGE" ] && [ "$LANGUAGE" != 'en' ]; then
echo "Language: $LANGUAGE"
fi
echo "Version: $VERSION"
}
# PLAIN list function
plain_list() {
echo -ne "$WEB_SYSTEM\t$WEB_RGROUPS\t$WEB_PORT\t$WEB_SSL\t"
echo -ne "$WEB_SSL_PORT\t$WEB_BACKEND\t$PROXY_SYSTEM\t$PROXY_PORT\t"
echo -ne "$PROXY_SSL_PORT\t$FTP_SYSTEM\t$MAIL_SYSTEM\t$IMAP_SYSTEM\t"
echo -ne "$ANTIVIRUS_SYSTEM\t$ANTISPAM_SYSTEM\t$DB_SYSTEM\t"
echo -ne "$DNS_SYSTEM\t$DNS_CLUSTER\t$STATS_SYSTEM\t$BACKUP_SYSTEM\t"
echo -ne "$CRON_SYSTEM\t$DISK_QUOTA\t$FIREWALL_SYSTEM\t"
echo -ne "$FIREWALL_EXTENSION\t$FILEMANAGER_KEY\t$SFTPJAIL_KEY\t"
echo -ne "$REPOSITORY\t$VERSION\t$LANGUAGE\t$BACKUP_GZIP\t$BACKUP\t"
echo -e "$MAIL_URL\t$DB_PMA_URL\t$DB_PGA_URL"
}
# CSV list
csv_list() {
echo -n "'WEB_SYSTEM','WEB_RGROUPS','WEB_PORT','WEB_SSL',"
echo -n "'WEB_SSL_PORT','WEB_BACKEND','PROXY_SYSTEM','PROXY_PORT',"
echo -n "'PROXY_SSL_PORT','FTP_SYSTEM','MAIL_SYSTEM','IMAP_SYSTEM',"
echo -n "'ANTIVIRUS_SYSTEM','ANTISPAM_SYSTEM','DB_SYSTEM',"
echo -n "'DNS_SYSTEM','DNS_CLUSTER','STATS_SYSTEM','BACKUP_SYSTEM',"
echo -n "'CRON_SYSTEM','DISK_QUOTA','FIREWALL_SYSTEM',"
echo -n "'FIREWALL_EXTENSION','FILEMANAGER_KEY','SFTPJAIL_KEY',"
echo -n "'REPOSITORY','VERSION','LANGUAGE','BACKUP_GZIP','BACKUP',"
echo -n "'MAIL_URL','DB_PMA_URL','DB_PGA_URL'"
echo
echo -n "'$WEB_SYSTEM','$WEB_RGROUPS','$WEB_PORT','$WEB_SSL',"
echo -n "'$WEB_SSL_PORT','$WEB_BACKEND','$PROXY_SYSTEM','$PROXY_PORT',"
echo -n "'$PROXY_SSL_PORT','$FTP_SYSTEM','$MAIL_SYSTEM','$IMAP_SYSTEM',"
echo -n "'$ANTIVIRUS_SYSTEM','$ANTISPAM_SYSTEM','$DB_SYSTEM',"
echo -n "'$DNS_SYSTEM','$DNS_CLUSTER','$STATS_SYSTEM','$BACKUP_SYSTEM',"
echo -n "'$CRON_SYSTEM','$DISK_QUOTA','$FIREWALL_SYSTEM',"
echo -n "'$FIREWALL_EXTENSION','$FILEMANAGER_KEY','$SFTPJAIL_KEY',"
echo -n "'$REPOSITORY','$VERSION','$LANGUAGE','$BACKUP_GZIP','$BACKUP',"
echo -n "'$MAIL_URL','$DB_PMA_URL','$DB_PGA_URL'"
echo
} }
@ -46,11 +180,12 @@ shell_list_conf() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing system config # Listing data
case $format in case $format in
json) json_list_conf ;; json) json_list ;;
plain) shell_list_conf ;; plain) shell_list ;;
shell) shell_list_conf | column -t ;; csv) csv_list ;;
shell) shell_list ;;
esac esac

View file

@ -65,7 +65,7 @@ for db in $(echo $DB_SYSTEM| tr ',' '\n'); do
fi fi
# Checking PostgreSQL # Checking PostgreSQL
if [ "$db" = 'pgsql' ]; then if [ "$db" = 'pgsql' ] && [ ! -z "$(which psql)" ]; then
echo "PostgreSQL $HOST status" echo "PostgreSQL $HOST status"
export PGPASSWORD="$PASSWORD" export PGPASSWORD="$PASSWORD"
psql -h $HOST -U $USER -c "SELECT * FROM pg_stat_activity" psql -h $HOST -U $USER -c "SELECT * FROM pg_stat_activity"

View file

@ -15,6 +15,38 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
echo '{'
echo ' "sysinfo": {
"HOSTNAME": "'$HOSTNAME'",
"OS": "'$OS'",
"VERSION": "'$VERSION'",
"ARCH": "'$ARCH'",
"UPTIME": "'$UPTIME'",
"LOADAVERAGE": "'$LOADAVERAGE'"
}'
echo '}'
}
# SHELL list function
shell_list() {
echo "HOSTNAME OS VER ARCH UPTIME LA"
echo "-------- -- --- ---- ------ --"
echo "$HOSTNAME $OS $VERSION $ARCH $UPTIME $LOADAVERAGE"
}
# PLAIN list function
plain_list() {
echo -e "$HOSTNAME\t$OS\t$VERSION\t$ARCH\t$UPTIME\t$LOADAVERAGE"
}
# CSV list function
csv_list() {
echo "HOSTNAME,OS,VERSION,ARCH,UPTIME,LOADAVERAGE"
echo "$HOSTNAME,$OS,$VERSION,$ARCH,$UPTIME,$LOADAVERAGE"
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
@ -57,31 +89,14 @@ UPTIME="$(echo $UPTIME / 60 | bc)"
# Check LoadAverage # Check LoadAverage
LOADAVERAGE=$(cat /proc/loadavg |cut -f 1 -d ' ') LOADAVERAGE=$(cat /proc/loadavg |cut -f 1 -d ' ')
# Create tmp file # Listing data
tmp_file=$(mktemp)
# Define key/value pairs
str="SYS='sysinfo' HOSTNAME='$HOSTNAME' OS='$OS' VERSION='$VERSION'"
str="$str ARCH='$ARCH' UPTIME='$UPTIME' LOADAVERAGE='$LOADAVERAGE'"
# Defining config
echo -e "$str" > $tmp_file
conf=$tmp_file
# Defining fileds to select
fields="\$SYS \$HOSTNAME \$OS \$VERSION \$ARCH \$UPTIME \$LOADAVERAGE"
# Listing services
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields="\$HOSTNAME \$OS \$VERSION \$ARCH \$UPTIME \$LOADAVERAGE" csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac
rm -f $tmp_file
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -15,31 +15,43 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_iface() { json_list() {
dev=$(cat /proc/net/dev |grep : |cut -f 1 -d : |tr -d ' ' |grep -v lo) objects=$(echo "$interfaces" |wc -l)
int_counter=$(echo "$dev" | wc -l)
i=1 i=1
echo '[' echo '['
for interface in $dev; do for interface in $interfaces; do
if [ "$i" -lt "$int_counter" ]; then echo -n ' "'$interfaces'"'
echo -e "\t\"$interface\"," if [ "$i" -lt "$objects" ]; then
echo ','
else else
echo -e "\t\"$interface\"" echo
fi fi
(( ++i)) ((i++))
done done
echo "]" echo ']'
} }
# Shell function # SHELL list function
shell_list_iface() { shell_list() {
dev=$(cat /proc/net/dev |grep : |cut -f 1 -d : |tr -d ' ' |grep -v lo) echo "INTERFACE"
if [ -z "$nohead" ]; then echo "---------"
echo "INTERFACES" for interface in $interfaces; do
echo "----------" echo "$interface"
fi done
for interface in $dev; do }
# PLAIN list function
plain_list() {
for interface in $interfaces; do
echo "$interface"
done
}
# CSV list function
csv_list() {
echo "INTERFACE"
for interface in $interfaces; do
echo "$interface" echo "$interface"
done done
} }
@ -49,12 +61,15 @@ shell_list_iface() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Defining interface list
interfaces=$(cat /proc/net/dev |grep : |cut -f 1 -d : |tr -d ' ' |grep -v lo)
# Listing data
case $format in case $format in
json) json_list_iface ;; json) json_list ;;
plain) nohead=1; shell_list_iface ;; plain) plain_list ;;
shell) shell_list_iface ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list;;
esac esac

View file

@ -11,50 +11,57 @@
# Argument definition # Argument definition
ip=$1 ip=$1
IP=$ip
format=${2-shell} format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/func/ip.sh source $VESTA/func/ip.sh
# Json function # JSON list function
json_list_ip() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
ip_data=$(cat $VESTA/data/ips/$IP)
echo '{' echo '{'
eval $ip_data echo ' "'$ip'": {
for field in $fields; do "OWNER": "'$OWNER'",
eval value=$field "STATUS": "'$STATUS'",
if [ $i -eq 1 ]; then "NAME": "'$NAME'",
echo -e "\t\"$value\": {" "U_SYS_USERS": "'$U_SYS_USERS'",
else "U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
if [ $fileds_count -eq $i ]; then "INTERFACE": "'$INTERFACE'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "NETMASK": "'$NETMASK'",
else "NAT": "'$NAT'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "TIME": "'$TIME'",
fi "DATE": "'$DATE'"
fi }'
(( ++i)) echo '}'
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_ip() { shell_list() {
line=$(cat $VESTA/data/ips/$IP) echo "IP: $ip"
eval $line echo "NETMASK: $NETMASK"
for field in $fields; do echo "INTERFACE: $INTERFACE"
eval key="$field" echo "NAT: $NAT"
if [ -z "$key" ]; then echo "OWNER: $OWNER"
key='NULL' echo "STATUS: $STATUS"
fi echo "NAME: $NAME"
echo "${field//$/}: $key " echo "USERS: $U_SYS_USERS"
done echo "DOMAINS: $U_WEB_DOMAINS"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$IP\t$OWNER\t$STATUS\t$NAME\t$U_SYS_USERS\t$U_WEB_DOMAINS\t"
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
echo "NETMASK,NAT,TIME,DATE"
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
} }
@ -62,26 +69,26 @@ shell_list_ip() {
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
# Checking args
check_args '1' "$#" 'IP [FORMAT]' check_args '1' "$#" 'IP [FORMAT]'
validate_format 'ip' is_format_valid 'ip'
is_ip_valid if [ ! -e "$VESTA/data/ips/$ip" ]; then
check_result $E_NOTEXIST "ip $ip doesn't exist"
fi
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
conf=$VESTA/data/ips/$IP
# Defining fileds to select # Parsing ip
fields='$IP $OWNER $STATUS $NAME $U_SYS_USERS $U_WEB_DOMAINS $INTERFACE source $VESTA/data/ips/$ip
$NETMASK $NAT $TIME $DATE'
# Listing ip # Listing data
case $format in case $format in
json) json_list_ip ;; json) json_list ;;
plain) shell_list_ip ;; plain) plain_list ;;
shell) shell_list_ip | column -t ;; csv) csv_list ;;
*) check_args '1' '0' 'IP [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -2,7 +2,7 @@
# info: list system ips # info: list system ips
# options: [FORMAT] # options: [FORMAT]
# #
# The function for obtaining the list of system ip's. # The function for obtaining the list of system ip adresses.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -15,62 +15,66 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_ips() { json_list() {
echo '{' echo '{'
ip_list=$(ls --sort=time $VESTA/data/ips/) ip_count=$(ls $VESTA/data/ips/ |wc -l)
fileds_count=$(echo "$fields" | wc -w)
for IP in $ip_list; do
ip_data=$(cat $VESTA/data/ips/$IP)
eval $ip_data
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
for field in $fields; do while read IP; do
eval value=$field source $VESTA/data/ips/$IP
if [ $i -eq 1 ]; then echo -n ' "'$IP'": {
(( ++i)) "OWNER": "'$OWNER'",
echo -e "\t\"$value\": {" "STATUS": "'$STATUS'",
"NAME": "'$NAME'",
"U_SYS_USERS": "'$U_SYS_USERS'",
"U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
"INTERFACE": "'$INTERFACE'",
"NETMASK": "'$NETMASK'",
"NAT": "'$NAT'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$ip_count" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"$value\","
else
echo -e "\t\t\"${field//$/}\": \"$value\""
data=1
fi fi
fi ((i++))
done done < <(ls $VESTA/data/ips/)
done echo '}'
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_ips() { shell_list() {
ip_list=$(ls $VESTA/data/ips/) echo "IP MASK NAT STATUS WEB DATE"
if [ -z "$nohead" ]; then echo "-- ---- --- ------ --- ----"
echo "${fields//$/}" while read IP; do
for a in $fields; do
echo -e "--------- \c"
done
echo
fi
for IP in $ip_list; do
source $VESTA/data/ips/$IP source $VESTA/data/ips/$IP
for field in $fields; do if [ -z "$NAT" ]; then
eval value=$field NAT='no'
if [ -z "$value" ]; then
value='NULL'
fi fi
echo -n "$value " echo "$IP $NETMASK $NAT $STATUS $U_WEB_DOMAINS $DATE"
done done < <(ls $VESTA/data/ips/)
echo }
done
# PLAIN list function
plain_list() {
while read IP; do
source $VESTA/data/ips/$IP
echo -ne "$IP\t$OWNER\t$STATUS\t$NAME\t$U_SYS_USERS\t$U_WEB_DOMAINS\t"
echo -e "$INTERFACE\t$NETMASK\t$NAT\t$TIME\t$DATE"
done < <(ls $VESTA/data/ips/)
}
# CSV list function
csv_list() {
echo -n "IP,OWNER,STATUS,NAME,U_SYS_USERS,U_WEB_DOMAINS,INTERFACE"
echo "NETMASK,NAT,TIME,DATE"
while read IP; do
source $VESTA/data/ips/$IP
echo -n "$IP,$OWNER,$STATUS,$NAME,\"$U_SYS_USERS\",$U_WEB_DOMAINS,"
echo "$INTERFACE, $NETMASK,$NAT,$TIME,$DATE"
done < <(ls $VESTA/data/ips/)
} }
@ -78,18 +82,12 @@ shell_list_ips() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$VESTA/data/ips/*
fields="\$IP \$OWNER \$STATUS \$NAME \$U_SYS_USERS \$U_WEB_DOMAINS"
fields="$fields \$INTERFACE \$NETMASK \$NAT \$TIME \$DATE"
# Listing ip addresses
case $format in case $format in
json) json_list_ips ;; json) json_list ;;
plain) nohead=1; shell_list_ips ;; plain) plain_list ;;
shell) fields='$IP $NETMASK $NAT $OWNER $U_WEB_DOMAINS'; csv) csv_list ;;
shell_list_ips | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' '[FORMAT]'
esac esac

View file

@ -16,13 +16,13 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_lang() { json_list() {
int_counter=$(echo "$languages" | wc -l) objects=$(echo "$languages" |wc -l)
i=1 i=1
echo '[' echo '['
for lang in $languages; do for lang in $languages; do
if [ "$i" -lt "$int_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$lang\"," echo -e "\t\"$lang\","
else else
echo -e "\t\"$lang\"" echo -e "\t\"$lang\""
@ -32,12 +32,25 @@ json_list_lang() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_lang() { shell_list() {
if [ -z "$nohead" ]; then echo "LANGUAGE"
echo "LANGUAGES" echo "--------"
echo "----------" for lang in $languages; do
fi echo "$lang"
done
}
# PLAIN list function
plain_list() {
for lang in $languages; do
echo "$lang"
done
}
# CSV list function
csv_list() {
echo "LANGUAGE"
for lang in $languages; do for lang in $languages; do
echo "$lang" echo "$lang"
done done
@ -48,15 +61,15 @@ shell_list_lang() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Check languages # Defining language list
languages=$(ls $VESTA/web/inc/i18n/ |cut -f 1 -d .) languages=$(ls $VESTA/web/inc/i18n/ |cut -f 1 -d .)
# Listing domains # Listing data
case $format in case $format in
json) json_list_lang ;; json) json_list ;;
plain) nohead=1; shell_list_lang ;; plain) plain_list ;;
shell) shell_list_lang ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list;;
esac esac

View file

@ -15,10 +15,16 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Define json function # JSON list function
json_list_rrd() { json_list() {
i=1 i=1
echo "{" echo "{"
# Generating timestamp
time_n_date=$(date +'%T %F')
TIME=$(echo "$time_n_date" |cut -f 1 -d \ )
DATE=$(echo "$time_n_date" |cut -f 2 -d \ )
for type in $rrd_types; do for type in $rrd_types; do
for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
if [ "$i" -ne 1 ]; then if [ "$i" -ne 1 ]; then
@ -61,12 +67,37 @@ json_list_rrd() {
echo "}" echo "}"
} }
# Define jshell function # SHELL list function
shell_list_rrd() { shell_list() {
if [ -z "$nohead" ]; then echo "TYPE VAL_1 VAL_2 VAL_3 TIME DATE"
echo "PATH" echo "---- ----- ----- ----- ---- ----"
echo "---------" for type in $rrd_types; do
for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
rrd_type=$(echo "$rrd" |tr '[:lower:]' '[:upper:]')
rrd_data=$(rrdtool fetch "$RRD/$type/$rrd.rrd" AVERAGE -e 0 -s 0)
rrd_data=$(echo "$rrd_data" |tail -n 1)
rrd_timestamp=$(echo "$rrd_data" |cut -f 1 -d :)
rrd_time=$(date -d "@$rrd_timestamp" +%F)
rrd_date=$(date -d "@$rrd_timestamp" +%T)
rrd_val1=$(echo "$rrd_data" |awk '{print $2}' |cut -d. -f1)
rrd_val2=$(echo "$rrd_data" |awk '{print $3}' |cut -d. -f1)
rrd_val3=$(echo "$rrd_data" |awk '{print $4}' |cut -d. -f1)
if [ -z "$rrd_val1" ]; then
rrd_val1="-nan"
fi fi
if [ -z "$rrd_val2" ]; then
rrd_val2="-nan"
fi
if [ -z "$rrd_val3" ]; then
rrd_val3="-nan"
fi
echo "$rrd_type $rrd_val1 $rrd_val2 $rrd_val3 $rrd_time $rrd_date"
done
done
}
# PLAIN list function
plain_list() {
for type in $rrd_types; do for type in $rrd_types; do
for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
echo "$RRD/$type/$rrd.rrd" echo "$RRD/$type/$rrd.rrd"
@ -74,39 +105,53 @@ shell_list_rrd() {
done done
} }
# CSV list function
csv_list() {
for type in $rrd_types; do
echo "RRD"
for rrd in $(ls $RRD/$type |grep rrd$ |sed "s/\.rrd$//g"); do
echo "$RRD/$type/$rrd.rrd"
done
done
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Checking enabled systems # Definng rrd charts
rrd_types="la mem net" rrd_types="la mem net"
if [ -n "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then # Checking web system
if [ ! -z "$WEB_SYSTEM" ]; then
rrd_types="$rrd_types web" rrd_types="$rrd_types web"
fi fi
if [ -n "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then # Checking mail system
if [ ! -z "$MAIL_SYSTEM" ]; then
rrd_types="$rrd_types mail" rrd_types="$rrd_types mail"
fi fi
if [ -n "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then # Checking db system
if [ ! -z "$DB_SYSTEM" ]; then
rrd_types="$rrd_types db" rrd_types="$rrd_types db"
fi fi
if [ -n "$FTP_SYSTEM" ] && [ "$FTP_SYSTEM" != 'no' ]; then # Checking ftp system
if [ ! -z "$FTP_SYSTEM" ]; then
rrd_types="$rrd_types ftp" rrd_types="$rrd_types ftp"
fi fi
# Adding ssh
rrd_types="$rrd_types ssh" rrd_types="$rrd_types ssh"
# Listing data
# Listing domains
case $format in case $format in
json) json_list_rrd ;; json) json_list ;;
plain) nohead=1; shell_list_rrd ;; plain) plain_list ;;
shell) shell_list_rrd | column -t ;; csv) csv_list ;;
shell) shell_list |column -t ;;
esac esac

View file

@ -18,25 +18,80 @@ source $VESTA/conf/vesta.conf
export PATH=$PATH:/sbin export PATH=$PATH:/sbin
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(echo -e "$data" |grep NAME |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$NAME'": {
"SYSTEM": "'$SYSTEM'",
"STATE": "'$STATE'",
"CPU": "'$CPU'",
"MEM": "'$MEM'",
"RTIME": "'$RTIME'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(echo -e "$data" |grep NAME)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "NAME STATE CPU MEM UPTIME"
echo "---- ----- --- --- ------"
while read str; do
eval $str
echo "$NAME $STATE $CPU $MEM $RTIME"
done < <(echo -e "$data" |grep NAME)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -e "$NAME\t$SYSTEM\t$STATE\t$CPU\t$MEM\t$RTIME"
done < <(echo -e "$data" |grep NAME)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "NAME,SYSTEM,STATE,CPU,MEM,RTIME"
while read str; do
eval $str
echo "$NAME,\"$SYSTEM\",$STATE,$CPU,$MEM,$RTIME"
done < <(echo -e "$data" |grep NAME)
}
# Get service state function
get_srv_state() { get_srv_state() {
srv=$1 srv=$1
proc_name=${2-$1} name=${2-$1}
# Check service status
state='running' state='running'
# Searching related pids # Searching related pids
if [ -z $3 ]; then if [ -z $3 ]; then
pids=$(pidof $proc_name |tr ' ' '|') pids=$(pidof $name |tr ' ' '|')
else else
pids=$(pidof -x $proc_name |tr ' ' '|') pids=$(pidof -x $name |tr ' ' '|')
fi fi
if [ -z "$pids" ] && [ "$proc_name" != 'nginx' ] ; then if [ -z "$pids" ] && [ "$name" != 'nginx' ]; then
#fallback to pgrep pids=$(pgrep $name |tr '\n' '|')
pids=$(pgrep $proc_name |tr '\n' '|')
fi fi
# Checking pid
if [ ! -z "$pids" ]; then if [ ! -z "$pids" ]; then
pid=$(echo $pids|cut -f 1 -d \|) pid=$(echo "$pids" |cut -f 1 -d '|')
pids=$(egrep "$pids" $tmp_file) pids=$(egrep "$pids" $tmp_file)
# Calculating CPU usage # Calculating CPU usage
@ -46,25 +101,30 @@ get_srv_state() {
mem=$(echo "$pids" |awk '{sum += $3} END {print sum/1024 }') mem=$(echo "$pids" |awk '{sum += $3} END {print sum/1024 }')
mem=$(printf "%.0f\n" $mem) mem=$(printf "%.0f\n" $mem)
# Searching service uptime # Searching pid file
pid_file=''
if [ -e "/var/run/$srv.pid" ]; then if [ -e "/var/run/$srv.pid" ]; then
srv_file="/var/run/$srv.pid" pid_file="/var/run/$srv.pid"
fi fi
if [ -z "$srv_file" ] && [ -e "/var/run/$srv/$srv.pid" ]; then if [ -z "$pid_file" ] && [ -e "/var/run/$srv/$srv.pid" ]; then
srv_file="/var/run/$srv/$srv.pid" pid_file="/var/run/$srv/$srv.pid"
fi fi
if [ -z $srv_file ] && [ -e "/proc/$pid" ]; then if [ -z "$pid_file" ] && [ -e "/var/run/$name/$name.pid" ]; then
srv_file="/proc/$pid" pid_file="/var/run/$name/$name.pid"
fi fi
if [ ! -z "$srv_file" ]; then if [ -z "$pid_file" ] && [ -e "/proc/$pid" ]; then
mtime=$(stat -c "%Y" $srv_file) pid_file="/proc/$pid"
fi
# Calculating uptime
if [ ! -z "$pid_file" ]; then
mtime=$(stat -c "%Y" $pid_file)
rtime=$((ctime - mtime)) rtime=$((ctime - mtime))
rtime=$((rtime / 60)) rtime=$((rtime / 60))
else else
rtime=0 rtime=0
fi fi
else else
# Service is stopped
state='stopped' state='stopped'
mem=0 mem=0
cpu=0 cpu=0
@ -77,105 +137,92 @@ get_srv_state() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Save current proccess list # Saving current proccess list
tmp_file=$(mktemp) tmp_file=$(mktemp)
ps -eo pid,pcpu,size > $tmp_file ps -eo pid,pcpu,size > $tmp_file
# Get current time # Checking current time
ctime=$(date +%s) ctime=$(date +%s)
# Web # Checking WEB system
service=$WEB_SYSTEM if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $WEB_SYSTEM
if [ "$service" == 'apache' ]; then data="NAME='$WEB_SYSTEM' SYSTEM='web server' STATE='$state' CPU='$cpu'"
service='httpd' data="$data MEM='$mem' RTIME='$rtime'"
fi
get_srv_state $service
str="NAME='$service' SYSTEM='web server' STATE='$state' CPU='$cpu'"
str="$str MEM='$mem' RTIME='$rtime'"
fi fi
# Backend # Checking WEB Backend
service=$WEB_BACKEND if [ ! -z "$WEB_BACKEND" ] && [ "$WEB_BACKEND" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $WEB_BACKEND
get_srv_state $service data="$data\nNAME='$WEB_BACKEND' SYSTEM='backend server' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='backend server' STATE='$state' CPU='$cpu'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str MEM='$mem' RTIME='$rtime'"
fi fi
# Proxy # Checking WEB Proxy
service=$PROXY_SYSTEM if [ ! -z "$PROXY_SYSTEM" ] && [ "$PROXY_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $PROXY_SYSTEM
get_srv_state $service data="$data\nNAME='$PROXY_SYSTEM' SYSTEM='reverse proxy' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='reverse proxy' STATE='$state' CPU='$cpu'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str MEM='$mem' RTIME='$rtime'"
fi fi
# Checking DNS system
# DNS if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'remote' ]; then
service=$DNS_SYSTEM if [ "$DNS_SYSTEM" == 'bind' ] || [ "$DNS_SYSTEM" == 'bind9' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
if [ "$service" == 'bind' ] || [ "$service" == 'bind9' ]; then
proc_name='named' proc_name='named'
fi fi
get_srv_state $service $proc_name get_srv_state $DNS_SYSTEM $proc_name
str="$str\nNAME='$service' SYSTEM='dns server' STATE='$state' CPU='$cpu'" data="$data\nNAME='$DNS_SYSTEM' SYSTEM='dns server' STATE='$state'"
str="$str MEM='$mem' RTIME='$rtime'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
fi fi
# MAIL # Checking MAIL system
service=$MAIL_SYSTEM if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $MAIL_SYSTEM
get_srv_state $service data="$data\nNAME='$MAIL_SYSTEM' SYSTEM='mail server' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='mail server' STATE='$state' CPU='$cpu'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str MEM='$mem' RTIME='$rtime'"
fi fi
# IMAP # Checking MAIL IMAP
service=$IMAP_SYSTEM if [ ! -z "$IMAP_SYSTEM" ] && [ "$IMAP_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $IMAP_SYSTEM
get_srv_state $service data="$data\nNAME='$IMAP_SYSTEM' SYSTEM='pop/imap server' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='pop/imap server' STATE='$state'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
fi fi
# ANTIVIRUS # Checking MAIL ANTIVIRUS
service=$ANTIVIRUS_SYSTEM if [ ! -z "$ANTIVIRUS_SYSTEM" ] && [ "$ANTIVIRUS_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/redhat-release" ]; then
if [ "$ANTIVIRUS_SYSTEM" = 'clamav' ];then if [ "$ANTIVIRUS_SYSTEM" == 'clamav' ];then
service='clamd' ANTIVIRUS_SYSTEM='clamd'
fi fi
get_srv_state $service get_srv_state $ANTIVIRUS_SYSTEM
else else
if [ "$ANTIVIRUS_SYSTEM" = 'clamav-daemon' ];then if [ "$ANTIVIRUS_SYSTEM" == 'clamav-daemon' ];then
clam_proc_name='clamd' proc_name='clamd'
fi fi
get_srv_state $service $clam_proc_name get_srv_state $ANTIVIRUS_SYSTEM $proc_name
fi fi
str="$str\nNAME='$service' SYSTEM='email antivirus' STATE='$state'" data="$data\nNAME='$ANTIVIRUS_SYSTEM' SYSTEM='email antivirus'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'" data="$data STATE='$state' CPU='$cpu' MEM='$mem' RTIME='$rtime'"
proc_name=''
fi fi
# ANTISPAM # Checking MAIL ANTISPAM
service=$ANTISPAM_SYSTEM if [ ! -z "$ANTISPAM_SYSTEM" ] && [ "$ANTISPAM_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $ANTISPAM_SYSTEM spamd
get_srv_state $service spamd data="$data\nNAME='$ANTISPAM_SYSTEM' SYSTEM='email antispam'"
str="$str\nNAME='$service' SYSTEM='email antispam' STATE='$state'" data="$data STATE='$state' CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
fi fi
# DB # Checking DB system
service=$DB_SYSTEM if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
for db in ${DB_SYSTEM//,/ }; do for db in ${DB_SYSTEM//,/ }; do
db_proc_name='' proc_name=''
service="$db" service="$db"
if [ "$service" = 'mysql' ]; then if [ "$service" = 'mysql' ]; then
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/redhat-release" ]; then
service='mysqld' service='mysqld'
db_proc_name='mysqld' proc_name='mysqld'
if [ -e "/usr/lib/systemd/system/mariadb.service" ]; then if [ -e "/usr/lib/systemd/system/mariadb.service" ]; then
service='mariadb' service='mariadb'
fi fi
@ -183,39 +230,37 @@ if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
fi fi
if [ "$service" == 'pgsql' ]; then if [ "$service" == 'pgsql' ]; then
service='postgresql' service='postgresql'
db_proc_name='postmaster' proc_name='postmaster'
if [ ! -e "/etc/redhat-release" ]; then if [ ! -e "/etc/redhat-release" ]; then
db_proc_name='postgres' proc_name='postgres'
fi fi
if [ ! -e '/etc/init.d/postgresql' ]; then if [ ! -e '/etc/init.d/postgresql' ]; then
db_proc_name='postgres' proc_name='postgres'
fi fi
fi fi
get_srv_state $service $db_proc_name get_srv_state $service $proc_name
str="$str\nNAME='$service' SYSTEM='database server' STATE='$state'" data="$data\nNAME='$service' SYSTEM='database server' STATE='$state'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
proc_name=''
done done
fi fi
# FTP # Checking FTP system
service=$FTP_SYSTEM if [ ! -z "$FTP_SYSTEM" ] && [ "$FTP_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $FTP_SYSTEM
get_srv_state $service data="$data\nNAME='$FTP_SYSTEM' SYSTEM='ftp server' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='ftp server' STATE='$state' CPU='$cpu'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str MEM='$mem' RTIME='$rtime'"
fi fi
# CRON # Checking CRON system
service=$CRON_SYSTEM if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $CRON_SYSTEM
get_srv_state $service data="$data\nNAME='$CRON_SYSTEM' SYSTEM='job scheduler' STATE='$state'"
str="$str\nNAME='$service' SYSTEM='job scheduler' STATE='$state'" data="$data CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
fi fi
# FIREWALL # Checking FIREWALL system
service=$FIREWALL_SYSTEM if [ ! -z "$FIREWALL_SYSTEM" ] && [ "$FIREWALL_SYSTEM" != 'remote' ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
state="stopped" state="stopped"
/sbin/iptables -L vesta >/dev/null 2>&1 /sbin/iptables -L vesta >/dev/null 2>&1
if [ "$?" -eq 0 ]; then if [ "$?" -eq 0 ]; then
@ -225,32 +270,21 @@ if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then
str="$str STATE='$state' CPU='0' MEM='0' RTIME='0'" str="$str STATE='$state' CPU='0' MEM='0' RTIME='0'"
fi fi
# Fail2ban # Checking FIREWALL Fail2ban extention
service=$FIREWALL_EXTENSION if [ ! -z "$FIREWALL_EXTENSION" ]; then
if [ ! -z "$service" ] && [ "$service" != 'remote' ]; then get_srv_state $FIREWALL_EXTENSION fail2ban-server script
get_srv_state $service fail2ban-server script data="$data\nNAME='$FIREWALL_EXTENSION' SYSTEM='brute-force monitor'"
str="$str\nNAME='$service' SYSTEM='brute-force monitor' STATE='$state'" data="$data STATE='$state' CPU='$cpu' MEM='$mem' RTIME='$rtime'"
str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
fi fi
# Listing data
# Defining config
echo -e "$str" > $tmp_file
conf=$tmp_file
# Defining fileds to select
fields="\$NAME \$SYSTEM \$STATE \$CPU \$MEM \$RTIME"
# Listing services
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$NAME $STATE $CPU $MEM $RTIME' csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac
rm -f $tmp_file
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #

View file

@ -15,14 +15,12 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_sh() { json_list() {
shells=$(grep -v '#' /etc/shells)
sh_counter=$(echo "$shells" | wc -l) sh_counter=$(echo "$shells" | wc -l)
i=1 i=1
echo '[' echo '['
for shell in $shells; do for shell in $shells; do
shell=$(basename $shell)
if [ "$i" -lt "$sh_counter" ]; then if [ "$i" -lt "$sh_counter" ]; then
echo -e "\t\"$shell\"," echo -e "\t\"$shell\","
else else
@ -33,15 +31,26 @@ json_list_sh() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_sh() { shell_list() {
shells=$(grep -v '#' /etc/shells) echo "SHELL"
if [ -z "$nohead" ]; then echo "-----"
echo "SHELLS" for shell in $shells; do
echo "----------" echo "$shell"
fi done
}
# PLAIN list function
plain_list() {
for shell in $shells; do
echo "$shell"
done
}
# CSV list function
csv_list() {
echo "SHELL"
for shell in $shells; do for shell in $shells; do
shell=$(basename $shell)
echo "$shell" echo "$shell"
done done
} }
@ -51,12 +60,15 @@ shell_list_sh() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Defining system shells
shells=$(grep -v '#' /etc/shells |awk -F '/' '{print $NF}' |sort -u)
# Listing data
case $format in case $format in
json) json_list_sh ;; json) json_list ;;
plain) nohead=1; shell_list_sh ;; plain) plain_list ;;
shell) shell_list_sh ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list ;;
esac esac

View file

@ -16,32 +16,44 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_users() { json_list() {
users=$(grep @ /etc/passwd|cut -f 1 -d :) objects=$(echo "$users" |wc -l)
int_counter=$(echo "$users" | wc -l)
i=1 i=1
echo '[' echo '['
for user in $users; do while read user; do
if [ "$i" -lt "$int_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$user\"," echo -e "\t\"$user\","
else else
echo -e "\t\"$user\"" echo -e "\t\"$user\""
fi fi
(( ++i)) (( ++i))
done done < <(grep @ /etc/passwd |cut -f 1 -d :)
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_users() { shell_list() {
if [ -z "$nohead" ]; then echo "USER"
echo "USERS" echo "----"
echo "----------" while read user; do
fi
for user in $(grep @ /etc/passwd|cut -f 1 -d :); do
echo "$user" echo "$user"
done done < <(grep @ /etc/passwd |cut -f 1 -d :)
}
# PLAIN list function
plain_list() {
while read user; do
echo "$user"
done < <(grep @ /etc/passwd |cut -f 1 -d :)
}
# CSV list function
csv_list() {
echo "USER"
while read user; do
echo "$user"
done < <(grep @ /etc/passwd |cut -f 1 -d :)
} }
@ -49,12 +61,12 @@ shell_list_users() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Listing data
case $format in case $format in
json) json_list_users ;; json) json_list ;;
plain) nohead=1; shell_list_users ;; plain) plain_list ;;
shell) shell_list_users ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list ;;
esac esac

View file

@ -16,8 +16,8 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_autoupdate() { json_list() {
echo '[' echo '['
if [ -z "$check_cron" ]; then if [ -z "$check_cron" ]; then
echo -e "\t\"Disabled\"," echo -e "\t\"Disabled\","
@ -27,12 +27,28 @@ json_list_autoupdate() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_autoupdate() { shell_list() {
if [ -z "$nohead" ]; then echo -n "AUTOUPDATE: "
echo "AUTOUPDATE" if [ -z "$check_cron" ]; then
echo "----------" echo "Disabled"
else
echo "Enabled"
fi fi
}
# PLAIN list function
plain_list() {
if [ -z "$check_cron" ]; then
echo "Disabled"
else
echo "Enabled"
fi
}
# CSV list function
csv_list() {
echo "AUTOUPDATE"
if [ -z "$check_cron" ]; then if [ -z "$check_cron" ]; then
echo "Disabled" echo "Disabled"
else else
@ -48,15 +64,16 @@ shell_list_autoupdate() {
# Check cron tab # Check cron tab
check_cron=$(grep 'v-update-sys-vesta-all' $USER_DATA/cron.conf) check_cron=$(grep 'v-update-sys-vesta-all' $USER_DATA/cron.conf)
# Listing domains # Listing data
case $format in case $format in
json) json_list_autoupdate ;; json) json_list ;;
plain) nohead=1; shell_list_autoupdate ;; plain) plain_list ;;
shell) shell_list_autoupdate ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list;;
esac esac
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #
#----------------------------------------------------------# #----------------------------------------------------------#

View file

@ -14,22 +14,55 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
fields="\$NAME \$VERSION \$RELEASE \$ARCH \$UPDATED \$DESCR \$TIME \$DATE"
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(echo -e "$data" |grep NAME |wc -l)
echo "{"
for str in $(echo -e "$data"); do
eval $str
echo -n ' "'$NAME'": {
"VERSION": "'$VERSION'",
"RELEASE": "'$RELEASE'",
"ARCH": "'$ARCH'",
"UPDATED": "'$UPDATED'",
"DESCR": "'$DESCR'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "PKG VER REL ARCH UPDT DATE"
echo "--- --- --- ---- ---- ----"
for str in $(echo -e "$data"); do
eval $str
echo "$NAME $VERSION $RELEASE $ARCH $UPDATED $DATE"
done
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Remove upd_flag # Checking official latest version
rm -f $VESTA/web/.update latest=$(wget -q -T 1 -t 1 http://c.vestacp.com/latest.txt -O -)
# Create tmp file # Checking installed vesta version
tmp_file=$(mktemp)
# Check latest version
wget -q -T 1 -t 1 http://c.vestacp.com/latest.txt -O $tmp_file
# Check vesta version
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/redhat-release" ]; then
rpm_format="VERSION='%{VERSION}'" rpm_format="VERSION='%{VERSION}'"
rpm_format="$rpm_format RELEASE='%{RELEASE}'" rpm_format="$rpm_format RELEASE='%{RELEASE}'"
@ -47,16 +80,14 @@ else
DATE=$(date -d @$pkg_date +"%F") DATE=$(date -d @$pkg_date +"%F")
TIME=$(date -d @$pkg_date +"%T") TIME=$(date -d @$pkg_date +"%T")
fi fi
latest=$(grep vesta $tmp_file)
UPDATED='yes' UPDATED='yes'
if [ ! -z "$latest" ] && [ "$latest" != "vesta-$VERSION-$RELEASE" ]; then if [ ! -z "$latest" ] && [ "$latest" != "vesta-$VERSION-$RELEASE" ]; then
UPDATED='no' UPDATED='no'
set_upd_flag='yes'
fi fi
str="NAME='vesta' VERSION='$VERSION' RELEASE='$RELEASE' ARCH='$ARCH'" data="NAME='vesta' VERSION='$VERSION' RELEASE='$RELEASE' ARCH='$ARCH'"
str="$str UPDATED='$UPDATED' DESCR='core package' TIME='$TIME' DATE='$DATE'" data="$data UPDATED='$UPDATED' DESCR='core package' TIME='$TIME' DATE='$DATE'"
# Check vesta-php version # Checking installed vesta-php version
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/redhat-release" ]; then
eval $(rpm --queryformat="$rpm_format" -q vesta-php) eval $(rpm --queryformat="$rpm_format" -q vesta-php)
DATE=$(date -d @$UTIME +%F) DATE=$(date -d @$UTIME +%F)
@ -70,17 +101,11 @@ else
DATE=$(date -d @$pkg_date +"%F") DATE=$(date -d @$pkg_date +"%F")
TIME=$(date -d @$pkg_date +"%T") TIME=$(date -d @$pkg_date +"%T")
fi fi
latest=$(grep php $tmp_file) data="$data\nNAME='vesta-php' VERSION='$VERSION' RELEASE='$RELEASE'"
UPDATED='yes' data="$data ARCH='$ARCH' UPDATED='$UPDATED' DESCR='php interpreter'"
if [ ! -z "$latest" ] && [ "$latest" != "php-$VERSION-$RELEASE" ]; then data="$data TIME='$TIME' DATE='$DATE'"
UPDATED='no'
set_upd_flag='yes'
fi
str="$str\nNAME='vesta-php' VERSION='$VERSION' RELEASE='$RELEASE' ARCH='$ARCH'"
str="$str UPDATED='$UPDATED' DESCR='php interpreter' TIME='$TIME'"
str="$str DATE='$DATE'"
# Check vesta-nginx version # Checking installed vesta-nginx version
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/redhat-release" ]; then
eval $(rpm --queryformat="$rpm_format" -q vesta-nginx) eval $(rpm --queryformat="$rpm_format" -q vesta-nginx)
DATE=$(date -d @$UTIME +%F) DATE=$(date -d @$UTIME +%F)
@ -94,39 +119,19 @@ else
DATE=$(date -d @$pkg_date +"%F") DATE=$(date -d @$pkg_date +"%F")
TIME=$(date -d @$pkg_date +"%T") TIME=$(date -d @$pkg_date +"%T")
fi fi
latest=$(grep nginx $tmp_file) data="$data\nNAME='vesta-nginx' VERSION='$VERSION' RELEASE='$RELEASE'"
UPDATED='yes' data="$data ARCH='$ARCH' UPDATED='$UPDATED' DESCR='internal web server'"
if [ ! -z "$latest" ] && [ "$latest" != "nginx-$VERSION-$RELEASE" ]; then data="$data TIME='$TIME' DATE='$DATE'"
UPDATED='no'
set_upd_flag='yes'
fi
str="$str\nNAME='vesta-nginx' VERSION='$VERSION' RELEASE='$RELEASE'"
str="$str ARCH='$ARCH' UPDATED='$UPDATED' DESCR='internal web server'"
str="$str TIME='$TIME' DATE='$DATE'"
# Create flag if updates avaiable
if [ "$set_upd_flag" == 'yes' ]; then
touch $VESTA/web/.update
chmod a+r $VESTA/web/.update
fi
# Defining config # Listing data
echo -e "$str" > $tmp_file
conf=$tmp_file
# Defining fileds to select
fields="\$NAME \$VERSION \$RELEASE \$ARCH \$UPDATED \$DESCR \$TIME \$DATE"
# Listing services
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$NAME $VERSION $RELEASE $ARCH $UPDATED $TIME $DATE' csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac
rm -f $tmp_file
#----------------------------------------------------------# #----------------------------------------------------------#
# Vesta # # Vesta #

View file

@ -1,57 +1,151 @@
#!/bin/bash #!/bin/bash
# info: list system user # info: list user parameters
# options: USER [FORMAT] # options: USER [FORMAT]
# #
# The function for obtaining the list of all user's parameters. # The function to obtain user parameters.
#----------------------------------------------------------# #----------------------------------------------------------#
# Variable&Function # # Variable&Function #
#----------------------------------------------------------# #----------------------------------------------------------#
# Argument definition
user=$1
format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Argument definition # JSON list function
user=$1 json_list() {
USER="$user" echo '{
format=${2-shell} "'$USER'": {
"FNAME": "'$FNAME'",
# Json function "LNAME": "'$LNAME'",
json_list_user() { "PACKAGE": "'$PACKAGE'",
i=1 "WEB_TEMPLATE": "'$WEB_TEMPLATE'",
fileds_count=$(echo "$fields" | wc -w) "BACKEND_TEMPLATE": "'$BACKEND_TEMPLATE'",
source $VESTA/data/users/$user/user.conf "PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
echo '{' "DNS_TEMPLATE": "'$DNS_TEMPLATE'",
for field in $fields; do "WEB_DOMAINS": "'$WEB_DOMAINS'",
eval value=$field "WEB_ALIASES": "'$WEB_ALIASES'",
if [ "$i" -eq 1 ]; then "DNS_DOMAINS": "'$DNS_DOMAINS'",
echo -e "\t\"$value\": {" "DNS_RECORDS": "'$DNS_RECORDS'",
else "MAIL_DOMAINS": "'$MAIL_DOMAINS'",
if [ "$fileds_count" -eq "$i" ]; then "MAIL_ACCOUNTS": "'$MAIL_ACCOUNTS'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "DATABASES": "'$DATABASES'",
else "CRON_JOBS": "'$CRON_JOBS'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "DISK_QUOTA": "'$DISK_QUOTA'",
fi "BANDWIDTH": "'$BANDWIDTH'",
fi "HOME": "'$HOME'",
(( ++i)) "NS": "'$NS'",
done "SHELL": "'$SHELL'",
if [ -n "$value" ]; then "BACKUPS": "'$BACKUPS'",
echo -e ' }' "CONTACT": "'$CONTACT'",
fi "CRON_REPORTS": "'$CRON_REPORTS'",
echo -e "}" "RKEY": "'$RKEY'",
"SUSPENDED": "'$SUSPENDED'",
"SUSPENDED_USERS": "'$SUSPENDED_USERS'",
"SUSPENDED_WEB": "'$SUSPENDED_WEB'",
"SUSPENDED_DNS": "'$SUSPENDED_DNS'",
"SUSPENDED_MAIL": "'$SUSPENDED_MAIL'",
"SUSPENDED_DB": "'$SUSPENDED_DB'",
"SUSPENDED_CRON": "'$SUSPENDED_CRON'",
"IP_AVAIL": "'$IP_AVAIL'",
"IP_OWNED": "'$IP_OWNED'",
"U_USERS": "'$U_USERS'",
"U_DISK": "'$U_DISK'",
"U_DISK_DIRS": "'$U_DISK_DIRS'",
"U_DISK_WEB": "'$U_DISK_WEB'",
"U_DISK_MAIL": "'$U_DISK_MAIL'",
"U_DISK_DB": "'$U_DISK_DB'",
"U_BANDWIDTH": "'$U_BANDWIDTH'",
"U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
"U_WEB_SSL": "'$U_WEB_SSL'",
"U_WEB_ALIASES": "'$U_WEB_ALIASES'",
"U_DNS_DOMAINS": "'$U_DNS_DOMAINS'",
"U_DNS_RECORDS": "'$U_DNS_RECORDS'",
"U_MAIL_DOMAINS": "'$U_MAIL_DOMAINS'",
"U_MAIL_DKIM": "'$U_MAIL_DKIM'",
"U_MAIL_ACCOUNTS": "'$U_MAIL_ACCOUNTS'",
"U_DATABASES": "'$U_DATABASES'",
"U_CRON_JOBS": "'$U_CRON_JOBS'",
"U_BACKUPS": "'$U_BACKUPS'",
"LANGUAGE": "'$LANGUAGE'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}
}'
} }
# Shell function # SHELL list function
shell_list_user() { shell_list() {
source $VESTA/data/users/$user/user.conf echo "USERNAME: $USER"
for field in $fields; do echo "FULL NAME: $FNAME $LNAME"
eval key="$field" echo "EMAIL: $CONTACT"
if [ -z "$key" ]; then echo "LANGUAGE: $LANGUAGE"
key='NULL' echo "SUSPENDED: $SUSPENDED"
fi echo "PACKAGE: $PACKAGE"
echo "${field//$/}: $key " echo "SHELL: $SHELL"
done echo "WEB DOMAINS: $U_WEB_DOMAINS/$WEB_DOMAINS"
echo "WEB ALIASES: $U_WEB_ALIASES/$WEB_ALIASES"
echo "DNS DOMAINS: $U_DNS_DOMAINS/$DNS_DOMAINS"
echo "DNS RECORDS: $U_DNS_RECORDS/$DNS_RECORDS"
echo "MAIL DOMAINS: $U_MAIL_DOMAINS/$MAIL_DOMAINS"
echo "MAIL ACCOUNTS: $U_MAIL_ACCOUNTS/$MAIL_ACCOUNTS"
echo "BACKUPS: $U_BACKUPS/$BACKUPS"
echo "DATABASES: $U_DATABASES/$DATABASES"
echo "CRON_JOBS: $U_CRON_JOBS/$CRON_JOBS"
echo "DISK: $U_DISK/$DISK_QUOTA"
echo "BANDWIDTH: $U_BANDWIDTH/$BANDWIDTH"
echo "IP ADDRESSES $IP_AVAIL/$IP_OWNED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$USER\t$FNAME\t$LNAME\t$PACKAGE\t$WEB_TEMPLATE\t"
echo -ne "$BACKEND_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
echo -ne "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$HOME\t$SHELL\t$BACKUPS\t"
echo -ne "$CONTACT\t$CRON_REPORTS\t$RKEY\t$SUSPENDED\t"
echo -ne "$SUSPENDED_USERS\t$SUSPENDED_WEB\t$SUSPENDED_DNS\t"
echo -ne "$SUSPENDED_MAIL\t$SUSPENDED_DB\t$SUSPENDED_CRON\t"
echo -ne "$IP_AVAIL\t$IP_OWNED\t$U_USERS\t$U_DISK\t$U_DISK_DIRS\t"
echo -ne "$U_DISK_WEB\t$U_DISK_MAIL\t$U_DISK_DB\t$U_BANDWIDTH\t"
echo -ne "$U_WEB_DOMAINS\t$U_WEB_SSL\t$U_WEB_ALIASES\t"
echo -ne "$U_DNS_DOMAINS\t$U_DNS_RECORDS\t$U_MAIL_DOMAINS\t"
echo -ne "$U_MAIL_DKIM\t$U_MAIL_ACCOUNTS\t$U_DATABASES\t"
echo -e "'$U_CRON_JOBS\t$U_BACKUPS\t$LANGUAGE\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "USER,FNAME,LNAME,PACKAGE,WEB_TEMPLATE,BACKEND_TEMPLATE,"
echo -n "PROXY_TEMPLATE,DNS_TEMPLATE,WEB_DOMAINS,WEB_ALIASES,"
echo -n "DNS_DOMAINS,DNS_RECORDS,MAIL_DOMAINS,MAIL_ACCOUNTS,"
echo -n "DATABASES,CRON_JOBS,DISK_QUOTA,BANDWIDTH,NS,HOME,SHELL,"
echo -n "BACKUPS,CONTACT,CRON_REPORTS,RKEY,SUSPENDED,SUSPENDED_USERS,"
echo -n "SUSPENDED_WEB,SUSPENDED_DNS,SUSPENDED_MAIL,SUSPENDED_DB,"
echo -n "SUSPENDED_CRON,IP_AVAIL,IP_OWNED,U_USERS,U_DISK,U_DISK_DIRS,"
echo -n "U_DISK_WEB,U_DISK_MAIL,U_DISK_DB,U_BANDWIDTH,U_WEB_DOMAINS,"
echo -n "U_WEB_SSL,U_WEB_ALIASES,U_DNS_DOMAINS,U_DNS_RECORDS,"
echo -n "U_MAIL_DOMAINS,U_MAIL_DKIM,U_MAIL_ACCOUNTS,U_DATABASES"
echo "U_CRON_JOBS,U_BACKUPS,LANGUAGE,TIME,DATE"
echo -n "$USER,\"$FNAME\",\"$LNAME\",$PACKAGE,$WEB_TEMPLATE,"
echo -n "$BACKEND_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,$WEB_DOMAINS,"
echo -n "$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,$MAIL_DOMAINS,"
echo -n "$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,$DISK_QUOTA,$BANDWIDTH,"
echo -n "\"$NS\",$HOME,$SHELL,$BACKUPS,$CONTACT,$CRON_REPORTS,\"$RKEY\","
echo -n "$SUSPENDED,$SUSPENDED_USERS,$SUSPENDED_WEB,$SUSPENDED_DNS,"
echo -n "$SUSPENDED_MAIL,$SUSPENDED_DB,$SUSPENDED_CRON,$IP_AVAIL,"
echo -n "$IP_OWNED,$U_USERS,$U_DISK,$U_DISK_DIRS,$U_DISK_WEB,"
echo -n "$U_DISK_MAIL,$U_DISK_DB,$U_BANDWIDTH,$U_WEB_DOMAINS,$U_WEB_SSL,"
echo -n "$U_WEB_ALIASES,$U_DNS_DOMAINS,$U_DNS_RECORDS,$U_MAIL_DOMAINS,"
echo -n "$U_MAIL_DKIM,$U_MAIL_ACCOUNTS,$U_DATABASES,$U_CRON_JOBS,"
echo "$U_BACKUPS,$LANGUAGE,$TIME,$DATE"
} }
@ -60,7 +154,6 @@ shell_list_user() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -69,26 +162,16 @@ is_object_valid 'user' 'USER' "$user"
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Defining config
conf=$USER_DATA/user.conf USER=$user
HOME=$HOMEDIR/$user HOME=$HOMEDIR/$user
source $VESTA/data/users/$user/user.conf
# Defining fileds to select # Listing data
fields='$USER $FNAME $LNAME $PACKAGE $WEB_TEMPLATE $BACKEND_TEMPLATE
$PROXY_TEMPLATE $DNS_TEMPLATE $WEB_DOMAINS $WEB_ALIASES $DNS_DOMAINS
$DNS_RECORDS $MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES $CRON_JOBS
$DISK_QUOTA $BANDWIDTH $NS $SHELL $BACKUPS $CONTACT $CRON_REPORTS
$RKEY $SUSPENDED $SUSPENDED_USERS $SUSPENDED_WEB $SUSPENDED_DNS
$SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_AVAIL $IP_OWNED
$U_USERS $U_DISK $U_DISK_DIRS $U_DISK_WEB $U_DISK_MAIL $U_DISK_DB
$U_BANDWIDTH $U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS
$U_DNS_RECORDS $U_MAIL_DOMAINS $U_MAIL_DKIM $U_MAIL_ACCOUNTS $U_DATABASES
$U_CRON_JOBS $U_BACKUPS $LANGUAGE $HOME $NOTIFICATIONS $TIME $DATE'
# Listing user
case $format in case $format in
json) json_list_user ;; json) json_list ;;
plain) nohead=1; shell_list_user ;; plain) plain_list ;;
shell) shell_list_user | column -t ;; csv) csv_list ;;
shell) shell_list ;;
esac esac

View file

@ -18,57 +18,55 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function fields="\$BACKUP \$TYPE \$SIZE \$WEB \$DNS \$DB \$MAIL \$CRON \$UDIR"
json_list_backup() { fields="$fields \$RUNTIME \$TIME \$DATE"
i=1
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "BACKUP='$backup'" $conf)
# Print top bracket # JSON list function
json_list() {
echo '{' echo '{'
echo ' "'$BACKUP'": {
# Assing key=value "TYPE": "'$TYPE'",
eval $line "SIZE": "'$SIZE'",
"WEB": "'$WEB'",
# Starting output loop "DNS": "'$DNS'",
for field in $fields; do "MAIL": "'$MAIL'",
# Parsing key=value "DB": "'$DB'",
eval value=$field "CRON": "'$CRON'",
"UDIR": "'$UDIR'",
# Checking first field "RUNTIME": "'$RUNTIME'",
if [ "$i" -eq 1 ]; then "TIME": "'$TIME'",
echo -e "\t\"$value\": {" "DATE": "'$DATE'"
else }'
if [ "$fileds_count" -eq "$i" ]; then echo '}'
echo -e "\t\t\"${field//$/}\": \"$value\""
else
echo -e "\t\t\"${field//$/}\": \"$value\","
fi
fi
# Updating iterator
(( ++i))
done
# If there was any output
if [ -n "$value" ]; then
echo -e ' }'
fi
# Printing bottom json bracket
echo -e "}"
} }
# Shell function # SHELL list function
shell_list_backup() { shell_list() {
line=$(grep "BACKUP='$backup'" $conf) echo "BACKUP: $BACKUP"
echo "TYPE: $TYPE"
echo "SIZE: $SIZE mb"
echo "RUNTIME: $RUNTIME min"
echo "WEB: ${WEB//,/ }"
echo "DNS: ${DNS//,/ }"
echo "MAIL: ${MAIL//,/ }"
echo "DB: ${DB//,/ }"
echo "CRON: $CRON"
echo "UDIR: ${UDIR//,/ }"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# Parsing key=value # PLAIN list function
eval $line plain_list() {
echo -ne "$BACKUP\t$TYPE\t$SIZE\t$WEB\t$DNS\t$MAIL\t$DB\t$CRON\t"
echo -e "$UDIR\t$RUNTIME\t$TIME\t$DATE"
}
# Print result line # CSV list function
for field in $fields; do csv_list() {
eval key="$field" echo "BACKUP,TYPE,SIZE,WEB,DNS,MAIL,DB,CRON,UDIR,RUNTIME,TIME,DATE"
echo "${field//$/}: $key " echo -n "$BACKUP,$TYPE,$SIZE,\"$WEB\",\"$DNS\",\"$MAIL\",\"$DB\","
done echo "\"$CRON\",\"$UDIR\",$RUNTIME,$TIME,$DATE"
} }
@ -85,18 +83,15 @@ is_object_valid 'backup' 'BACKUP' "$backup"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config and fields to select # Parsing backup config
conf=$USER_DATA/backup.conf eval $(grep "BACKUP='$backup'" $USER_DATA/backup.conf)
fields="\$BACKUP \$TYPE \$SIZE \$WEB \$DNS \$DB \$MAIL \$CRON \$UDIR" # Listing data
fields="$fields \$RUNTIME \$TIME \$DATE"
# Listing backup
case $format in case $format in
json) json_list_backup ;; json) json_list ;;
plain) nohead=1; shell_list_backup ;; plain) plain_list ;;
shell) shell_list_backup |column -t ;; csv) csv_list ;;
*) check_args '2' '0' 'USER BACKUP [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -12,52 +12,134 @@
# Argument definition # Argument definition
user=$1 user=$1
format=${2-shell} format=${2-shell}
USER=''
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_backup_xld() { json_list() {
set -f
echo '{'
fields_count=$(echo "$fields" | wc -w)
i=1 i=1
source $USER_DATA/backup-excludes.conf echo '{'
for field in $fields; do echo ' "WEB": {'
eval value=$field objects=$(echo "${WEB//,/ }" |wc -w)
for object in $(echo "${WEB//,/ }"); do
j=1 j=1
echo -e "\t\"${field//$/}\": {" object_keys=$(echo ${object//:/ } |wc -w)
for exlcude in ${value//,/ }; do for key in $(echo "${object/:/ }"); do
exlcude_obj=$(echo $exlcude |cut -f 1 -d:) if [ "$j" -eq 1 ]; then
exclude_param=$(echo $exlcude |sed -e "s/$exlcude_obj://") echo -n " \"$key\": "
if [ "$exlcude_obj" = "$exclude_param" ]; then if [ "$object_keys" -eq 1 ]; then
exclude_param='' echo -n '""'
fi fi
if [ $j -lt "$(echo ${value//,/ } |wc -w)" ]; then
echo -e "\t\t\"$exlcude_obj\": \"$exclude_param\","
else else
echo -e "\t\t\"$exlcude_obj\": \"$exclude_param\"" echo -n "\"${key//:/,}\""
fi fi
(( ++j)) ((j++))
done done
if [ $i -lt $fields_count ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t}," echo ','
else else
echo -e "\t}" echo
fi fi
(( ++i)) ((i++))
done
echo ' },'
i=1
echo ' "MAIL": {'
objects=$(echo "${MAIL//,/ }" |wc -w)
for object in $(echo "${MAIL//,/ }"); do
j=1
object_keys=$(echo ${object//:/ } |wc -w)
for key in $(echo "${object/:/ }"); do
if [ "$j" -eq 1 ]; then
echo -n " \"$key\": "
if [ "$object_keys" -eq 1 ]; then
echo -n '""'
fi
else
echo -n "\"${key//:/,}\""
fi
((j++))
done
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done
echo ' },'
i=1
echo ' "DB": {'
objects=$(echo "${DB//,/ }" |wc -w)
for object in $(echo "${DB//,/ }"); do
j=1
object_keys=$(echo ${object//:/ } |wc -w)
for key in $(echo "${object/:/ }"); do
if [ "$j" -eq 1 ]; then
echo -n " \"$key\": "
if [ "$object_keys" -eq 1 ]; then
echo -n '""'
fi
else
echo -n "\"${key//:/,}\""
fi
((j++))
done
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done
echo ' },'
i=1
echo ' "USER": {'
objects=$(echo "${USER//,/ }" |wc -w)
for object in $(echo "${USER//,/ }"); do
j=1
object_keys=$(echo ${object//:/ } |wc -w)
for key in $(echo "${object/:/ }"); do
if [ "$j" -eq 1 ]; then
echo -n " \"$key\": "
if [ "$object_keys" -eq 1 ]; then
echo -n '""'
fi
else
echo -n "\"${key//:/,}\""
fi
((j++))
done
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done done
echo ' }' echo ' }'
echo '}'
} }
# Shell function # SHELL list function
shell_list_backup_xld() { shell_list() {
source $USER_DATA/backup-excludes.conf echo "WEB: $WEB"
for field in $fields; do echo "MAIL: $MAIL"
eval value=$field echo "DB: $DB"
echo -e "${field//$/}: $value" echo "USER DIRS: $USER"
done }
# PLAIN list function
plain_list() {
echo "$WEB\t$MAIL\t$DB\t$USER"
}
# CSV list function
csv_list() {
echo "WEB,MAIL,DB,USER"
echo "\"$WEB\",\"$MAIL\",\"$DB\",\"$USER\""
} }
@ -66,7 +148,7 @@ shell_list_backup_xld() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -74,24 +156,23 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Flush variables # Flushing variables
WEB='' WEB=''
DNS=''
MAIL='' MAIL=''
DB='' DB=''
CRON=''
USER='' USER=''
# Defining fileds to select # Parsing backup exclusion list
touch $USER_DATA/backup-excludes.conf if [ -e "$USER_DATA/backup-excludes.conf" ]; then
fields="\$WEB \$DNS \$MAIL \$DB \$CRON \$USER" source $USER_DATA/backup-excludes.conf
fi
# Listing backup exclusions # Listing data
case $format in case $format in
json) json_list_backup_xld ;; json) json_list ;;
plain) nohead=1; shell_list_backup_xld ;; plain) plain_list ;;
shell) shell_list_backup_xld;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,12 +16,76 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep BACKUP $USER_DATA/backup.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$BACKUP'": {
"TYPE": "'$TYPE'",
"SIZE": "'$SIZE'",
"WEB": "'$WEB'",
"DNS": "'$DNS'",
"MAIL": "'$MAIL'",
"DB": "'$DB'",
"CRON": "'$CRON'",
"UDIR": "'$UDIR'",
"RUNTIME": "'$RUNTIME'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/backup.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "BACKUP TYPE SIZE TIME DATE"
echo "------ ---- --- ---- ----"
while read str; do
eval $str
echo "$BACKUP $TYPE $SIZE $RUNTIME $DATE"
done < <(cat $USER_DATA/backup.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$BACKUP\t$TYPE\t$SIZE\t$WEB\t$DNS\t$MAIL\t$CRON\t$UDIR\t"
echo -e "$RUNTIME\t$TIME\t$DATE"
done < <(cat $USER_DATA/backup.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "BACKUP,TYPE,SIZE,WEB,DNS,MAIL,CRON,UDIR,RUNTIME,TIME,DATE"
while read str; do
eval $str
echo -n "$BACKUP,$TYPE,$SIZE,\"$WEB\",\"$DNS\",\"$MAIL\",\"$CRON\","
echo "\"$UDIR\",$RUNTIME,$TIME,$DATE"
done < <(cat $USER_DATA/backup.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -35,17 +99,12 @@ if [ ! -e "$conf" ]; then
touch $conf touch $conf
fi fi
# Defining fileds to select # Listing data
fields="\$BACKUP \$TYPE \$SIZE \$WEB \$DNS \$DB \$MAIL \$CRON \$UDIR"
fields="$fields \$RUNTIME \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$BACKUP $TYPE $SIZE $RUNTIME $TIME $DATE'; csv) csv_list ;;
shell_list |column -t;; shell) shell_list |column -t ;;
*) check_args '1' '0' '[FORMAT]' ;;
esac esac

View file

@ -16,43 +16,55 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_favourites() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
fvrt_data=$(cat $USER_DATA/favourites.conf 2>/dev/null)
echo '{' echo '{'
eval $fvrt_data echo ' "Favourites": {
for field in $fields; do "USER": "'$USER'",
eval value=$field "WEB": "'$WEB'",
if [ $i -eq 1 ]; then "DNS": "'$DN'",
echo -e "\t\"$value\": {" "DNS_REC": "'$DNS_REC'",
else "MAIL": "'$MAIL'",
if [ $fileds_count -eq $i ]; then "MAIL_ACC": "'$MAIL_ACC'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "DB": "'$DB'",
else "CRON": "'$CRON'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "BACKUP": "'$BACKUP'",
fi "IP": "'$IP'",
fi "PACKAGE": "'$PACKAGE'",
(( ++i)) "FIREWALL": "'$FIREWALL'"
done }'
#if [ -n "$value" ]; then echo '}'
echo -e ' }'
#fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_favourites() { shell_list() {
line=$(cat $USER_DATA/favourites.conf 2>/dev/null) echo "USER: $USER"
eval $line echo "WEB: $WEB"
for field in $fields; do echo "DNS: $DNS"
eval key="$field" echo "DNS RECORD: $DNS_REC"
if [ -z "$key" ]; then echo "MAIL: $MAIL"
key='NULL' echo "MAIL USER: $MAIL_ACC"
fi echo "DATABASE: $DB"
echo "${field//$/}: $key " echo "CRON: $CRON"
done echo "BACKUP: $BACKUP"
echo "IP: $IP"
echo "PACKAGE: $PACKAGE"
echo "FIREWALL: $FIREWALL"
}
# PLAIN list function
plain_list() {
echo -ne "$USER\t$WEB\t$DNS\t$DNS_REC\t$MAIL\t$MAIL_ACC\t$DB\t$CRON\t"
echo -e "$BACKUP\t$IP\t$PACKAGE\t$FIREWALL"
}
# CSV list function
csv_list() {
echo -n "USER,WEB,DNS,DNS_REC,MAIL,MAIL_ACC,DB,CRON,BACKUP,IP,"
echo "PACKAGE,FIREWALL"
echo -n "\"$USER\",\"$WEB\",\"$DNS\",\"$DNS_REC\",\"$MAIL\","
echo -n "\"$MAIL_ACC\",\"$DB\",\"$CRON\",\"$BACKUP\",\"$IP\","
echo "\"$PACKAGE\",\"$FIREWALL\""
} }
@ -62,7 +74,7 @@ shell_list_favourites() {
# Checking args # Checking args
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -84,17 +96,17 @@ IP=''
PACKAGE='' PACKAGE=''
FIREWALL='' FIREWALL=''
# Defining fileds to select # Parsing user favourites
OBJ='Favourites' if [ -e "$VESTA/data/users/$user/favourites.conf" ]; then
fields='$OBJ $USER $WEB $DNS $DNS_REC $MAIL $MAIL_ACC $DB $CRON $BACKUP source $VESTA/data/users/$user/favourites.conf
$IP $PACKAGE $FIREWALL' fi
# Listing favourites # Listing data
case $format in case $format in
json) json_list_favourites ;; json) json_list ;;
plain) shell_list_favourites ;; plain) plain_list ;;
shell) shell_list_favourites | column -t ;; csv) csv_list ;;
*) check_args '1' '0' 'USER [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,89 +16,59 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_user_ips() { json_list() {
echo '{' echo '{'
fileds_count=$(echo "$fields" | wc -w) ip_count=$(echo "$ips" |wc -l)
for IP in $(ls $VESTA/data/ips/); do i=1
for IP in $ips; do
source $VESTA/data/ips/$IP source $VESTA/data/ips/$IP
if [ "$OWNER" = "$user" ]; then echo -n ' "'$IP'": {
if [ -n "$data" ]; then "OWNER": "'$OWNER'",
echo -e ' },' "STATUS": "'$STATUS'",
fi "NAME": "'$NAME'",
i=1 "NAT": "'$NAT'"
for field in $fields; do }'
eval value=$field if [ "$i" -lt "$ip_count" ]; then
if [ $i -eq 1 ]; then echo ','
(( ++i))
echo -e "\t\"$value\": {"
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi fi
((i++))
done done
else echo '}'
if [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1
for field in $fields; do
eval value=$field
if [ $i -eq 1 ]; then
(( ++i))
echo -e "\t\"$value\": {"
else
if [ $i -lt $fileds_count ]; then
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi
done
fi
fi
done
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_user_ips() { shell_list() {
echo "IP NAT OWNER STATUS NAME"
echo "-- --- ----- ------ ---"
for IP in $ips; do
source $VESTA/data/ips/$IP
if [ -z "$NAT" ]; then
NAT='no'
fi
if [ -z "$NAME" ]; then
NAME='no'
fi
echo "$IP $NAT $OWNER $STATUS $NAME"
done
}
# PLAIN list function
plain_list() {
for IP in $ips; do
source $VESTA/data/ips/$IP
echo -e "$IP\t$OWNER\t$STATUS\t$NAME\t$NAT"
done
}
# CSV list function
csv_list() {
echo "IP,OWNER,STATUS,NAME,NAT"
for IP in $(ls $VESTA/data/ips/); do for IP in $(ls $VESTA/data/ips/); do
source $VESTA/data/ips/$IP source $VESTA/data/ips/$IP
if [ "$OWNER" = "$user" ]; then echo "$IP,$OWNER,$STATUS,$NAME,$NAT"
for field in $fields; do
eval value=$field
if [ -z "$value" ]; then
value='NULL'
fi
echo -n "$value "
done
echo
else
if [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
for field in $fields; do
eval value=$field
if [ -z "$value" ]; then
value='NULL'
fi
echo -n "$value "
done
echo
fi
fi
done done
} }
@ -108,7 +78,7 @@ shell_list_user_ips() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -117,14 +87,21 @@ is_object_valid 'user' 'USER' "$user"
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Defining fileds to select
owner='admin'
owner_ips=$(grep -A 1 "OWNER='$owner'" $VESTA/data/ips/*)
owner_ips=$(echo "$owner_ips" |grep "STATUS='shared'")
owner_ips=$(echo "$owner_ips" |cut -f 7 -d / |cut -f 1 -d -)
user_ips=$(grep "OWNER='$user'" $VESTA/data/ips/*)
user_ips=$(echo "$user_ips" |cut -f 7 -d / |cut -f 1 -d :)
ips=$(echo -e "$user_ips\n$owner_ips" |sort -u |sed "/^$/d")
fields='$IP $OWNER $STATUS $NAME $NAT' fields='$IP $OWNER $STATUS $NAME $NAT'
# Listing ips # Listing data
case $format in case $format in
json) json_list_user_ips ;; json) json_list ;;
plain) nohead=1; shell_list_user_ips ;; plain) plain_list ;;
shell) shell_list_user_ips | column -t ;; csv) csv_list ;;
*) check_args '1' '0' 'USER [FORMAT]' ;; shell) shell_list |column -t ;;
esac esac

View file

@ -16,48 +16,71 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json func # JSON list function
json_list_history() { json_list() {
echo '{'
fileds_count=$(echo $fields| wc -w )
while read line; do
IFS=$'\n' IFS=$'\n'
eval $line
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
IFS=' ' objects=$(echo "$logs" |wc -l)
for field in $fields; do echo "{"
eval value=\"$field\" for str in $logs; do
value=$(echo "$value" | sed -e 's/"/\\"/g' -e "s/%quote%/'/g") eval $str
if [ $i -eq 1 ]; then echo -n ' "'$ID'": {
(( ++i)) "CMD": "'$CMD'",
echo -e "\t\"$value\": {" "UNDO": "'$UNDO'",
"DATE": "'$DATE'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi fi
((i++))
done done
done < $conf echo '}'
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
} }
shell_list() {
IFS=$'\n'
echo "DATE~TIME~CMD"
echo "----~----~---"
for str in $logs; do
eval $str
if [ -z "$DATE" ]; then
DATE='no'
fi
if [ -z "$TIME" ]; then
TIME='no'
fi
echo "$DATE~$TIME~$CMD"
done
}
# PLAIN list function
plain_list() {
IFS=$'\n'
for str in $logs; do
eval $str
echo -e "$ID\t$CMD\t$UNDO\t$TIME\t$DATE"
done
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "ID,CMD,UNDO,TIME,DATE"
for str in $logs; do
eval $str
echo "$ID,\"$CMD\",\"$UNDO\",$TIME,$DATE"
done
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -65,19 +88,14 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Parsing history log
conf=$USER_DATA/history.log logs=$(tail -n 300 $USER_DATA/history.log 2>/dev/null)
# Defining fileds to select
fields="\$ID \$DATE \$TIME \$CMD \$UNDO"
# Listing domains
case $format in case $format in
json) json_list_history ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$ID~$DATE~$TIME~$CMD'; csv) csv_list ;;
shell_list |column -t -s '~';; shell) shell_list |column -t -s '~';;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -16,50 +16,69 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_notifications() { json_list() {
echo '{' IFS=$'\n'
fileds_count=$(echo $fields| wc -w )
while read line; do
eval $line
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
IFS=' ' objects=$(grep NID $USER_DATA/notifications.conf |wc -l)
for field in $fields; do echo "{"
eval value=\"$field\" while read str; do
value=$(echo "$value"|sed -e 's/"/\\"/g' -e "s/%quote%/'/g") eval $str
if [ $i -eq 1 ]; then TOPIC=$(echo "$TOPIC" |sed -e "s/%quote%/'/g")
(( ++i)) NOTICE=$(echo "$NOTICE" |sed -e "s/%quote%/'/g")
echo -e "\t\"$value\": {" echo -n ' "'$NID'": {
"TOPIC": "'$TOPIC'",
"NOTICE": "'$NOTICE'",
"TYPE": "'$TYPE'",
"ACK": "'$ACK'",
"TPL": "'$TPL'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi fi
fi ((i++))
done done < <(cat $USER_DATA/notifications.conf)
done < $conf echo '}'
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_notifications() { shell_list() {
while read line ; do IFS=$'\n'
eval $line while read str; do
eval $str
echo "$TOPIC" |sed -e "s/%quote%/'/g" echo "$TOPIC" |sed -e "s/%quote%/'/g"
echo "$NOTICE" |sed -e "s/%quote%/'/g" echo "$NOTICE" |sed -e "s/%quote%/'/g"
echo "$DATE $TIME" echo "$DATE $TIME"
echo "--" echo "--"
echo echo
done < $conf done < <(cat $USER_DATA/notifications.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
TOPIC=$(echo "$TOPIC" |sed -e "s/%quote%/'/g")
NOTICE=$(echo "$NOTICE" |sed -e "s/%quote%/'/g")
echo -e "$NID\t$TOPIC\t$NOTICE\t$TIME\t$DATE"
done < <(cat $USER_DATA/notifications.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo "NID,TOPIC,NOTICE,TIME,DATE"
while read str; do
eval $str
TOPIC=$(echo "$TOPIC" |sed -e "s/%quote%/'/g")
NOTICE=$(echo "$NOTICE" |sed -e "s/%quote%/'/g")
echo "$NID,\"$TOPIC\",\"$NOTICE\",$TIME,$DATE"
done < <(cat $USER_DATA/notifications.conf)
} }
@ -69,7 +88,7 @@ shell_list_notifications() {
# Checking args # Checking args
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -77,16 +96,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
conf=$USER_DATA/notifications.conf
fields='$NID $TOPIC $NOTICE $TYPE $ACK $TIME $DATE'
# Listing favourites
case $format in case $format in
json) json_list_notifications ;; json) json_list ;;
plain) shell_list_notifications ;; plain) plain_list ;;
shell) shell_list_notifications ;; csv) csv_list ;;
*) check_args '1' '0' 'USER [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,30 +16,41 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_ns() { json_list() {
ns=$(grep "^NS='" $USER_DATA/user.conf |cut -f 2 -d \')
echo '['
i=1 i=1
nslistc=$(echo -e "${ns//,/\\n}"|wc -l) objects=$(echo -e "${ns//,/\\n}" |wc -l)
echo '['
for nameserver in ${ns//,/ };do for nameserver in ${ns//,/ };do
if [ "$i" -ne "$nslistc" ]; then if [ "$i" -ne "$objects" ]; then
echo -e "\t\"$nameserver\"," echo -e "\t\"$nameserver\","
else else
echo -e "\t\"$nameserver\"" echo -e "\t\"$nameserver\""
fi fi
(( ++i)) (( ++i))
done done
echo "]" echo ']'
} }
# Shell function # SHELL list function
shell_list_ns() { shell_list() {
ns=$(grep "^NS='" $USER_DATA/user.conf |cut -f 2 -d \') echo "NS"
if [ -z "$nohead" ]; then echo "--"
for nameserver in ${ns//,/ };do
echo "$nameserver"
done
}
# PLAIN list function
plain_list() {
for nameserver in ${ns//,/ };do
echo "$nameserver"
done
}
# CSV list function
csv_list() {
echo "NAMESERVER" echo "NAMESERVER"
echo "----------"
fi
for nameserver in ${ns//,/ };do for nameserver in ${ns//,/ };do
echo "$nameserver" echo "$nameserver"
done done
@ -51,7 +62,7 @@ shell_list_ns() {
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user' is_format_valid 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -59,12 +70,15 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing nameservers # Parsing name servers
ns=$(grep "^NS='" $USER_DATA/user.conf |cut -f 2 -d \')
# Listing data
case $format in case $format in
json) json_list_ns ;; json) json_list ;;
plain) nohead=1; shell_list_ns ;; plain) plain_list ;;
shell) shell_list_ns ;; csv) csv_list ;;
*) check_args '1' '0' 'USER [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -17,43 +17,73 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_package() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
pkg_data=$(cat $VESTA/data/packages/$PACKAGE.pkg)
echo '{' echo '{'
eval $pkg_data echo ' "'$PACKAGE'": {
for field in $fields; do "WEB_TEMPLATE": "'$WEB_TEMPLATE'",
eval value=$field "PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
if [ $i -eq 1 ]; then "DNS_TEMPLATE": "'$DNS_TEMPLATE'",
echo -e "\t\"$value\": {" "WEB_DOMAINS": "'$WEB_DOMAINS'",
else "WEB_ALIASES": "'$WEB_ALIASES'",
if [ $fileds_count -eq $i ]; then "DNS_DOMAINS": "'$DNS_DOMAINS'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"" "DNS_RECORDS": "'$DNS_RECORDS'",
else "MAIL_DOMAINS": "'$MAIL_DOMAINS'",
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\"," "MAIL_ACCOUNTS": "'$MAIL_ACCOUNTS'",
fi "DATABASES": "'$DATABASES'",
fi "CRON_JOBS": "'$CRON_JOBS'",
(( ++i)) "DISK_QUOTA": "'$DISK_QUOTA'",
done "BANDWIDTH": "'$BANDWIDTH'",
if [ -n "$value" ]; then "NS": "'$NS'",
echo -e ' }' "SHELL": "'$SHELL'",
fi "BACKUPS": "'$BACKUPS'",
echo -e '}' "TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
echo '}'
} }
# Shell function # SHELL list function
shell_list_package() { shell_list() {
line=$(cat $VESTA/data/packages/$PACKAGE.pkg) echo "PACKAGE: $PACKAGE"
eval $line echo "WEB TEMPLATE: $WEB_TEMPLATE"
for field in $fields; do echo "PROXY TEMPLATE: $PROXY_TEMPLATE"
eval key="$field" echo "DNS TEMPLATE: $DNS_TEMPLATE"
if [ -z "$key" ]; then echo "WEB DOMAINS: $WEB_DOMAINS"
key='NULL' echo "WEB ALIASES: $WEB_ALIASES"
fi echo "DNS DOMAINS: $DNS_DOMAINS"
echo "${field//$/}: $key " echo "DNS RECORDS: $DNS_RECORDS"
done echo "MAIL DOMAINS: $MAIL_DOMAINS"
echo "MAIL ACCOUNTS: $MAIL_ACCOUNTS"
echo "DATABASES: $DATABASES"
echo "CRON JOBS: $CRON_JOBS"
echo "DISK QUOTA: $DISK_QUOTA"
echo "BANDWIDTH: $BANDWIDTH"
echo "NS: $NS"
echo "SHELL: $SHELL"
echo "BACKUPS: $BACKUPS"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
echo -e "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "PACKAGE,WEB_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
echo -n "WEB_DOMAINS,WEB_ALIASES,DNS_DOMAINS,DNS_RECORDS,"
echo -n "MAIL_DOMAINS,MAIL_ACCOUNTS,DATABASES,CRON_JOBS,"
echo "DISK_QUOTA,BANDWIDTH,NS,SHELL,BACKUPS,TIME,DATE"
echo -n "$PACKAGE,$WEB_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
echo "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$SHELL,$BACKUPS,$TIME,$DATE"
} }
@ -63,7 +93,7 @@ shell_list_package() {
# Checking args # Checking args
check_args '1' "$#" 'PACKAGE [FORMAT]' check_args '1' "$#" 'PACKAGE [FORMAT]'
validate_format 'package' is_format_valid 'package'
is_package_valid is_package_valid
@ -71,18 +101,15 @@ is_package_valid
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Parsing package
fields='$PACKAGE $WEB_TEMPLATE $PROXY_TEMPLATE $DNS_TEMPLATE $WEB_DOMAINS source $VESTA/data/packages/$PACKAGE.pkg
$WEB_ALIASES $DNS_DOMAINS $DNS_RECORDS $MAIL_DOMAINS $MAIL_ACCOUNTS
$DATABASES $CRON_JOBS $DISK_QUOTA $BANDWIDTH $NS $SHELL $BACKUPS $TIME
$DATE'
# Listing ip # Listing data
case $format in case $format in
json) json_list_package ;; json) json_list ;;
plain) shell_list_package ;; plain) plain_list ;;
shell) shell_list_package | column -t ;; csv) csv_list ;;
*) check_args '1' '0' 'IP [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -15,53 +15,85 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function
json_list_pkgs() { # JSON list function
echo '{' json_list() {
fileds_count=$(echo "$fields" | wc -w) IFS=$'\n'
for package in $(ls --sort=time $VESTA/data/packages |grep .pkg); do
PACKAGE=${package/.pkg/}
pkg_data=$(cat $VESTA/data/packages/$package)
eval $pkg_data
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
for field in $fields; do objects=$(echo "$packages" |wc -l)
eval value=$field echo "{"
if [ $i -eq 1 ]; then for package in $packages; do
(( ++i)) PACKAGE=${package/.pkg/}
echo -e "\t\"$value\": {" source $VESTA/data/packages/$package
echo -n ' "'$PACKAGE'": {
"WEB_TEMPLATE": "'$WEB_TEMPLATE'",
"PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
"DNS_TEMPLATE": "'$DNS_TEMPLATE'",
"WEB_DOMAINS": "'$WEB_DOMAINS'",
"WEB_ALIASES": "'$WEB_ALIASES'",
"DNS_DOMAINS": "'$DNS_DOMAINS'",
"DNS_RECORDS": "'$DNS_RECORDS'",
"MAIL_DOMAINS": "'$MAIL_DOMAINS'",
"MAIL_ACCOUNTS": "'$MAIL_ACCOUNTS'",
"DATABASES": "'$DATABASES'",
"CRON_JOBS": "'$CRON_JOBS'",
"DISK_QUOTA": "'$DISK_QUOTA'",
"BANDWIDTH": "'$BANDWIDTH'",
"NS": "'$NS'",
"SHELL": "'$SHELL'",
"BACKUPS": "'$BACKUPS'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
data=1
fi
fi fi
((i++))
done done
done echo '}'
if [ -n "$data" ]; then
echo -e ' }'
fi
echo -e '}'
} }
# Shell fnction # SHELL list function
shell_list_pkgs() { shell_list() {
for package in $(ls -t $VESTA/data/packages |grep .pkg); do echo "PKG TPL WEB DNS MAIL DB SHELL DISK BW"
echo "--- --- --- --- ---- -- ----- ---- --"
for package in $packages; do
source $VESTA/data/packages/$package
PACKAGE=${package/.pkg/} PACKAGE=${package/.pkg/}
pkg_descr=$(cat $VESTA/data/packages/$package) package_data=$(cat $VESTA/data/packages/$package)
eval $pkg_descr package_data=$(echo "$package_data" |sed -e 's/unlimited/unlim/g')
if [ -z "$nohead" ]; then eval $package_data
echo '----------' echo -n "$PACKAGE $WEB_TEMPLATE $WEB_DOMAINS $DNS_DOMAINS "
fi echo "$MAIL_DOMAINS $DATABASES $SHELL $DISK_QUOTA $BANDWIDTH"
for field in $fields; do
eval value=$field
echo -e "${field//$/}: $value"
done done
}
# PLAIN list function
plain_list() {
for package in $packages; do
source $VESTA/data/packages/$package
PACKAGE=${package/.pkg/}
echo -ne "$PACKAGE\t$WEB_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
echo -e "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t$TIME\t$DATE"
done
}
# CSV list function
csv_list() {
echo -n "PACKAGE,WEB_TEMPLATE,PROXY_TEMPLATE,DNS_TEMPLATE,"
echo -n "WEB_DOMAINS,WEB_ALIASES,DNS_DOMAINS,DNS_RECORDS,"
echo -n "MAIL_DOMAINS,MAIL_ACCOUNTS,DATABASES,CRON_JOBS,"
echo "DISK_QUOTA,BANDWIDTH,NS,SHELL,BACKUPS,TIME,DATE"
for package in $packages; do
PACKAGE=${package/.pkg/}
echo -n "$PACKAGE,$WEB_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
echo "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$SHELL,$BACKUPS,$TIME,$DATE"
done done
} }
@ -70,18 +102,15 @@ shell_list_pkgs() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fields # Parsing packages
fields='$PACKAGE $WEB_TEMPLATE $BACKEND_TEMPLATE $PROXY_TEMPLATE packages=$(ls --sort=time $VESTA/data/packages |grep .pkg)
$DNS_TEMPLATE $WEB_DOMAINS $WEB_ALIASES $DNS_DOMAINS $DNS_RECORDS
$MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES $CRON_JOBS $DISK_QUOTA $BANDWIDTH
$NS $SHELL $BACKUPS $TIME $DATE'
# Listing domains # Listing data
case $format in case $format in
json) json_list_pkgs ;; json) json_list ;;
plain) nohead=1; shell_list_pkgs ;; plain) plain_list ;;
shell) shell_list_pkgs | column -t ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list |column -t ;;
esac esac

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# info: list user stats # info: list user stats
# options: USER [FORMAT] # options: [FORMAT]
# #
# The function for listing user statistics # The function for listing user statistics
@ -16,13 +16,105 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep DATE $USER_DATA/stats.log |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DATE'": {
"TIME": "'$TIME'",
"PACKAGE": "'$PACKAGE'",
"IP_OWNED": "'$IP_OWNED'",
"DISK_QUOTA": "'$DISK_QUOTA'",
"U_DISK": "'$U_DISK'",
"U_DISK_DIRS": "'$U_DISK_DIRS'",
"U_DISK_WEB": "'$U_DISK_WEB'",
"U_DISK_MAIL": "'$U_DISK_MAIL'",
"U_DISK_DB": "'$U_DISK_DB'",
"BANDWIDTH": "'$BANDWIDTH'",
"U_BANDWIDTH": "'$U_BANDWIDTH'",
"U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
"U_WEB_SSL": "'$U_WEB_SSL'",
"U_WEB_ALIASES": "'$U_WEB_ALIASES'",
"U_DNS_DOMAINS": "'$U_DNS_DOMAINS'",
"U_DNS_RECORDS": "'$U_DNS_RECORDS'",
"U_MAIL_DOMAINS": "'$U_MAIL_DOMAINS'",
"U_MAIL_DKIM": "'$U_MAIL_DKIM'",
"U_MAIL_ACCOUNTS": "'$U_MAIL_ACCOUNTS'",
"U_DATABASES": "'$U_DATABASES'",
"U_CRON_JOBS": "'$U_CRON_JOBS'",
"U_BACKUPS": "'$U_BACKUPS'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/stats.log)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DATE WEB DNS MAIL DB BACKUPS IP DISK BW"
echo "---- --- --- ---- -- ------- -- ---- --"
while read str; do
eval $str
if [ -z "$U_USERS" ]; then
U_USERS=1
fi
echo -n "$DATE $U_WEB_DOMAINS $U_DNS_DOMAINS "
echo -n "$U_MAIL_DOMAINS $U_DATABASES $U_BACKUPS $IP_OWNED "
echo "$U_DISK $U_BANDWIDTH"
done < <(cat $USER_DATA/stats.log)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DATE\t$TIME\t$PACKAGE\t$IP_OWNED\t$DISK_QUOTA\t$U_DISK\t"
echo -ne "$U_DISK_DIRS\t$U_DISK_WEB\t$U_DISK_MAIL\t$U_DISK_DB\t"
echo -ne "$BANDWIDTH\t$U_BANDWIDTH\t$U_WEB_DOMAINS\t$U_WEB_SSL\t"
echo -ne "$U_WEB_ALIASES\t$U_DNS_DOMAINS\t$U_DNS_RECORDS\t"
echo -ne "$U_MAIL_DOMAINS\t$U_MAIL_DKIM\t$U_MAIL_ACCOUNTS\t"
echo -e "$U_DATABASES\t$U_CRON_JOBS\t$U_BACKUPS"
done < <(cat $USER_DATA/stats.log)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "DATE,TIME,PACKAGE,IP_OWNED,DISK_QUOTA,U_DISK,"
echo -n "U_DISK_DIRS,U_DISK_WEB,U_DISK_MAIL,U_DISK_DB,"
echo -n "BANDWIDTH,U_BANDWIDTH,U_WEB_DOMAINS,U_WEB_SSL,"
echo -n "U_WEB_ALIASES,U_DNS_DOMAINS,U_DNS_RECORDS,"
echo -n "U_MAIL_DOMAINS,U_MAIL_DKIM,U_MAIL_ACCOUNTS,"
echo "U_DATABASES,U_CRON_JOBS,U_BACKUPS"
while read str; do
eval $str
echo -n "$DATE,$TIME,$PACKAGE,$IP_OWNED,$DISK_QUOTA,$U_DISK,"
echo -n "$U_DISK_DIRS,$U_DISK_WEB,$U_DISK_MAIL,$U_DISK_DB,"
echo -n "$BANDWIDTH,$U_BANDWIDTH,$U_WEB_DOMAINS,$U_WEB_SSL,"
echo -n "$U_WEB_ALIASES,$U_DNS_DOMAINS,$U_DNS_RECORDS,"
echo -n "$U_MAIL_DOMAINS,$U_MAIL_DKIM,$U_MAIL_ACCOUNTS,"
echo "$U_DATABASES,$U_CRON_JOBS,$U_BACKUPS"
done < <(cat $USER_DATA/stats.log)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -36,21 +128,12 @@ if [ ! -e "$conf" ]; then
touch $conf touch $conf
fi fi
# Defining fileds to select # Listing data
fields="\$DATE \$TIME \$PACKAGE \$IP_OWNED \$DISK_QUOTA \$U_DISK \$U_DISK_DIRS"
fields="$fields \$U_DISK_WEB \$U_DISK_MAIL \$U_DISK_DB \$BANDWIDTH"
fields="$fields \$U_BANDWIDTH \$U_WEB_DOMAINS \$U_WEB_SSL \$U_WEB_ALIASES"
fields="$fields \$U_DNS_DOMAINS \$U_DNS_RECORDS \$U_MAIL_DOMAINS \$U_MAIL_DKIM"
fields="$fields \$U_MAIL_ACCOUNTS \$U_DATABASES \$U_CRON_JOBS \$U_BACKUPS"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DATE $PACKAGE $U_DISK $U_BANDWIDTH $U_WEB_DOMAINS'; csv) csv_list ;;
fields="$fields \$U_DATABASES" shell) shell_list |column -t ;;
shell_list | column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# info: list system users # info: list users
# options: [FORMAT] # options: [FORMAT]
# #
# The function for obtaining the list of all server's users. # The function to obtain the list of all system users.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -12,59 +12,148 @@
# Argument definition # Argument definition
format=${1-shell} format=${1-shell}
# Json function # JSON list function
json_list_users() { json_list() {
echo '{' echo '{'
fileds_count=$(echo "$fields" | wc -w) object_count=$(grep '@' /etc/passwd |wc -l)
for USER in $(grep @ /etc/passwd|cut -f 1 -d :); do
source $VESTA/data/users/$USER/user.conf
if [ -n "$data" ]; then
echo -e ' },'
fi
i=1 i=1
for field in $fields; do while read USER; do
eval value=$field source $VESTA/data/users/$USER/user.conf
if [ $i -eq 1 ]; then echo -n ' "'$USER'": {
(( ++i)) "FNAME": "'$FNAME'",
echo -e "\t\"$value\": {" "LNAME": "'$LNAME'",
"PACKAGE": "'$PACKAGE'",
"WEB_TEMPLATE": "'$WEB_TEMPLATE'",
"BACKEND_TEMPLATE": "'$BACKEND_TEMPLATE'",
"PROXY_TEMPLATE": "'$PROXY_TEMPLATE'",
"DNS_TEMPLATE": "'$DNS_TEMPLATE'",
"WEB_DOMAINS": "'$WEB_DOMAINS'",
"WEB_ALIASES": "'$WEB_ALIASES'",
"DNS_DOMAINS": "'$DNS_DOMAINS'",
"DNS_RECORDS": "'$DNS_RECORDS'",
"MAIL_DOMAINS": "'$MAIL_DOMAINS'",
"MAIL_ACCOUNTS": "'$MAIL_ACCOUNTS'",
"DATABASES": "'$DATABASES'",
"CRON_JOBS": "'$CRON_JOBS'",
"DISK_QUOTA": "'$DISK_QUOTA'",
"BANDWIDTH": "'$BANDWIDTH'",
"NS": "'$NS'",
"SHELL": "'$SHELL'",
"BACKUPS": "'$BACKUPS'",
"CONTACT": "'$CONTACT'",
"CRON_REPORTS": "'$CRON_REPORTS'",
"RKEY": "'$RKEY'",
"SUSPENDED": "'$SUSPENDED'",
"SUSPENDED_USERS": "'$SUSPENDED_USERS'",
"SUSPENDED_WEB": "'$SUSPENDED_WEB'",
"SUSPENDED_DNS": "'$SUSPENDED_DNS'",
"SUSPENDED_MAIL": "'$SUSPENDED_MAIL'",
"SUSPENDED_DB": "'$SUSPENDED_DB'",
"SUSPENDED_CRON": "'$SUSPENDED_CRON'",
"IP_AVAIL": "'$IP_AVAIL'",
"IP_OWNED": "'$IP_OWNED'",
"U_USERS": "'$U_USERS'",
"U_DISK": "'$U_DISK'",
"U_DISK_DIRS": "'$U_DISK_DIRS'",
"U_DISK_WEB": "'$U_DISK_WEB'",
"U_DISK_MAIL": "'$U_DISK_MAIL'",
"U_DISK_DB": "'$U_DISK_DB'",
"U_BANDWIDTH": "'$U_BANDWIDTH'",
"U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
"U_WEB_SSL": "'$U_WEB_SSL'",
"U_WEB_ALIASES": "'$U_WEB_ALIASES'",
"U_DNS_DOMAINS": "'$U_DNS_DOMAINS'",
"U_DNS_RECORDS": "'$U_DNS_RECORDS'",
"U_MAIL_DOMAINS": "'$U_MAIL_DOMAINS'",
"U_MAIL_DKIM": "'$U_MAIL_DKIM'",
"U_MAIL_ACCOUNTS": "'$U_MAIL_ACCOUNTS'",
"U_DATABASES": "'$U_DATABASES'",
"U_CRON_JOBS": "'$U_CRON_JOBS'",
"U_BACKUPS": "'$U_BACKUPS'",
"LANGUAGE": "'$LANGUAGE'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$object_count" ]; then
echo ','
else else
if [ $i -lt $fileds_count ]; then echo
(( ++i))
echo -e "\t\t\"${field//$/}\": \"$value\","
else
echo -e "\t\t\"${field//$/}\": \"$value\""
data=1
fi fi
fi ((i++))
done done < <(grep '@' /etc/passwd |cut -f1 -d:)
done
if [ -n "$data" ]; then echo '}'
echo -e ' }'
fi
echo -e '}'
} }
# Shell function # SHELL list function
shell_list_users() { shell_list() {
if [ -z "$nohead" ]; then echo "USER PKG WEB DNS MAIL DB DISK BW SPND DATE"
echo "${fields//$/}" echo "---- --- --- --- --- -- ---- -- ---- ----"
for a in $fields; do while read USER; do
echo -e "--------- \c"
done
echo
fi
for USER in $(grep @ /etc/passwd|cut -f 1 -d :); do
source $VESTA/data/users/$USER/user.conf source $VESTA/data/users/$USER/user.conf
for field in $fields; do echo -n "$USER $PACKAGE $U_WEB_DOMAINS $U_DNS_DOMAINS $U_MAIL_DOMAINS"
eval value=$field echo " $U_DATABASES $U_DISK $U_BANDWIDTH $SUSPENDED $DATE"
if [ -z "$value" ]; then done < <(grep '@' /etc/passwd |cut -f1 -d:)
value='NULL' }
fi
echo -n "$value " # PLAIN list function
done plain_list() {
echo while read USER; do
done source $VESTA/data/users/$USER/user.conf
echo -ne "$USER\t$FNAME\t$LNAME\t$PACKAGE\t$WEB_TEMPLATE\t"
echo -ne "$BACKEND_TEMPLATE\t$PROXY_TEMPLATE\t$DNS_TEMPLATE\t"
echo -ne "$WEB_DOMAINS\t$WEB_ALIASES\t$DNS_DOMAINS\t$DNS_RECORDS\t"
echo -ne "$MAIL_DOMAINS\t$MAIL_ACCOUNTS\t$DATABASES\t$CRON_JOBS\t"
echo -ne "$DISK_QUOTA\t$BANDWIDTH\t$NS\t$SHELL\t$BACKUPS\t"
echo -ne "$CONTACT\t$CRON_REPORTS\t$RKEY\t$SUSPENDED\t"
echo -ne "$SUSPENDED_USERS\t$SUSPENDED_WEB\t$SUSPENDED_DNS\t"
echo -ne "$SUSPENDED_MAIL\t$SUSPENDED_DB\t$SUSPENDED_CRON\t"
echo -ne "$IP_AVAIL\t$IP_OWNED\t$U_USERS\t$U_DISK\t$U_DISK_DIRS\t"
echo -ne "$U_DISK_WEB\t$U_DISK_MAIL\t$U_DISK_DB\t$U_BANDWIDTH\t"
echo -ne "$U_WEB_DOMAINS\t$U_WEB_SSL\t$U_WEB_ALIASES\t"
echo -ne "$U_DNS_DOMAINS\t$U_DNS_RECORDS\t$U_MAIL_DOMAINS\t"
echo -ne "$U_MAIL_DKIM\t$U_MAIL_ACCOUNTS\t$U_DATABASES\t"
echo -e "$U_CRON_JOBS\t$U_BACKUPS\t$LANGUAGE\t$TIME\t$DATE\t"
done < <(grep '@' /etc/passwd |cut -f1 -d:)
}
# CSV list function
csv_list() {
echo -n "USER,FNAME,LNAME,PACKAGE,WEB_TEMPLATE,BACKEND_TEMPLATE,"
echo -n "PROXY_TEMPLATE,DNS_TEMPLATE,WEB_DOMAINS,WEB_ALIASES,"
echo -n "DNS_DOMAINS,DNS_RECORDS,MAIL_DOMAINS,MAIL_ACCOUNTS,"
echo -n "DATABASES,CRON_JOBS,DISK_QUOTA,BANDWIDTH,NS,HOME,SHELL,"
echo -n "BACKUPS,CONTACT,CRON_REPORTS,RKEY,SUSPENDED,SUSPENDED_USERS,"
echo -n "SUSPENDED_WEB,SUSPENDED_DNS,SUSPENDED_MAIL,SUSPENDED_DB,"
echo -n "SUSPENDED_CRON,IP_AVAIL,IP_OWNED,U_USERS,U_DISK,U_DISK_DIRS,"
echo -n "U_DISK_WEB,U_DISK_MAIL,U_DISK_DB,U_BANDWIDTH,U_WEB_DOMAINS,"
echo -n "U_WEB_SSL,U_WEB_ALIASES,U_DNS_DOMAINS,U_DNS_RECORDS,"
echo -n "U_MAIL_DOMAINS,U_MAIL_DKIM,U_MAIL_ACCOUNTS,U_DATABASES"
echo "U_CRON_JOBS,U_BACKUPS,LANGUAGE,TIME,DATE"
while read USER; do
source $VESTA/data/users/$USER/user.conf
echo -n "$USER,\"$FNAME\",\"$LNAME\",$PACKAGE,$WEB_TEMPLATE,"
echo -n "$BACKEND_TEMPLATE,$PROXY_TEMPLATE,$DNS_TEMPLATE,"
echo -n "$WEB_DOMAINS,$WEB_ALIASES,$DNS_DOMAINS,$DNS_RECORDS,"
echo -n "$MAIL_DOMAINS,$MAIL_ACCOUNTS,$DATABASES,$CRON_JOBS,"
echo -n "$DISK_QUOTA,$BANDWIDTH,\"$NS\",$HOME,$SHELL,$BACKUPS,"
echo -n "$CONTACT,$CRON_REPORTS,\"$RKEY\",$SUSPENDED,"
echo -n "$SUSPENDED_USERS,$SUSPENDED_WEB,$SUSPENDED_DNS,"
echo -n "$SUSPENDED_MAIL,$SUSPENDED_DB,$SUSPENDED_CRON,$IP_AVAIL,"
echo -n "$IP_OWNED,$U_USERS,$U_DISK,$U_DISK_DIRS,$U_DISK_WEB,"
echo -n "$U_DISK_MAIL,$U_DISK_DB,$U_BANDWIDTH,$U_WEB_DOMAINS,"
echo -n "$U_WEB_SSL,$U_WEB_ALIASES,$U_DNS_DOMAINS,$U_DNS_RECORDS,"
echo -n "$U_MAIL_DOMAINS,$U_MAIL_DKIM,$U_MAIL_ACCOUNTS,$U_DATABASES,"
echo "$U_CRON_JOBS,$U_BACKUPS,$LANGUAGE,$TIME,$DATE"
done < <(grep '@' /etc/passwd |cut -f1 -d:)
}
# Raw list function
raw_list() {
while read USER; do
echo $VESTA/data/users/$USER/user.conf
cat $VESTA/data/users/$USER/user.conf
done < <(grep '@' /etc/passwd |cut -f1 -d:)
} }
@ -72,27 +161,12 @@ shell_list_users() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining fileds to select # Listing data
fields="\$USER \$FNAME \$LNAME \$PACKAGE \$WEB_TEMPLATE \$BACKEND_TEMPLATE"
fields="$fields \$PROXY_TEMPLATE \$DNS_TEMPLATE \$WEB_DOMAINS \$WEB_ALIASES"
fields="$fields \$DNS_DOMAINS \$DNS_RECORDS \$MAIL_DOMAINS \$MAIL_ACCOUNTS"
fields="$fields \$DATABASES \$CRON_JOBS \$DISK_QUOTA \$BANDWIDTH \$NS \$SHELL"
fields="$fields \$BACKUPS \$CONTACT \$CRON_REPORTS \$RKEY \$SUSPENDED"
fields="$fields \$SUSPENDED_USERS \$SUSPENDED_WEB \$SUSPENDED_DNS"
fields="$fields \$SUSPENDED_MAIL \$SUSPENDED_DB \$SUSPENDED_CRON \$IP_AVAIL"
fields="$fields \$IP_OWNED \$U_USERS \$U_DISK \$U_DISK_DIRS \$U_DISK_WEB"
fields="$fields \$U_DISK_MAIL \$U_DISK_DB \$U_BANDWIDTH \$U_WEB_DOMAINS"
fields="$fields \$U_WEB_SSL \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS"
fields="$fields \$U_MAIL_DOMAINS \$U_MAIL_DKIM \$U_MAIL_ACCOUNTS"
fields="$fields \$U_DATABASES \$U_CRON_JOBS \$U_BACKUPS \$LANGUAGE"
fields="$fields \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list_users ;; json) json_list ;;
plain) nohead=1; shell_list_users ;; plain) plain_list ;;
shell) fields='$USER $PACKAGE $U_DISK $U_BANDWIDTH $SUSPENDED $DATE'; csv) csv_list ;;
shell_list_users | column -t ;; shell) shell_list |column -t ;;
esac esac

View file

@ -15,6 +15,100 @@ format=${1-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep DATE $VESTA/data/users/admin/overall_stats.log |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DATE'": {
"TIME": "'$TIME'",
"PACKAGE": "'$PACKAGE'",
"IP_OWNED": "'$IP_OWNED'",
"DISK_QUOTA": "'$DISK_QUOTA'",
"U_DISK": "'$U_DISK'",
"U_DISK_DIRS": "'$U_DISK_DIRS'",
"U_DISK_WEB": "'$U_DISK_WEB'",
"U_DISK_MAIL": "'$U_DISK_MAIL'",
"U_DISK_DB": "'$U_DISK_DB'",
"BANDWIDTH": "'$BANDWIDTH'",
"U_BANDWIDTH": "'$U_BANDWIDTH'",
"U_WEB_DOMAINS": "'$U_WEB_DOMAINS'",
"U_WEB_SSL": "'$U_WEB_SSL'",
"U_WEB_ALIASES": "'$U_WEB_ALIASES'",
"U_DNS_DOMAINS": "'$U_DNS_DOMAINS'",
"U_DNS_RECORDS": "'$U_DNS_RECORDS'",
"U_MAIL_DOMAINS": "'$U_MAIL_DOMAINS'",
"U_MAIL_DKIM": "'$U_MAIL_DKIM'",
"U_MAIL_ACCOUNTS": "'$U_MAIL_ACCOUNTS'",
"U_DATABASES": "'$U_DATABASES'",
"U_CRON_JOBS": "'$U_CRON_JOBS'",
"U_BACKUPS": "'$U_BACKUPS'",
"U_USERS": "'$U_USERS'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $VESTA/data/users/admin/overall_stats.log)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DATE USER WEB DNS MAIL DB BACKUPS IP DISK BW"
echo "---- ---- --- --- ---- -- ------- -- ---- --"
while read str; do
eval $str
if [ -z "$U_USERS" ]; then
U_USERS=1
fi
echo -n "$DATE $U_USERS $U_WEB_DOMAINS $U_DNS_DOMAINS "
echo -n "$U_MAIL_DOMAINS $U_DATABASES $U_BACKUPS $IP_OWNED "
echo "$U_DISK $U_BANDWIDTH"
done < <(cat $VESTA/data/users/admin/overall_stats.log)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DATE\t$TIME\t$PACKAGE\t$IP_OWNED\t$DISK_QUOTA\t$U_DISK\t"
echo -ne "$U_DISK_DIRS\t$U_DISK_WEB\t$U_DISK_MAIL\t$U_DISK_DB\t"
echo -ne "$BANDWIDTH\t$U_BANDWIDTH\t$U_WEB_DOMAINS\t$U_WEB_SSL\t"
echo -ne "$U_WEB_ALIASES\t$U_DNS_DOMAINS\t$U_DNS_RECORDS\t"
echo -ne "$U_MAIL_DOMAINS\t$U_MAIL_DKIM\t$U_MAIL_ACCOUNTS\t"
echo -e "$U_DATABASES\t$U_CRON_JOBS\t$U_BACKUPS\t$U_USERS"
done < <(cat $VESTA/data/users/admin/overall_stats.log)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "DATE,TIME,PACKAGE,IP_OWNED,DISK_QUOTA,U_DISK,"
echo -n "U_DISK_DIRS,U_DISK_WEB,U_DISK_MAIL,U_DISK_DB,"
echo -n "BANDWIDTH,U_BANDWIDTH,U_WEB_DOMAINS,U_WEB_SSL,"
echo -n "U_WEB_ALIASES,U_DNS_DOMAINS,U_DNS_RECORDS,"
echo -n "U_MAIL_DOMAINS,U_MAIL_DKIM,U_MAIL_ACCOUNTS,"
echo "U_DATABASES,U_CRON_JOBS,U_BACKUPS,U_USERS"
while read str; do
eval $str
echo -n "$DATE,$TIME,$PACKAGE,$IP_OWNED,$DISK_QUOTA,$U_DISK,"
echo -n "$U_DISK_DIRS,$U_DISK_WEB,$U_DISK_MAIL,$U_DISK_DB,"
echo -n "$BANDWIDTH,$U_BANDWIDTH,$U_WEB_DOMAINS,$U_WEB_SSL,"
echo -n "$U_WEB_ALIASES,$U_DNS_DOMAINS,$U_DNS_RECORDS,"
echo -n "$U_MAIL_DOMAINS,$U_MAIL_DKIM,$U_MAIL_ACCOUNTS,"
echo "$U_DATABASES,$U_CRON_JOBS,$U_BACKUPS,$U_USERS"
done < <(cat $VESTA/data/users/admin/overall_stats.log)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
@ -33,21 +127,12 @@ if [ ! -e "$conf" ]; then
touch $conf touch $conf
fi fi
# Defining fileds to select # Listing data
fields="\$DATE \$TIME \$PACKAGE \$IP_OWNED \$DISK_QUOTA \$U_DISK \$U_DISK_DIRS"
fields="$fields \$U_DISK_WEB \$U_DISK_MAIL \$U_DISK_DB \$BANDWIDTH"
fields="$fields \$U_BANDWIDTH \$U_WEB_DOMAINS \$U_WEB_SSL \$U_WEB_ALIASES"
fields="$fields \$U_DNS_DOMAINS \$U_DNS_RECORDS \$U_MAIL_DOMAINS \$U_MAIL_DKIM"
fields="$fields \$U_MAIL_ACCOUNTS \$U_DATABASES \$U_CRON_JOBS \$U_BACKUPS"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DATE $U_DISK $U_BANDWIDTH $U_WEB_DOMAINS $U_DATABASES'; csv) csv_list ;;
fields="$fields \$U_DATABASES" shell) shell_list |column -t ;;
shell_list | column -t ;;
*) check_args '1' '0' '[FORMAT]'
esac esac

View file

@ -1,9 +1,8 @@
#!/bin/bash #!/bin/bash
# info: list web domain # info: list web domain parameters
# options: USER DOMAIN [FORMAT] # options: USER DOMAIN [FORMAT]
# #
# The function of obtaining the list of domain parameters. This call, just as # The function to obtain web domain parameters.
# all v_list_* calls, supports 3 formats - json, shell and plain.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -18,43 +17,87 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_domain() { json_list() {
i=1
fileds_count=$(echo "$fields" | wc -w)
line=$(grep "DOMAIN='$domain'" $conf)
echo '{' echo '{'
eval $line echo ' "'$DOMAIN'": {
for field in $fields; do "IP": "'$IP'",
eval value=$field "IP6": "'$IP6'",
if [ "$i" -eq 1 ]; then "U_DISK": "'$U_DISK'",
echo -e "\t\"$value\": {" "U_BANDWIDTH": "'$U_BANDWIDTH'",
else "TPL": "'$TPL'",
if [ "$fileds_count" -eq "$i" ]; then "ALIAS": "'$ALIAS'",
echo -e "\t\t\"${field//$/}\": \"$value\"" "STATS": "'$STATS'",
else "STATS_USER": "'$STATS_USER'",
echo -e "\t\t\"${field//$/}\": \"$value\"," "SSL": "'$SSL'",
fi "SSL_HOME": "'$SSL_HOME'",
fi "FTP_USER": "'$FTP_USER'",
(( ++i)) "FTP_PATH": "'$FTP_PATH'",
done "AUTH_USER": "'$AUTH_USER'",
if [ -n "$value" ]; then "BACKEND": "'$BACKEND'",
echo -e ' }' "PROXY": "'$PROXY'",
fi "PROXY_EXT": "'$PROXY_EXT'",
echo -e "}" "DOCUMENT_ROOT": "'$HOMEDIR/$user/web/$domain/public_html'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
echo '}'
} }
# Shell function # SHELL list function
shell_list_domain() { shell_list() {
line=$(grep "DOMAIN='$domain'" $conf) source $VESTA/conf/vesta.conf
eval $line echo "DOMAIN: $DOMAIN"
for field in $fields; do echo "ALIAS: ${ALIAS//,/ }"
eval key="$field" echo "IP: $IP"
if [ -z "$key" ]; then if [ ! -z "$IP6" ]; then
key='NULL' echo "IP6: $IP6"
fi fi
echo "${field//$/}: $key " if [ ! -z "$SSL" ] && [ "$SSL" != 'no' ]; then
done echo "SSL: $SSL / $SSL_HOME"
fi
echo "TEMPLATE: $TPL"
if [ ! -z "$WEB_BACKEND" ]; then
echo "BACKEND: $BACKEND"
fi
if [ ! -z "$PROXY_SYSTEM" ]; then
echo "PROXY: $PROXY"
echo "PROXY EXT: ${PROXY_EXT//,/ }"
fi
if [ ! -z "$STATS" ]; then
echo "STATS: $STATS"
fi
if [ ! -z "$FTP_USER" ]; then
echo "FTP_USER: ${FTP_USER//,/, }"
fi
if [ ! -z "$AUTH_USER" ]; then
echo "HTTP_AUTH: $AUTH_USER"
fi
echo "DISK: $U_DISK"
echo "BW: $U_BANDWIDTH"
echo "SUSPENDED: $SUSPENDED"
echo "TIME: $TIME"
echo "DATE: $DATE"
}
# PLAIN list function
plain_list() {
echo -ne "$DOMAIN\t$IP\t$IP6\t$U_DISK\t$U_BANDWIDTH\t$TPL\t"
echo -ne "$ALIAS\t$STATS\t$STATS_USER\t$SSL\t$SSL_HOME\t"
echo -ne "$FTP_USER\t$FTP_PATH\t$AUTH_USER\t$BACKEND\t$PROXY\t"
echo -e "$PROXY_EXT\t$SUSPENDED\t$TIME\t$DATE"
}
# CSV list function
csv_list() {
echo -n "DOMAIN,IP,IP6,U_DISK,U_BANDWIDTH,TPL,ALIAS,STATS,STATS_USER,SSL,"
echo -n "SSL_HOME,FTP_USER,FTP_PATH,AUTH_USER,BACKEND,PROXY,PROXY_EXT,"
echo "SUSPENDED,TIME,DATE"
echo -n "$DOMAIN,$IP,$IP6,$U_DISK,$U_BANDWIDTH,$TPL,\"$ALIAS\",$STATS"
echo -n "\"$STATS_USER\",$SSL,$SSL_HOME,\"$FTP_USER\",\"$FTP_PATH\","
echo -n "\"$AUTH_USER\",$BACKEND,$PROXY,\"$PROXY_EXT\",$SUSPENDED,$TIME,"
echo "$DATE"
} }
@ -71,23 +114,15 @@ is_object_valid 'web' 'DOMAIN' "$domain"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Parsing domain
conf=$USER_DATA/web.conf eval $(grep "DOMAIN='$domain'" $USER_DATA/web.conf)
# Defining fileds to select # Listing data
fields='$DOMAIN $IP $IP6 $U_DISK $U_BANDWIDTH $TPL $ALIAS $STATS $STATS_USER
$SSL $SSL_HOME $FTP_USER $FTP_PATH $BACKEND $PROXY $PROXY_EXT $AUTH_USER
$DOCUMENT_ROOT $SUSPENDED $TIME $DATE'
# Defining document root
DOCUMENT_ROOT="$HOMEDIR/$user/web/$domain/public_html"
# Listing domains
case $format in case $format in
json) json_list_domain ;; json) json_list ;;
plain) nohead=1; shell_list_domain ;; plain) plain_list ;;
shell) shell_list_domain |column -t;; csv) csv_list ;;
*) check_args '2' '0' 'USER DOMAIN [FORMAT]' shell) shell_list ;;
esac esac

View file

@ -19,14 +19,14 @@ format=${4-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# JSON list function
# Json function json_list() {
json_list_log() {
i=1 i=1
objects=$(echo "$lines" |wc -l)
echo '[' echo '['
for str in $lines; do for str in $lines; do
str=$(echo "$str" |sed -e 's/"/\\"/g') str=$(echo "$str" |sed -e 's/"/\\"/g')
if [ "$i" -lt "$counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$str\"," echo -e "\t\"$str\","
else else
echo -e "\t\"$str\"" echo -e "\t\"$str\""
@ -36,17 +36,29 @@ json_list_log() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_log() { shell_list() {
echo "$lines" echo "$lines"
} }
# PLAIN list function
plain_list() {
echo "$lines"
}
# CSV list function
csv_list() {
echo "LOG"
echo "$lines"
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [LINES] [FORMAT]' check_args '2' "$#" 'USER DOMAIN [LINES] [FORMAT]'
validate_format 'user' 'domain' 'ttl' is_format_valid 'user' 'domain' 'ttl'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain" is_object_valid 'web' 'DOMAIN' "$domain"
@ -63,14 +75,14 @@ else
fi fi
lines=$($read_cmd /var/log/$WEB_SYSTEM/domains/$domain.log) lines=$($read_cmd /var/log/$WEB_SYSTEM/domains/$domain.log)
counter=$(echo "$lines" |wc -l)
IFS=$'\n' IFS=$'\n'
# Listing logs # Listing data
case $format in case $format in
json) json_list_log ;; json) json_list ;;
plain) shell_list_log ;; plain) plain_list ;;
shell) shell_list_log ;; csv) csv_list ;;
shell) shell_list ;;
esac esac

View file

@ -19,14 +19,14 @@ format=${4-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# JSON list function
# Json function json_list() {
json_list_log() {
i=1 i=1
objects=$(echo "$lines" |wc -l)
echo '[' echo '['
for str in $lines; do for str in $lines; do
str=$(echo "$str" |sed -e 's/"/\\"/g') str=$(echo "$str" |sed -e 's/"/\\"/g')
if [ "$i" -lt "$counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$str\"," echo -e "\t\"$str\","
else else
echo -e "\t\"$str\"" echo -e "\t\"$str\""
@ -36,17 +36,29 @@ json_list_log() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_log() { shell_list() {
echo "$lines" echo "$lines"
} }
# PLAIN list function
plain_list() {
echo "$lines"
}
# CSV list function
csv_list() {
echo "LOG"
echo "$lines"
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '2' "$#" 'USER DOMAIN [LINES] [FORMAT]' check_args '2' "$#" 'USER DOMAIN [LINES] [FORMAT]'
validate_format 'user' 'domain' 'ttl' is_format_valid 'user' 'domain' 'ttl'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain" is_object_valid 'web' 'DOMAIN' "$domain"
@ -63,14 +75,14 @@ else
fi fi
lines=$($read_cmd /var/log/$WEB_SYSTEM/domains/$domain.error.log) lines=$($read_cmd /var/log/$WEB_SYSTEM/domains/$domain.error.log)
counter=$(echo "$lines" |wc -l)
IFS=$'\n' IFS=$'\n'
# Listing logs # Listing data
case $format in case $format in
json) json_list_log ;; json) json_list ;;
plain) shell_list_log ;; plain) plain_list ;;
shell) shell_list_log ;; csv) csv_list ;;
shell) shell_list ;;
esac esac

View file

@ -17,19 +17,25 @@ format=${3-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# Json function # JSON list function
json_list_ssl() { json_list() {
i='1' # iterator
echo '{' echo '{'
echo -e "\t\"$domain\": {" echo -e "\t\"$domain\": {"
echo " \"CRT\": \"$crt\"," echo " \"CRT\": \"$crt\","
echo " \"KEY\": \"$key\"," echo " \"KEY\": \"$key\","
echo " \"CA\": \"$ca\"" echo " \"CA\": \"$ca\","
echo " \"SUBJECT\": \"$subj\","
echo " \"ALIASES\": \"$alt_dns\","
echo " \"NOT_BEFORE\": \"$before\","
echo " \"NOT_AFTER\": \"$after\","
echo " \"SIGNATURE\": \"$signature\","
echo " \"PUB_KEY\": \"$pub_key\","
echo " \"ISSUER\": \"$issuer\""
echo -e "\t}\n}" echo -e "\t}\n}"
} }
# Shell function # SHELL list function
shell_list_ssl() { shell_list() {
if [ ! -z "$crt" ]; then if [ ! -z "$crt" ]; then
echo -e "$crt" echo -e "$crt"
fi fi
@ -39,6 +45,50 @@ shell_list_ssl() {
if [ ! -z "$ca" ]; then if [ ! -z "$ca" ]; then
echo -e "\n$ca" echo -e "\n$ca"
fi fi
if [ ! -z "$crt" ]; then
echo
echo
echo "SUBJECT: $subj"
if [ ! -z "$alt_dns" ]; then
echo "ALIASES: ${alt_dns//,/ }"
fi
echo "VALID FROM: $before"
echo "VALID TIL: $after"
echo "SIGNATURE: $signature"
echo "PUB_KEY: $pub_key"
echo "ISSUER: $issuer"
fi
}
# PLAIN list function
plain_list() {
if [ ! -z "$crt" ]; then
echo -e "$crt"
fi
if [ ! -z "$key" ]; then
echo -e "\n$key"
fi
if [ ! -z "$ca" ]; then
echo -e "\n$ca"
fi
if [ ! -z "$crt" ]; then
echo "$subj"
echo "${alt_dns//,/ }"
echo "$before"
echo "$after"
echo "$signature"
echo "$pub_key"
echo "$issuer"
fi
}
# CSV list function
csv_list() {
echo -n "CRT,KEY,CA,SUBJECT,ALIASES,NOT_BEFORE,NOT_AFTER,SIGNATURE,"
echo "PUB_KEY,ISSUER"
echo -n "\"$crt\",\"$key\",\"$ca\",\"$subj\",\"${alt_dns//,/ }\","
echo "\"$before\",\"$after\",\"$signature\",\"$pub_key\",\"$issuer\""
} }
@ -50,11 +100,26 @@ check_args '2' "$#" 'USER DOMAIN [FORMAT]'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
is_object_valid 'web' 'DOMAIN' "$domain" is_object_valid 'web' 'DOMAIN' "$domain"
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Parsing domain SSL certificate
if [ -e "$USER_DATA/ssl/$domain.crt" ]; then if [ -e "$USER_DATA/ssl/$domain.crt" ]; then
crt=$(cat $USER_DATA/ssl/$domain.crt |sed ':a;N;$!ba;s/\n/\\n/g') crt=$(cat $USER_DATA/ssl/$domain.crt |sed ':a;N;$!ba;s/\n/\\n/g')
info=$(openssl x509 -text -in $USER_DATA/ssl/$domain.crt)
subj=$(echo "$info" |grep Subject: |cut -f 2 -d =)
before=$(echo "$info" |grep Before: |sed -e "s/.*Before: //")
after=$(echo "$info" |grep "After :" |sed -e "s/.*After : //")
signature=$(echo "$info" |grep "Algorithm:" |head -n1 )
signature=$(echo "$signature"| sed -e "s/.*Algorithm: //")
pub_key=$(echo "$info" |grep Public-Key: |cut -f2 -d \( | tr -d \))
issuer=$(echo "$info" |grep Issuer: |sed -e "s/.*Issuer: //")
alt_dns=$(echo "$info" |grep DNS |sed -e 's/DNS:/\n/g' |tr -d ',')
alt_dns=$(echo "$alt_dns" |tr -d ' ' |sed -e "/^$/d")
alt_dns=$(echo "$alt_dns" |sed -e ':a;N;$!ba;s/\n/,/g')
fi fi
if [ -e "$USER_DATA/ssl/$domain.key" ]; then if [ -e "$USER_DATA/ssl/$domain.key" ]; then
@ -65,12 +130,12 @@ if [ -e "$USER_DATA/ssl/$domain.ca" ]; then
ca=$(cat $USER_DATA/ssl/$domain.ca |sed ':a;N;$!ba;s/\n/\\n/g') ca=$(cat $USER_DATA/ssl/$domain.ca |sed ':a;N;$!ba;s/\n/\\n/g')
fi fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_ssl ;; json) json_list ;;
plain) nohead=1; shell_list_ssl ;; plain) plain_list ;;
shell) shell_list_ssl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -2,7 +2,7 @@
# info: list web domains # info: list web domains
# options: USER [FORMAT] # options: USER [FORMAT]
# #
# The function of obtaining the list of all user domains. # The function to obtain the list of all user web domains.
#----------------------------------------------------------# #----------------------------------------------------------#
@ -16,13 +16,89 @@ format=${2-shell}
# Includes # Includes
source $VESTA/func/main.sh source $VESTA/func/main.sh
# JSON list function
json_list() {
IFS=$'\n'
i=1
objects=$(grep DOMAIN $USER_DATA/web.conf |wc -l)
echo "{"
while read str; do
eval $str
echo -n ' "'$DOMAIN'": {
"IP": "'$IP'",
"IP6": "'$IP6'",
"U_DISK": "'$U_DISK'",
"U_BANDWIDTH": "'$U_BANDWIDTH'",
"TPL": "'$TPL'",
"ALIAS": "'$ALIAS'",
"STATS": "'$STATS'",
"STATS_USER": "'$STATS_USER'",
"SSL": "'$SSL'",
"SSL_HOME": "'$SSL_HOME'",
"FTP_USER": "'$FTP_USER'",
"FTP_PATH": "'$FTP_PATH'",
"AUTH_USER": "'$AUTH_USER'",
"BACKEND": "'$BACKEND'",
"PROXY": "'$PROXY'",
"PROXY_EXT": "'$PROXY_EXT'",
"SUSPENDED": "'$SUSPENDED'",
"TIME": "'$TIME'",
"DATE": "'$DATE'"
}'
if [ "$i" -lt "$objects" ]; then
echo ','
else
echo
fi
((i++))
done < <(cat $USER_DATA/web.conf)
echo '}'
}
# SHELL list function
shell_list() {
IFS=$'\n'
echo "DOMAIN IP TPL SSL DISK BW SPND DATE"
echo "------ -- --- --- ---- -- ---- ----"
while read str; do
eval $str
echo "$DOMAIN $IP $TPL $SSL $U_DISK $U_BANDWIDTH $SUSPENDED $DATE"
done < <(cat $USER_DATA/web.conf)
}
# PLAIN list function
plain_list() {
IFS=$'\n'
while read str; do
eval $str
echo -ne "$DOMAIN\t$IP\t$IP6\t$U_DISK\t$U_BANDWIDTH\t$TPL\t"
echo -ne "$ALIAS\t$STATS\t$STATS_USER\t$SSL\t$SSL_HOME\t"
echo -ne "$FTP_USER\t$FTP_PATH\t$AUTH_USER\t$BACKEND\t$PROXY\t"
echo -e "$PROXY_EXT\t$SUSPENDED\t$TIME\t$DATE"
done < <(cat $USER_DATA/web.conf)
}
# CSV list function
csv_list() {
IFS=$'\n'
echo -n "DOMAIN,IP,IP6,U_DISK,U_BANDWIDTH,TPL,ALIAS,STATS,STATS_USER,"
echo -n "SSL,SSL_HOME,FTP_USER,FTP_PATH,AUTH_USER,BACKEND,PROXY,"
echo "PROXY_EXT,SUSPENDED,TIME,DATE"
while read str; do
eval $str
echo -n "$DOMAIN,$IP,$IP6,$U_DISK,$U_BANDWIDTH,$TPL,"
echo -n "\"$ALIAS\",$STATS,\"$STATS_USER\",$SSL,$SSL_HOME,"
echo -n "\"$FTP_USER\",\"$FTP_PATH\",\"$AUTH_USER\",$BACKEND,$PROXY,"
echo "\"$PROXY_EXT\",$SUSPENDED,$TIME,$DATE"
done < <(cat $USER_DATA/web.conf)
}
#----------------------------------------------------------# #----------------------------------------------------------#
# Verifications # # Verifications #
#----------------------------------------------------------# #----------------------------------------------------------#
check_args '1' "$#" 'USER [FORMAT]' check_args '1' "$#" 'USER [FORMAT]'
validate_format 'user'
is_object_valid 'user' 'USER' "$user" is_object_valid 'user' 'USER' "$user"
@ -30,21 +106,12 @@ is_object_valid 'user' 'USER' "$user"
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Defining config # Listing data
conf=$USER_DATA/web.conf
# Defining fileds to select
fields="\$DOMAIN \$IP \$IP6 \$U_DISK \$U_BANDWIDTH \$TPL \$ALIAS \$STATS"
fields="$fields \$STATS_USER \$SSL \$SSL_HOME \$FTP_USER \$FTP_PATH \$AUTH_USER"
fields="$fields \$BACKEND \$PROXY \$PROXY_EXT \$SUSPENDED \$TIME \$DATE"
# Listing domains
case $format in case $format in
json) json_list ;; json) json_list ;;
plain) nohead=1; shell_list ;; plain) plain_list ;;
shell) fields='$DOMAIN $IP $U_DISK $U_BANDWIDTH $TPL $DATE'; csv) csv_list ;;
shell_list | column -t ;; shell) shell_list |column -t ;;
*) check_args '1' '0' 'USER [FORMAT]'
esac esac

View file

@ -16,32 +16,43 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Json function # JSON list function
json_list_st() { json_list() {
stats=$(echo "${STATS_SYSTEM//,/ } none") objects=$(echo "$stats" | wc -w)
st_counter=$(echo "$stats" | wc -w)
i=1 i=1
echo '[' echo '['
for st in $stats; do for str in $stats; do
if [ "$i" -lt "$st_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$st\"," echo -e "\t\"$str\","
else else
echo -e "\t\"$st\"" echo -e "\t\"$str\""
fi fi
(( ++i)) (( ++i))
done done
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_st() { shell_list() {
stats=$(echo "none ${STATS_SYSTEM//,/ }") echo "PARSER"
if [ -z "$nohead" ]; then echo "------"
echo "STATS" for parser in $stats; do
echo "----------" echo "$parser"
fi done
for st in $stats; do }
echo "$st"
# PLAIN list function
plain_list() {
for parser in $stats; do
echo "$parser"
done
}
# CSV list function
csv_list() {
echo "PARSER"
for parser in $stats; do
echo "$parser"
done done
} }
@ -50,12 +61,15 @@ shell_list_st() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Parsing stats system
stats=$(echo "none ${STATS_SYSTEM//,/ }")
# Listing data
case $format in case $format in
json) json_list_st ;; json) json_list ;;
plain) nohead=1; shell_list_st ;; plain) plain_list ;;
shell) shell_list_st ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' ;; shell) shell_list ;;
esac esac

View file

@ -16,15 +16,13 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Json function # JSON list function
json_list_wtpl() { json_list() {
templates=$(ls -v $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/) objects=$(echo "$templates" |wc -w)
templates=$(echo "$templates" | grep '\.tpl' | sed 's/\.tpl$//')
t_counter=$(echo "$templates" | wc -w)
i=1 i=1
echo '[' echo '['
for template in $templates; do for template in $templates; do
if [ "$i" -lt "$t_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$template\"," echo -e "\t\"$template\","
else else
echo -e "\t\"$template\"" echo -e "\t\"$template\""
@ -34,31 +32,45 @@ json_list_wtpl() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_wtpl() { shell_list() {
templates=$(ls -v $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/) echo "TEMPLATE"
templates=$(echo "$templates" | grep '\.tpl' | sed 's/\.tpl$//') echo "--------"
if [ -z "$nohead" ]; then for template in $templates; do
echo "Templates" echo "$template"
echo "----------" done
fi }
# PLAIN list function
plain_list() {
for template in $templates; do
echo "$template"
done
}
# CSV list function
csv_list() {
echo "TEMPLATE"
for template in $templates; do for template in $templates; do
echo "$template" echo "$template"
done done
} }
#----------------------------------------------------------# #----------------------------------------------------------#
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Listing domains # Parsing templates
templates=$(ls -v $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/)
templates=$(echo "$templates" |grep '\.tpl' |sed 's/\.tpl$//')
# Listing data
case $format in case $format in
json) json_list_wtpl ;; json) json_list ;;
plain) nohead=1; shell_list_wtpl ;; plain) plain_list ;;
shell) shell_list_wtpl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,13 +16,13 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Json function # JSON list function
json_list_wtpl() { json_list() {
t_counter=$(echo "$templates" | wc -w)
i=1 i=1
objects=$(echo "$templates" |wc -w)
echo '[' echo '['
for template in $templates; do for template in $templates; do
if [ "$i" -lt "$t_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$template\"," echo -e "\t\"$template\","
else else
echo -e "\t\"$template\"" echo -e "\t\"$template\""
@ -32,12 +32,25 @@ json_list_wtpl() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_wtpl() { shell_list() {
if [ -z "$nohead" ]; then echo "TEMPLATE"
echo "Templates" echo "--------"
echo "----------" for template in $templates; do
fi echo "$template"
done
}
# PLAIN list function
plain_list() {
for template in $templates; do
echo "$template"
done
}
# CSV list function
csv_list() {
echo "TEMPLATE"
for template in $templates; do for template in $templates; do
echo "$template" echo "$template"
done done
@ -48,21 +61,20 @@ shell_list_wtpl() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Proxy templates # Parsing backend templates
if [ -z "$WEB_BACKEND" ]; then if [ ! -z "$WEB_BACKEND" ]; then
exit
fi
templates=$(ls -t $WEBTPL/$WEB_BACKEND |\ templates=$(ls -t $WEBTPL/$WEB_BACKEND |\
cut -f1 -d . |\ cut -f1 -d . |\
grep -v proxy_ip |\ grep -v proxy_ip |\
sort -u ) sort -u )
fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_wtpl ;; json) json_list ;;
plain) nohead=1; shell_list_wtpl ;; plain) plain_list ;;
shell) shell_list_wtpl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac

View file

@ -16,13 +16,13 @@ format=${1-shell}
source $VESTA/func/main.sh source $VESTA/func/main.sh
source $VESTA/conf/vesta.conf source $VESTA/conf/vesta.conf
# Json function # JSON list function
json_list_wtpl() { json_list() {
t_counter=$(echo "$templates" | wc -w) objects=$(echo "$templates" |wc -w)
i=1 i=1
echo '[' echo '['
for template in $templates; do for template in $templates; do
if [ "$i" -lt "$t_counter" ]; then if [ "$i" -lt "$objects" ]; then
echo -e "\t\"$template\"," echo -e "\t\"$template\","
else else
echo -e "\t\"$template\"" echo -e "\t\"$template\""
@ -32,12 +32,25 @@ json_list_wtpl() {
echo "]" echo "]"
} }
# Shell function # SHELL list function
shell_list_wtpl() { shell_list() {
if [ -z "$nohead" ]; then echo "TEMPLATE"
echo "Templates" echo "--------"
echo "----------" for template in $templates; do
fi echo "$template"
done
}
# PLAIN list function
plain_list() {
for template in $templates; do
echo "$template"
done
}
# CSV list function
csv_list() {
echo "TEMPLATE"
for template in $templates; do for template in $templates; do
echo "$template" echo "$template"
done done
@ -48,21 +61,20 @@ shell_list_wtpl() {
# Action # # Action #
#----------------------------------------------------------# #----------------------------------------------------------#
# Proxy templates # Parsing proxy templates
if [ -z "$PROXY_SYSTEM" ]; then if [ ! -z "$PROXY_SYSTEM" ]; then
exit
fi
templates=$(ls -t $WEBTPL/$PROXY_SYSTEM |\ templates=$(ls -t $WEBTPL/$PROXY_SYSTEM |\
cut -f1 -d . |\ cut -f1 -d . |\
grep -v proxy_ip |\ grep -v proxy_ip |\
sort -u ) sort -u )
fi
# Listing domains # Listing data
case $format in case $format in
json) json_list_wtpl ;; json) json_list ;;
plain) nohead=1; shell_list_wtpl ;; plain) plain_list ;;
shell) shell_list_wtpl ;; csv) csv_list ;;
*) check_args '1' '0' '[FORMAT]' shell) shell_list ;;
esac esac