You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hestiacp/bin/v-list-apis

66 lines
1.5 KiB

#!/bin/bash
# info: list available APIs
# options: [FORMAT]
#
# example: v-list-apis json
#----------------------------------------------------------#
# Variables & Functions #
#----------------------------------------------------------#
# Argument definition
format="${1:-shell}"
# Includes
# shellcheck source=/etc/hestiacp/hestia.conf
source /etc/hestiacp/hestia.conf
# shellcheck source=/usr/local/hestia/func/main.sh
source $HESTIA/func/main.sh
# load config file
source_conf "$HESTIA/conf/hestia.conf"
# JSON list function
json_list() {
echo '{'
local quote COMMANDS_ARR
for api in $HESTIA/data/api/*; do
api="$(basename -- "$api")"
source_conf $HESTIA/data/api/$api
COMMANDS_ARR='[]'
if [[ -n "$COMMANDS" ]]; then
COMMANDS_ARR="[\"$(echo "$COMMANDS" | sed -E 's|,|", "|g')\"]"
fi
echo -en "$quote"
echo -n ' "'$api'": {"COMMANDS": '${COMMANDS_ARR}', "ROLE": "'${ROLE}'"}'
quote=",\n"
done
echo -e '\n}'
}
# SHELL list function
shell_list() {
list="API\tROLE\tCOMMANDS\n"
list+="---\t----\t--------\n"
for api in $HESTIA/data/api/*; do
api="$(basename -- "$api")"
source_conf $HESTIA/data/api/$api
list+="${api}\t${ROLE}\t${COMMANDS}\n"
done
echo -e "$list" | column -t -s " "
}
# Listing data
case $format in
json) json_list ;;
shell) shell_list ;;
esac
#----------------------------------------------------------#
# Hestia #
#----------------------------------------------------------#
exit