diff --git a/bin/v-acknowledge-user-notification b/bin/v-acknowledge-user-notification new file mode 100755 index 00000000..16a40e55 --- /dev/null +++ b/bin/v-acknowledge-user-notification @@ -0,0 +1,66 @@ +#!/bin/bash +# info: update user notification +# options: USER NOTIFICATION +# +# The function updates user notification. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user=$1 +nid=$2 + +# Includes +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +check_args '2' "$#" 'USER NOTIFICATION' +validate_format 'user' 'nid' +is_object_valid 'user' 'USER' "$user" + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Updating notification +update_object_value 'notifications' 'NID' "$nid" '$ACK' 'yes' 2>/dev/null + +# Checking last notification +if [ -e "$USER_DATA/notifications.conf" ]; then + if [ -z "$(grep NID= $USER_DATA/notifications.conf)" ]; then + notice='no' + fi + if [ -z "$(grep "ACK='no'" $USER_DATA/notifications.conf)" ]; then + notice='no' + fi +else + notice='no' +fi + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Updating notification counter +if [ "$notice" = 'no' ]; then + if [ -z "$(grep NOTIFICATIONS $USER_DATA/user.conf)" ]; then + sed -i "s/^TIME/NOTIFICATIONS='no'\nTIME/g" $USER_DATA/user.conf + else + update_user_value "$user" '$NOTIFICATIONS' "no" + fi +fi + +# Logging +log_event "$OK" "$EVENT" + +exit diff --git a/bin/v-add-user b/bin/v-add-user index 06ae6aac..ba250ccb 100755 --- a/bin/v-add-user +++ b/bin/v-add-user @@ -180,6 +180,7 @@ U_DATABASES='0' U_CRON_JOBS='0' U_BACKUPS='0' LANGUAGE='' +NOTIFICATIONS='no' TIME='$TIME' DATE='$DATE'" > $USER_DATA/user.conf chmod 660 $USER_DATA/user.conf diff --git a/bin/v-add-user-notification b/bin/v-add-user-notification new file mode 100755 index 00000000..7a9146b9 --- /dev/null +++ b/bin/v-add-user-notification @@ -0,0 +1,71 @@ +#!/bin/bash +# info: add user notification +# options: USER TOPIC NOTICE [TYPE] +# +# The function adds user notification. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user=$1 +topic=$(echo $2 |sed "s/'/%quote%/g") +notice=$(echo $3 |sed "s/'/%quote%/g") +type=$4 + +# Includes +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +check_args '2' "$#" 'USER TOPIC NOTICE [TYPE]' +validate_format 'user' 'topic' 'notice' +is_object_valid 'user' 'USER' "$user" + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Defining notification id +if [ -e "$USER_DATA/notifications.conf" ]; then + nid=$(grep "NID=" $USER_DATA/notifications.conf |cut -f 2 -d \') + nid=$(echo "$nid" |sort -n |tail -n1) + if [ ! -z "$nid" ]; then + nid="$((nid +1))" + else + nid=1 + fi +else + nid=1 +fi + +# Concatenating string +str="NID='$nid' TOPIC='$topic' NOTICE='$notice' TYPE='$type'" +str="$str ACK='no' TIME='$TIME' DATE='$DATE'" + +# Adding to config +echo "$str" >> $USER_DATA/notifications.conf + +# Changing permissions +chmod 660 $USER_DATA/notifications.conf + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Updating notification counter +if [ -z "$(grep NOTIFICATIONS $USER_DATA/user.conf)" ]; then + sed -i "s/^TIME/NOTIFICATIONS='yes'\nTIME/g" $USER_DATA/user.conf +else + update_user_value "$user" '$NOTIFICATIONS' "yes" +fi + +exit diff --git a/bin/v-change-user-package b/bin/v-change-user-package index d9b0b756..bfa91bcb 100755 --- a/bin/v-change-user-package +++ b/bin/v-change-user-package @@ -148,6 +148,7 @@ U_DATABASES='$U_DATABASES' U_CRON_JOBS='$U_CRON_JOBS' U_BACKUPS='$U_BACKUPS' LANGUAGE='$LANGUAGE' +NOTIFICATIONS='$NOTIFICATIONS' TIME='$TIME' DATE='$DATE'" > $USER_DATA/user.conf } diff --git a/bin/v-delete-user-notification b/bin/v-delete-user-notification new file mode 100755 index 00000000..c0246f89 --- /dev/null +++ b/bin/v-delete-user-notification @@ -0,0 +1,66 @@ +#!/bin/bash +# info: delete user notification +# options: USER NOTIFICATION +# +# The function deletes user notification. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user=$1 +nid=$2 + +# Includes +source $VESTA/func/main.sh +source $VESTA/conf/vesta.conf + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +check_args '2' "$#" 'USER NOTIFICATION' +validate_format 'user' 'nid' +is_object_valid 'user' 'USER' "$user" + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Deleting notification +sed -i "/NID='$nid' /d" $USER_DATA/notifications.conf 2>/dev/null + +# Checking last notification +if [ -e "$USER_DATA/notifications.conf" ]; then + if [ -z "$(grep NID= $USER_DATA/notifications.conf)" ]; then + notice='no' + fi + if [ -z "$(grep "ACK='no'" $USER_DATA/notifications.conf)" ]; then + notice='no' + fi +else + notice='no' +fi + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Updating notification counter +if [ "$notice" = 'no' ]; then + if [ -z "$(grep NOTIFICATIONS $USER_DATA/user.conf)" ]; then + sed -i "s/^TIME/NOTIFICATIONS='no'\nTIME/g" $USER_DATA/user.conf + else + update_user_value "$user" '$NOTIFICATIONS' "no" + fi +fi + +# Logging +log_event "$OK" "$EVENT" + +exit diff --git a/bin/v-list-user b/bin/v-list-user index b1cb64e5..da4e96fd 100755 --- a/bin/v-list-user +++ b/bin/v-list-user @@ -82,7 +82,7 @@ fields='$USER $FNAME $LNAME $PACKAGE $WEB_TEMPLATE $BACKEND_TEMPLATE $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 $TIME $DATE' + $U_CRON_JOBS $U_BACKUPS $LANGUAGE $HOME $NOTIFICATIONS $TIME $DATE' # Listing user case $format in diff --git a/bin/v-list-user-notifications b/bin/v-list-user-notifications new file mode 100755 index 00000000..160cf815 --- /dev/null +++ b/bin/v-list-user-notifications @@ -0,0 +1,97 @@ +#!/bin/bash +# info: list user notifications +# options: USER [FORMAT] +# +# The function for getting the list notifications + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user=$1 +format=${2-shell} + +# Includes +source $VESTA/func/main.sh + +# Json function +json_list_notifications() { + echo '{' + fileds_count=$(echo $fields| wc -w ) + while read line; do + eval $line + if [ -n "$data" ]; then + echo -e ' },' + fi + i=1 + IFS=' ' + for field in $fields; do + eval value=\"$field\" + value=$(echo "$value"|sed -e 's/"/\\"/g' -e "s/%quote%/'/g") + 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 < $conf + if [ -n "$data" ]; then + echo -e ' }' + fi + echo -e '}' +} + +# Shell function +shell_list_notifications() { + while read line ; do + eval $line + echo "$TOPIC" |sed -e "s/%quote%/'/g" + echo "$NOTICE" |sed -e "s/%quote%/'/g" + echo "$DATE $TIME" + echo "--" + echo + done < $conf +} + + +#----------------------------------------------------------# +# Verifications # +#----------------------------------------------------------# + +# Checking args +check_args '1' "$#" 'USER [FORMAT]' +validate_format 'user' +is_object_valid 'user' 'USER' "$user" + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Defining fileds to select +conf=$USER_DATA/notifications.conf +fields='$NID $TOPIC $NOTICE $TYPE $ACK $TIME $DATE' + +# Listing favourites +case $format in + json) json_list_notifications ;; + plain) shell_list_notifications ;; + shell) shell_list_notifications ;; + *) check_args '1' '0' 'USER [FORMAT]' +esac + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +exit