#!/bin/bash
# info: list system ips
# options: [FORMAT]
#
# The function for obtaining the list of system ip's.


#----------------------------------------------------------#
#                    Variable&Function                     #
#----------------------------------------------------------#

# Argument definition
format=${1-shell}

# Includes
source $VESTA/func/main.sh

# Json function
json_list_ips() {
    echo '{'
    ip_list=$(ls --sort=time $VESTA/data/ips/)
    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
        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
    done
    if [ -n "$data" ]; then
        echo -e '        }'
    fi
    echo -e '}'
}

# Shell function
shell_list_ips() {
    ip_list=$(ls $VESTA/data/ips/)
    if [ -z "$nohead" ]; then
        echo "${fields//$/}"
        for a in $fields; do
            echo -e "--------- \c"
        done
        echo
    fi

    for IP in $ip_list; do
        source $VESTA/data/ips/$IP
        for field in $fields; do
            eval value=$field
            if [ -z "$value" ]; then
                value='NULL'
            fi
            echo -n "$value "
        done
        echo
    done
}


#----------------------------------------------------------#
#                       Action                             #
#----------------------------------------------------------#

# Defining fileds to select
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 
    json)   json_list_ips ;;
    plain)  nohead=1; shell_list_ips ;;
    shell)  fields='$IP $NETMASK $NAT $OWNER $U_WEB_DOMAINS';
            shell_list_ips | column -t ;;
    *)      check_args '1' '0' '[FORMAT]'
esac


#----------------------------------------------------------#
#                       Vesta                              #
#----------------------------------------------------------#

exit
