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.
		
		
		
		
		
			
		
			
				
					
					
						
							96 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							96 lines
						
					
					
						
							3.0 KiB
						
					
					
				#!/bin/bash
 | 
						|
# info: update host certificate for hestia
 | 
						|
# options: USER HOSTNAME
 | 
						|
#
 | 
						|
# example: v-update-host-certificate admin example.com
 | 
						|
#
 | 
						|
# This function updates the SSL certificate used for Hestia Control Panel.
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                Variables & Functions                     #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
whoami=$(whoami)
 | 
						|
if [ "$whoami" != "root" ] && [ "$whoami" != "admin" ]; then
 | 
						|
	echo "Error: this script must be run as root or admin."
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# Argument definition
 | 
						|
user=$1
 | 
						|
hostname=$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
 | 
						|
# shellcheck source=/usr/local/hestia/func/ip.sh
 | 
						|
source $HESTIA/func/ip.sh
 | 
						|
# load config file
 | 
						|
source_conf "$HESTIA/conf/hestia.conf"
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                    Verifications                         #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
check_args '1' "$#" '[USER] [HOSTNAME]'
 | 
						|
is_format_valid 'user'
 | 
						|
is_domain_format_valid "$hostname" "hostname"
 | 
						|
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
 | 
						|
is_system_enabled "$WEB_SSL" 'SSL_SUPPORT'
 | 
						|
is_object_valid 'user' 'USER' "$user"
 | 
						|
is_object_unsuspended 'user' 'USER' "$user"
 | 
						|
is_object_valid 'web' 'DOMAIN' "$hostname"
 | 
						|
is_object_unsuspended 'web' 'DOMAIN' "$hostname"
 | 
						|
 | 
						|
if [ ! -f "/home/$user/conf/web/$hostname/ssl/$hostname.pem" ]; then
 | 
						|
	echo "Error: domain $hostname does not have an SSL certificate."
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# Perform verification if read-only mode is enabled
 | 
						|
check_hestia_demo_mode
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                       Action                             #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
# Copy hostnames certificates from user dir
 | 
						|
cp /home/$user/conf/web/$hostname/ssl/$hostname.pem $HESTIA/ssl/certificate.crt
 | 
						|
cp /home/$user/conf/web/$hostname/ssl/$hostname.key $HESTIA/ssl/certificate.key
 | 
						|
 | 
						|
# Enable fallback support for mail domains that do not support SSL
 | 
						|
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
 | 
						|
	# Checking exim username for later chowning
 | 
						|
	exim_user="exim"
 | 
						|
	check_exim_username=$(grep -c '^Debian-exim:' /etc/passwd)
 | 
						|
	if [ "$check_exim_username" -eq 1 ]; then
 | 
						|
		exim_user="Debian-exim"
 | 
						|
	fi
 | 
						|
 | 
						|
	# Assign exim permissions to certificate
 | 
						|
	chown $exim_user:mail $HESTIA/ssl/certificate.crt
 | 
						|
	chown $exim_user:mail $HESTIA/ssl/certificate.key
 | 
						|
fi
 | 
						|
 | 
						|
# Add UPDATE_HOSTNAME_SSL if not exist
 | 
						|
if [ -z "$UPDATE_HOSTNAME_SSL" ]; then
 | 
						|
	echo "UPDATE_HOSTNAME_SSL='yes'" >> "$HESTIA/conf/hestia.conf"
 | 
						|
fi
 | 
						|
 | 
						|
# Restart services
 | 
						|
$BIN/v-restart-mail
 | 
						|
$BIN/v-restart-ftp
 | 
						|
$BIN/v-restart-service "hestia"
 | 
						|
 | 
						|
#----------------------------------------------------------#
 | 
						|
#                       Hestia                             #
 | 
						|
#----------------------------------------------------------#
 | 
						|
 | 
						|
# Logging
 | 
						|
$BIN/v-log-action "system" "Info" "System" "System SSL certificate updated (Host: $hostname)."
 | 
						|
log_event "$OK" "$ARGUMENTS"
 | 
						|
 | 
						|
exit 0
 |