From 61288a23551f7458da88ec527e28bc9279763541 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Tue, 17 Feb 2015 18:25:50 +0200 Subject: [PATCH] unlimitted hosting packages --- bin/v-add-user-package | 43 ++++++++++++---- bin/v-change-user-package | 68 +++++++++++++++++++++----- bin/v-list-user-packages | 4 +- func/main.sh | 4 +- web/js/app.js | 4 +- web/templates/admin/list_packages.html | 26 +++++----- 6 files changed, 108 insertions(+), 41 deletions(-) diff --git a/bin/v-add-user-package b/bin/v-add-user-package index e4f7883b..ea82411c 100755 --- a/bin/v-add-user-package +++ b/bin/v-add-user-package @@ -29,16 +29,39 @@ is_package_new() { is_package_consistent() { source $pkg_dir/$package.pkg - validate_format_int $WEB_DOMAINS 'WEB_DOMAINS' - validate_format_int $WEB_ALIASES 'WEB_ALIASES' - validate_format_int $DNS_DOMAINS 'DNS_DOMAINS' - validate_format_int $DNS_RECORDS 'DNS_RECORDS' - validate_format_int $MAIL_DOMAINS 'MAIL_DOMAINS' - validate_format_int $MAIL_ACCOUNTS 'MAIL_ACCOUNTS' - validate_format_int $DATABASES 'DATABASES' - validate_format_int $CRON_JOBS 'CRON_JOBS' - validate_format_int $DISK_QUOTA 'DISK_QUOTA' - validate_format_int $BACKUPS 'BACKUPS' + if [ "$WEB_DOMAINS" != 'unlimited' ]; then + validate_format_int $WEB_DOMAINS 'WEB_DOMAINS' + fi + if [ "$WEB_ALIASES" != 'unlimited' ]; then + validate_format_int $WEB_ALIASES 'WEB_ALIASES' + fi + if [ "$DNS_DOMAINS" != 'unlimited' ]; then + validate_format_int $DNS_DOMAINS 'DNS_DOMAINS' + fi + if [ "$DNS_RECORDS" != 'unlimited' ]; then + validate_format_int $DNS_RECORDS 'DNS_RECORDS' + fi + if [ "$MAIL_DOMAINS" != 'unlimited' ]; then + validate_format_int $MAIL_DOMAINS 'MAIL_DOMAINS' + fi + if [ "$MAIL_ACCOUNTS" != 'unlimited' ]; then + validate_format_int $MAIL_ACCOUNTS 'MAIL_ACCOUNTS' + fi + if [ "$DATABASES" != 'unlimited' ]; then + validate_format_int $DATABASES 'DATABASES' + fi + if [ "$CRON_JOBS" != 'unlimited' ]; then + validate_format_int $CRON_JOBS 'CRON_JOBS' + fi + if [ "$DISK_QUOTA" != 'unlimited' ]; then + validate_format_int $DISK_QUOTA 'DISK_QUOTA' + fi + if [ "$BANDWIDTH" != 'unlimited' ]; then + validate_format_int $BANDWIDTH 'BANDWIDTH' + fi + if [ "$BACKUPS" != 'unlimited' ]; then + validate_format_int $BACKUPS 'BACKUPS' + fi validate_format_shell $SHELL } diff --git a/bin/v-change-user-package b/bin/v-change-user-package index 1e9a046d..d9b0b756 100755 --- a/bin/v-change-user-package +++ b/bin/v-change-user-package @@ -19,7 +19,7 @@ source $VESTA/func/main.sh source $VESTA/conf/vesta.conf is_package_avalable() { - # Parsing user data + usr_data=$(cat $USER_DATA/user.conf) IFS=$'\n' for key in $usr_data; do @@ -37,17 +37,55 @@ is_package_avalable() { grep -v DATE) eval $pkg_data - # Comparing user data with package - if [[ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ]] ||\ - [[ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ]] ||\ - [[ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ]] ||\ - [[ "$DATABASES" -lt "$U_DATABASES" ]] ||\ - [[ "$CRON_JOBS" -lt "$U_CRON_JOBS" ]] ||\ - [[ "$DISK_QUOTA" -lt "$U_DISK" ]] ||\ - [[ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]]; then - echo "Error: Package not cover current usage" - log_event "$E_LIMIT" "$EVENT" - exit $E_LIMIT + # Checking usage agains package limits + if [ "$WEB_DOMAINS" != 'unlimited' ]; then + if [ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ]; then + echo "Error: Package doesn't cover WEB_DOMAIN usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$DNS_DOMAINS" ! = 'unlimited' ]; then + if [ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ]; then + echo "Error: Package doesn't cover DNS_DOMAIN usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$MAIL_DOMAINS" != 'unlimited' ]; then + if [ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ]; then + echo "Error: Package doesn't cover MAIL_DOMAIN usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$DATABASES" != 'unlimited' ]; then + if [ "$DATABASES" -lt "$U_DATABASES" ]; then + echo "Error: Package doesn't cover DATABASE usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$CRON_JOBS" != 'unlimited' ]; then + if [ "$CRON_JOBS" -lt "$U_CRON_JOBS" ]; then + echo "Error: Package doesn't cover CRON usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$DISK_QUOTA" != 'unlimited' ]; then + if [ "$DISK_QUOTA" -lt "$U_DISK" ]; then + echo "Error: Package doesn't cover DISK usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi + fi + if [ "$BANDWIDTH" != 'unlimited' ]; then + if [ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]; then + echo "Error: Package doesn't cover BANDWIDTH usage" + log_event "$E_LIMIT" "$EVENT" + exit $E_LIMIT + fi fi } @@ -145,6 +183,12 @@ if [ -x "$VESTA/data/packages/$package.sh" ]; then $VESTA/data/packages/$package.sh "$user" "$CONTACT" "$FNAME" "$LNAME" fi +# Update disk quota +source $VESTA/conf/vesta.conf +if [ "$DISK_QUOTA" = 'yes' ]; then + $BIN/v-update-user-quota $user +fi + #----------------------------------------------------------# # Vesta # diff --git a/bin/v-list-user-packages b/bin/v-list-user-packages index 17f7a1c3..eefac443 100755 --- a/bin/v-list-user-packages +++ b/bin/v-list-user-packages @@ -19,7 +19,7 @@ source $VESTA/func/main.sh json_list_pkgs() { echo '{' fileds_count=$(echo "$fields" | wc -w) - for package in $(ls -t $VESTA/data/packages); do + for package in $(ls -t $VESTA/data/packages |grep .pkg); do PACKAGE=${package/.pkg/} pkg_data=$(cat $VESTA/data/packages/$package) eval $pkg_data @@ -51,7 +51,7 @@ json_list_pkgs() { # Shell fnction shell_list_pkgs() { - for package in $(ls -t $VESTA/data/packages); do + for package in $(ls -t $VESTA/data/packages |grep .pkg); do PACKAGE=${package/.pkg/} pkg_descr=$(cat $VESTA/data/packages/$package) eval $pkg_descr diff --git a/func/main.sh b/func/main.sh index 8d309f36..9cfdc608 100644 --- a/func/main.sh +++ b/func/main.sh @@ -113,8 +113,8 @@ is_package_full() { CRON_JOBS) used=$(wc -l $USER_DATA/cron.conf |cut -f1 -d \ );; esac limit=$(grep "^$1=" $USER_DATA/user.conf | cut -f 2 -d \' ) - if [ "$used" -ge "$limit" ]; then - echo "Error: Limit reached / Upgrade package" + if [ "$limit" != 'unlimited' ] && [ "$used" -ge "$limit" ]; then + echo "Error: Limit is reached, please upgrade hosting package" log_event "$E_LIMIT" "$EVENT" exit $E_LIMIT fi diff --git a/web/js/app.js b/web/js/app.js index 4b4dfa18..3d95304e 100644 --- a/web/js/app.js +++ b/web/js/app.js @@ -710,8 +710,8 @@ var App = { Core: {}, // CONSTANT VALUES Constants: { - UNLIM_VALUE: 'Unlim', - UNLIM_TRANSLATED_VALUE: 'Unlim' + UNLIM_VALUE: 'unlimited', + UNLIM_TRANSLATED_VALUE: 'unlimited' }, // Actions. More widly used funcs Actions: { diff --git a/web/templates/admin/list_packages.html b/web/templates/admin/list_packages.html index 05ca162b..512d03d0 100644 --- a/web/templates/admin/list_packages.html +++ b/web/templates/admin/list_packages.html @@ -69,27 +69,27 @@ - + - + - + - + - + - +
:
:
:
:
:
:
@@ -97,34 +97,34 @@ - + - + - + - + - + - +
:
:
:
:
:
:
- +
:
: