Files
VestaCP/func/cron.func

150 lines
3.5 KiB
Plaintext
Raw Normal View History

2011-06-14 00:22:25 +03:00
get_next_cron_string() {
# Parsing config
2011-08-14 15:21:26 +03:00
curr_str=$(grep "JOB=" $V_USERS/$user/cron.conf|cut -f 2 -d \'|\
2011-06-14 00:22:25 +03:00
sort -n|tail -n1)
# Print result
echo "$((curr_str +1))"
}
is_cron_job_free() {
# Checking record id
2011-08-14 15:21:26 +03:00
check_job=$(grep "JOB='$job'" $V_USERS/$user/cron.conf)
2011-06-14 00:22:25 +03:00
if [ ! -z "$check_job" ]; then
2011-12-18 22:39:29 +02:00
echo "Error: job id exist"
log_event 'debug' "$E_EXISTS $V_EVENT"
exit $E_EXISTS
2011-06-14 00:22:25 +03:00
fi
}
sort_cron_jobs() {
# Defining conf
2011-08-14 15:21:26 +03:00
conf="$V_USERS/$user/cron.conf"
2011-06-14 00:22:25 +03:00
cat $conf |sort -n -k 2 -t \' >$conf.tmp
mv -f $conf.tmp $conf
}
sync_cron_jobs() {
conf="/var/spool/cron/$user"
# Deleting old data
rm -f $conf
# Checking reporting system
rep=$(grep 'REPORTS=' $V_USERS/$user/user.conf | cut -f 2 -d \')
if [ "$rep" = 'yes' ]; then
email=$(grep 'CONTACT=' $V_USERS/$user/user.conf | cut -f 2 -d \')
echo "MAILTO=$email" >$conf
fi
2011-08-14 15:21:26 +03:00
# Reading user cron.conf
2011-06-14 00:22:25 +03:00
while read line ; do
# Defining new delimeter
IFS=$'\n'
# Parsing key=value
for key in $(echo $line|sed -e "s/' /'\n/g"); do
eval ${key%%=*}="${key#*=}"
done
2012-02-16 01:25:03 +02:00
if [ "$SUSPENDED" = 'no' ] ; then
2011-06-14 00:22:25 +03:00
# Adding line to system cron
echo "$MIN $HOUR $DAY $MONTH $WDAY $CMD" |\
sed -e "s/%quote%/'/g" -e "s/%dots%/:/g" >> $conf
fi
2011-08-14 15:21:26 +03:00
done <$V_USERS/$user/cron.conf
2011-06-14 00:22:25 +03:00
}
is_job_valid() {
2011-08-14 15:21:26 +03:00
result=$(grep "JOB='$job'" $V_USERS/$user/cron.conf)
2011-06-14 00:22:25 +03:00
if [ -z "$result" ]; then
2011-12-18 22:39:29 +02:00
echo "Error: job id not exists"
log_event 'debug' "$E_NOTEXIST $V_EVENT"
exit $E_NOTEXIST
2011-06-14 00:22:25 +03:00
fi
}
del_cron_job() {
2011-08-14 15:21:26 +03:00
str=$(grep -n "JOB='$job'" $V_USERS/$user/cron.conf|cut -f 1 -d :)
sed -i "$str d" $V_USERS/$user/cron.conf
2011-06-14 00:22:25 +03:00
}
is_job_suspended() {
# Parsing jobs
2012-02-16 01:25:03 +02:00
str=$(grep "JOB='$job'" $V_USERS/$user/cron.conf|grep "SUSPENDED='yes'" )
2011-06-14 00:22:25 +03:00
# Checkng key
if [ ! -z "$str" ]; then
echo "Error: job suspended"
2011-12-18 22:39:29 +02:00
log_event 'debug' "$E_SUSPENDED $V_EVENT"
exit $E_SUSPENDED
2011-06-14 00:22:25 +03:00
fi
}
is_job_unsuspended() {
# Parsing jobs
2012-02-16 01:25:03 +02:00
str=$(grep "JOB='$job'" $V_USERS/$user/cron.conf|grep "SUSPENDED='no'" )
2011-06-14 00:22:25 +03:00
# Checkng key
if [ ! -z "$str" ]; then
echo "Error: job unsuspended"
2011-12-18 22:39:29 +02:00
log_event 'debug' "$E_UNSUSPENDED $V_EVENT"
exit $E_UNSUSPENDED
2011-06-14 00:22:25 +03:00
fi
}
update_cron_job_value() {
key="$1"
value="$2"
# Defining conf
2011-08-14 15:21:26 +03:00
conf="$V_USERS/$user/cron.conf"
2011-06-14 00:22:25 +03:00
# Parsing conf
job_str=$(grep -n "JOB='$job'" $conf)
str_number=$(echo $job_str | cut -f 1 -d ':')
str=$(echo $job_str | cut -f 2 -d ':')
# Parsing key=value
IFS=$'\n'
for keys in $(echo $str|sed -e "s/' /'\n/g"); do
eval ${keys%%=*}=${keys#*=}
done
# Defining clean key
c_key=$(echo "${key//$/}")
eval old="${key}"
# Escaping slashes
old=$(echo "$old" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
new=$(echo "$value" | sed -e 's/\\/\\\\/g' -e 's/&/\\&/g' -e 's/\//\\\//g')
# Updating conf
sed -i "$str_number s/$c_key='${old//\*/\\*}'/$c_key='${new//\*/\\*}'/g" \
$conf
}
cron_clear_search() {
# Defining delimeter
IFS=$'\n'
# Reading file line by line
for line in $(grep $search_string $conf); do
# Defining new delimeter
IFS=$'\n'
# Parsing key=value
for key in $(echo $line|sed -e "s/' /'\n/g"); do
eval ${key%%=*}=${key#*=}
done
# Print result line
eval echo "$field"
done
}