#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

_virt="$( systemd-detect-virt )"

_vnstat_ver="###VNSTAT_VER###"

MONTHS=("n/a" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December" )

if [ "${_virt}" = "openvz" ] ; then
    DEV="venet0"
elif [ "${_virt}" = "lxc" ] ; then
    DEV="eth0"
else
    exit 0
fi

if [ "${_vnstat_ver}" = "1" ] ; then
    while read -r _line ; do
        read -ra _arr <<< "${_line}"
        _m_no="${_arr[1]}"
        echo "${_arr[0]} ${MONTHS[${_m_no}]} ${_arr[2]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[2]}" ) ${_arr[3]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[3]}" ) ${_arr[4]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[4]}" )"
    done < <( vnstat -m -i "${DEV}" --json m \
                  | jq -r -c \
                      '.interfaces[]
                        | .traffic.months[]
                        | (.date.year|tostring)
                              + " " + (.date.month|tostring)
                              + " " + (((.rx + .tx)*1024)|tostring)
                              + " " + ((.tx*1024)|tostring)
                              + " " + ((.rx*1024)|tostring)' \
                  | tail -13 \
                  | sort -r -n -k 1 -k 2 \
                  | sed '1d' ) \
           > "/var/local/stats/vnstat-12-months"
elif [ "${_vnstat_ver}" = "2" ] ; then
    while read -r _line ; do
        read -ra _arr <<< "${_line}"
        _m_no="${_arr[1]}"
        echo "${_arr[0]} ${MONTHS[${_m_no}]} ${_arr[2]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[2]}" ) ${_arr[3]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[3]}" ) ${_arr[4]} $( \
                    numfmt --round=down --to=iec --format="%.2f" "${_arr[4]}" )"
    done < <( vnstat -m -i "${DEV}" --json m \
                  | jq -r -c \
                      '.interfaces[]
                        | .traffic.month[]
                        | (.date.year|tostring)
                              + " " + (.date.month|tostring)
                              + " " + ((.rx + .tx)|tostring)
                              + " " + (.tx|tostring)
                              + " " + (.rx|tostring)' \
                  | tail -13 \
                  | sort -r -n -k 1 -k 2 \
                  | sed '1d' ) \
           > "/var/local/stats/vnstat-12-months"
fi

exit 0
