add user package

This commit is contained in:
Serghey Rodin 2012-07-30 22:48:54 +03:00
commit 9a1fde8cb3
12 changed files with 470 additions and 11 deletions

View file

@ -55,10 +55,10 @@ is_package_valid "$package"
#----------------------------------------------------------#
# Parsing package data
package_data=$(cat $VESTA/data/packages/$package.pkg)
pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |grep -v DATE)
# Checking shell
shell_conf=$(echo "$package_data" | grep 'SHELL' | cut -f 2 -d \')
shell_conf=$(echo "$pkg_data" | grep 'SHELL' | cut -f 2 -d \')
shell=$(/usr/bin/chsh --list-shells | grep -w "$shell_conf" |head -n1)
# Adding user
@ -98,7 +98,7 @@ chmod -R a+x $HOMEDIR/$user
# Checking quota
if [ ! -z "$DISK_QUOTA" ] && [ "$DISK_QUOTA" != 'no' ]; then
DISK_QUOTA=$(echo "$package_data" | grep 'DISK_QUOTA' | cut -f 2 -d \')
DISK_QUOTA=$(echo "$pkg_data" | grep 'DISK_QUOTA' | cut -f 2 -d \')
#$BIN/v_add_user_quota "$user" "$DISK_QUOTA"
fi
@ -169,7 +169,7 @@ fi
echo "FNAME='$fname'
LNAME='$lname'
PACKAGE='$package'
$package_data
$pkg_data
CONTACT='$email'
CRON_REPORTS='yes'
MD5='$(awk -v user=$user -F : 'user == $1 {print $2}' /etc/shadow)'

74
bin/v_add_user_package Executable file
View file

@ -0,0 +1,74 @@
#!/bin/bash
# info: adding user package
# options: pkg_dir package [rewrite]
#
# The function adds new user package to the system.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
pkg_dir=$1
package=$2
rewrite=$3
# Includes
source $VESTA/conf/vesta.conf
source $VESTA/func/main.sh
# Functions
is_package_new() {
if [ -e "$VESTA/data/packages/$package.pkg" ]; then
echo "Error: package $package already exists."
log_event "$E_EXISTS" "$EVENT"
exit $E_EXISTS
fi
}
is_package_consistent() {
source $pkg_dir/$package.pkg
validate_format_int $WEB_DOMAINS
validate_format_int $WEB_ALIASES
validate_format_int $DNS_DOMAINS
validate_format_int $DNS_RECORDS
validate_format_int $MAIL_DOMAINS
validate_format_int $MAIL_ACCOUNTS
validate_format_int $DATABASES
validate_format_int $CRON_JOBS
validate_format_int $DISK_QUOTA
validate_format_int $BACKUPS
validate_format_shell $SHELL
}
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
check_args '2' "$#" 'pkg_dir package' 'rewrite'
validate_format 'pkg_dir' 'package'
if [ "$rewrite" != 'yes' ]; then
is_package_new
fi
is_package_valid "$pkg_dir"
is_package_consistent
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
cp -f $pkg_dir/$package.pkg $VESTA/data/packages/
chmod 644 $VESTA/data/packages/$package.pkg
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
# Logging
log_event "$OK" "$EVENT"
exit

View file

@ -32,7 +32,8 @@ is_package_avalable() {
DISK_QUOTA='0'
BANDWIDTH='0'
pkg_data=$(cat $VESTA/data/packages/$package.pkg)
pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |\
grep -v DATE)
eval $pkg_data
# Comparing user data with package

92
bin/v_list_user_package Executable file
View file

@ -0,0 +1,92 @@
#!/bin/bash
# info: list user package
# options: package [format]
#
# The function for getting the list of system ip parameters.
#----------------------------------------------------------#
# Variable&Function #
#----------------------------------------------------------#
# Argument defenition
package=$1
PACKAGE=$package
format=${2-shell}
# Includes
source $VESTA/func/main.sh
# Json function
json_list_package() {
i=1
fileds_count=$(echo "$fields" | wc -w)
pkg_data=$(cat $VESTA/data/packages/$PACKAGE.pkg)
echo '{'
eval $pkg_data
for field in $fields; do
eval value=$field
if [ $i -eq 1 ]; then
echo -e "\t\"$value\": {"
else
if [ $fileds_count -eq $i ]; then
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
else
echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
fi
fi
(( ++i))
done
if [ -n "$value" ]; then
echo -e ' }'
fi
echo -e '}'
}
# Shell function
shell_list_package() {
line=$(cat $VESTA/data/packages/$PACKAGE.pkg)
eval $line
for field in $fields; do
eval key="$field"
if [ -z "$key" ]; then
key='NULL'
fi
echo "${field//$/}: $key "
done
}
#----------------------------------------------------------#
# Verifications #
#----------------------------------------------------------#
# Checking args
check_args '1' "$#" 'package [format]'
validate_format 'package'
is_package_valid
#----------------------------------------------------------#
# Action #
#----------------------------------------------------------#
# Defining fileds to select
fields='$PACKAGE $TEMPLATE $WEB_DOMAINS $WEB_ALIASES $DNS_DOMAINS $DNS_RECORDS
$MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES $CRON_JOBS $DISK_QUOTA $BANDWIDTH
$NS $SHELL $BACKUPS $TIME $DATE'
# Listing ip
case $format in
json) json_list_package ;;
plain) shell_list_package ;;
shell) shell_list_package | column -t ;;
*) check_args '1' '0' 'ip [format]'
esac
#----------------------------------------------------------#
# Vesta #
#----------------------------------------------------------#
exit