You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.1 KiB
112 lines
3.1 KiB
#!/bin/bash
|
|
# info: restart service
|
|
# options: SERVICE [RESTART]
|
|
#
|
|
# example: v-restart-service apache2
|
|
#
|
|
# This function restarts system service.
|
|
|
|
#----------------------------------------------------------#
|
|
# Variables & Functions #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument definition
|
|
service=$1
|
|
restart=$2
|
|
|
|
# Includes
|
|
# shellcheck source=/etc/hestiacp/hestia.conf
|
|
source /etc/hestiacp/hestia.conf
|
|
# shellcheck source=/usr/local/hestia/func/main.sh
|
|
source $HESTIA/func/main.sh
|
|
source_conf "$HESTIA/conf/hestia.conf"
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
check_args '1' "$#" 'SERVICE [RESTART]'
|
|
is_format_valid 'service' 'restart'
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
if [ "$service" == "apache2" ]; then
|
|
service="httpd"
|
|
fi
|
|
|
|
log="/dev/null"
|
|
if [ "$DEBUG_MODE" = "true" ]; then
|
|
|
|
log="/var/log/hestia/debug.log"
|
|
fi
|
|
|
|
if [ "$service" = "cron" ] && [ -f /etc/redhat-release ]; then
|
|
service="crond"
|
|
fi
|
|
|
|
# Multi-instance service restart request handling
|
|
if [ "$service" = "php-fpm" ]; then
|
|
service_list=''
|
|
# Get installed php versions
|
|
php_versions=$($BIN/v-list-sys-php plain)
|
|
# Substitute php-fpm service name formats
|
|
for version in $php_versions; do
|
|
if [ "$LOCAL_PHP" == "yes" ]; then
|
|
service_list="${service_list} brepo-php-fpm${version}"
|
|
else
|
|
service_list="${service_list} php${version}-php-fpm"
|
|
fi
|
|
done
|
|
else
|
|
service_list="$service"
|
|
fi
|
|
|
|
for service in $service_list; do
|
|
is_fpm="no"
|
|
if [[ "$service" =~ ^php[0-9.]+-php-fpm ]] || [[ "$service" =~ brepo-php-fpm[0-9.]+ ]]; then
|
|
is_fpm="yes"
|
|
fi
|
|
if [ "$service" = "iptables" ]; then
|
|
# Run the restart rules for iptables firewall
|
|
$BIN/v-stop-firewall
|
|
$BIN/v-update-firewall
|
|
elif [ "$restart" = "ssl" ] && [ "$service" = "nginx" ]; then
|
|
service $service upgrade >> $log 2>&1
|
|
elif [ -z "$restart" -o "$restart" = "no" ] && [ \
|
|
"$service" = "nginx" -o \
|
|
"$service" = "httpd" -o \
|
|
"$service" = "exim4" -o \
|
|
"$service" = "dovecot" -o \
|
|
"$service" = "bind9" -o \
|
|
"$service" = "named" -o \
|
|
"$service" = "vsftpd" -o \
|
|
"$is_fpm" = "yes" -o \
|
|
"$service" = "proftpd" -o \
|
|
"$service" = "ssh" -o \
|
|
"$service" = "fail2ban" ]; then
|
|
systemctl reload-or-restart "$service" >> $log 2>&1
|
|
else
|
|
systemctl reset-failed "$service" >> $log 2>&1
|
|
systemctl restart "$service" >> $log 2>&1
|
|
fi
|
|
|
|
# Check the result of the service restart and report whether it failed.
|
|
if [ $? -ne 0 ]; then
|
|
check_result "$E_RESTART" "ERROR: Restart of $service failed."
|
|
$BIN/v-log-action "system" "Error" "System" "Service failed to restart (Name: $service)."
|
|
else
|
|
$BIN/v-log-action "system" "Info" "System" "Service restarted (Name: $service)."
|
|
fi
|
|
done
|
|
|
|
#----------------------------------------------------------#
|
|
# Hestia #
|
|
#----------------------------------------------------------#
|
|
|
|
# Logging
|
|
log_event "$OK" "$ARGUMENTS"
|
|
|
|
exit
|