mirror of
https://github.com/myvesta/vesta.git
synced 2024-11-03 04:00:20 -08:00
131 lines
4.4 KiB
Bash
Executable File
131 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# info: change service config
|
|
# options: CONFIG SERVICE [RESTART]
|
|
#
|
|
# The function for changing service confguration.
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument definition
|
|
src=$1
|
|
service=$2
|
|
restart=$3
|
|
echo "$0 $*" >/tmp/t.log
|
|
|
|
# Includes
|
|
source $VESTA/func/main.sh
|
|
source $VESTA/conf/vesta.conf
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '2' "$#" 'CONFIG SERVICE [RESTART]'
|
|
if [ ! -e "$src" ]; then
|
|
check_result "$E_NOTEXIST" "$src config doesn't exist"
|
|
fi
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
# Defining dst config path
|
|
case $service in
|
|
nginx) dst='/etc/nginx/nginx.conf';;
|
|
httpd) dst='/etc/httpd/conf/httpd.conf';;
|
|
apache2) dst='/etc/apache2/apache2.conf';;
|
|
exim) dst='/etc/exim/exim.conf';;
|
|
exim4) dst='/etc/exim4/exim4.conf.template';;
|
|
vsftpd) dst=$(find /etc/vsftpd* -name 'vsftpd.conf');;
|
|
proftpd) dst=$(find /etc/proftpd* -name 'proftpd.conf');;
|
|
php) dst=$(find /etc/php* -name php.ini);;
|
|
mysql) dst=$(find /etc/my* -name my.cnf);;
|
|
mysqld) dst=$(find /etc/my* -name my.cnf);;
|
|
mariadb) dst=$(find /etc/my* -name my.cnf);;
|
|
postgresql) dst=$($BIN/v-list-sys-pgsql-config plain |cut -f 1);;
|
|
postgresql-hba) dst=$($BIN/v-list-sys-pgsql-config plain |cut -f 2);;
|
|
dovecot) dst=$(find /etc/dovecot* -name dovecot.conf);;
|
|
dovecot-1) dst='/etc/dovecot/conf.d/10-auth.conf';;
|
|
dovecot-2) dst='/etc/dovecot/conf.d/10-logging.conf';;
|
|
dovecot-3) dst='/etc/dovecot/conf.d/10-mail.conf';;
|
|
dovecot-4) dst='/etc/dovecot/conf.d/10-master.conf';;
|
|
dovecot-5) dst='/etc/dovecot/conf.d/10-ssl.conf';;
|
|
dovecot-6) dst='/etc/dovecot/conf.d/20-imap.conf';;
|
|
dovecot-7) dst='/etc/dovecot/conf.d/20-pop3.conf';;
|
|
dovecot-8) dst='/etc/dovecot/conf.d/auth-passwdfile.conf.ext';;
|
|
named) dst='/etc/named.conf';;
|
|
bind9) dst='/etc/bind/named.conf';;
|
|
bind9-opt) dst='/etc/bind/named.conf.options';;
|
|
spamd) dst=$($BIN/v-list-sys-spamd-config plain);;
|
|
spamassassin) dst=$($BIN/v-list-sys-spamd-config plain);;
|
|
clamd) dst=$($BIN/v-list-sys-clamd-config plain);;
|
|
cron) dst='/etc/crontab';;
|
|
crond) dst='/etc/crontab';;
|
|
fail2ban) dst='/etc/fail2ban/jail.local';;
|
|
*) check_result $E_NOTEXIST "service $service doesn't exist"
|
|
esac
|
|
|
|
# Checking config path
|
|
for config in $dst; do
|
|
if [ ! -e "$config" ]; then
|
|
check_result $E_NOTEXIST "$service config doesn't exist"
|
|
fi
|
|
done
|
|
|
|
# Checking diff between src and dst configs
|
|
for config in $dst; do
|
|
diff -q $src $config >/dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
cp $config $config.vst.back
|
|
cp $src $config
|
|
update="yes"
|
|
fi
|
|
done
|
|
|
|
# Restarting service
|
|
if [ "$update" = 'yes' ] && [ "$restart" != 'no' ]; then
|
|
if [[ "$service" =~ - ]]; then
|
|
service=$(echo ${service%-*})
|
|
fi
|
|
|
|
if [ "$service" = 'php' ]; then
|
|
if [ "$WEB_SYSTEM" = "nginx" ]; then
|
|
if [ $(ps --no-headers -o comm 1) == systemd ]; then
|
|
service=$(systemctl | grep -o -E "php.*fpm.*\.service")
|
|
service=${service//.service/}
|
|
else
|
|
service=$(ls /etc/init.d/php*fpm* |cut -f 4 -d /)
|
|
fi
|
|
else
|
|
service=$WEB_SYSTEM
|
|
fi
|
|
fi
|
|
|
|
for single_service in $service; do
|
|
service $single_service restart >/dev/null 2>&1
|
|
done <<< "$service"
|
|
|
|
if [ $? -ne 0 ]; then
|
|
for config in $dst; do
|
|
cat $config.vst.back > $config
|
|
rm -f $config.vst.back
|
|
done
|
|
check_result $E_RESTART "$service failed to start with new config"
|
|
fi
|
|
fi
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Logging
|
|
log_event "$OK" "$ARGUMENTS"
|
|
|
|
exit
|