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.
hestiacp/bin/v-restart-service

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