فهرست منبع

IPV6: Compatibility mode for bin/v-add-web-domain

asmcc 2 سال پیش
والد
کامیت
6dc0919c52

+ 2 - 1
bin/v-add-domain

@@ -56,7 +56,8 @@ fi
 if [ -n "$WEB_SYSTEM" ]; then
 	check1=$(is_package_full 'WEB_DOMAINS')
 	if [ $? -eq 0 ]; then
-		$BIN/v-add-web-domain "$user" "$domain" "$ip" 'no'
+		ipv6="" # empty, not used yet
+		$BIN/v-add-web-domain-ipv46 "$user" "$domain" "$ip" "$ipv6" 'no'
 		check_result $? "can't add web domain"
 	fi
 fi

+ 1 - 1
bin/v-add-letsencrypt-host

@@ -50,7 +50,7 @@ is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
 # Check if hostname already exists as domain
 if [ "$($BIN/v-list-web-domain $user $domain plain | cut -f 1)" != "$domain" ]; then
 	# Create web domain for hostname
-	$BIN/v-add-web-domain "$user" "$domain"
+	$BIN/v-add-web-domain-ipv46 "$user" "$domain"
 fi
 
 # Validate web domain

+ 13 - 236
bin/v-add-web-domain

@@ -1,8 +1,11 @@
 #!/bin/bash
+#
+# !!! WRAPPER SCRIPT FOR COMPATIBILITY PURPOSES WITH OLD IPV4 SCRIPTS AND EXTERNAL CALLS !!!
+#
 # info: add web domain
-# options: USER DOMAIN [IPV4] [IPV6] [RESTART] [ALIASES] [PROXY_EXTENSIONS]
+# options: USER DOMAIN [IPV4] [RESTART] [ALIASES] [PROXY_EXTENSIONS]
 #
-# example: v-add-web-domain admin wonderland.com 192.18.22.43 1111:2222:3333::1 yes www.wonderland.com
+# example: v-add-web-domain admin wonderland.com 192.18.22.43 yes www.wonderland.com
 #
 # This function adds virtual host to a server. In cases when ip is
 # undefined in the script, "default" template will be used. The alias of
@@ -16,242 +19,16 @@
 #----------------------------------------------------------#
 
 # Argument definition
-user=$1
-domain=$2
-domain_idn=$2
-ip=$3
-ipv6=$4
-restart=$5 # will be moved to the end soon
-aliases=$6
-proxy_ext=$7
+user="$1"
+domain="$2"
+ip="$3"
+ipv6=""      # EMPTY! Not used here, because of old IPV4 only mode
+restart="$4" # will be moved to the end soon
+aliases="$5"
+proxy_ext="$6"
 
 # 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/domain.sh
-source $HESTIA/func/domain.sh
-# shellcheck source=/usr/local/hestia/func/ip.sh
-source $HESTIA/func/ip.sh
-# shellcheck source=/usr/local/hestia/func/syshealth.sh
-source $HESTIA/func/syshealth.sh
-# load config file
-source_conf "$HESTIA/conf/hestia.conf"
-
-# Additional argument formatting
-format_domain
-format_domain_idn
-format_aliases
-domain_utf=$(idn2 --quiet -d "$domain_idn")
-
-#----------------------------------------------------------#
-#                    Verifications                         #
-#----------------------------------------------------------#
-
-is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
-check_args '2' "$#" 'USER DOMAIN [IPV4] [IPV6] [RESTART] [ALIASES] [PROXY_EXTENSIONS]'
-is_format_valid 'user' 'domain' 'aliases' 'ip' 'ipv6' 'proxy_ext'
-is_object_valid 'user' 'USER' "$user"
-is_object_unsuspended 'user' 'USER' "$user"
-is_package_full 'WEB_DOMAINS'
-
-if [ "$aliases" != "none" ]; then
-	ALIAS="$aliases"
-	is_package_full 'WEB_ALIASES'
-fi
-
-if [ "$($BIN/v-list-web-domain $user $domain_utf shell | sed -n '/DOMAIN/s/DOMAIN:[\t ]*//p')" != "$domain" ]; then
-	is_domain_new 'web' "$domain_utf,$aliases"
-fi
-if [ "$($BIN/v-list-web-domain $user $domain_idn shell | sed -n '/DOMAIN/s/DOMAIN:[\t ]*//p')" != "$domain" ]; then
-	is_domain_new 'web' "$domain_idn,$aliases"
-else
-	is_domain_new 'web' "$domain,$aliases"
-fi
-if [ -z "$(is_ip_format_valid $domain)" ]; then
-	echo "Error: Invalid domain format. IP address detected as input."
-	exit 1
-fi
-
-is_dir_symlink "$HOMEDIR/$user/web"
-is_dir_symlink "$HOMEDIR/$user/web/$domain"
-
-is_base_domain_owner "$domain,$aliases"
-
-if [ -n "$ip" ]; then
-	is_ip_valid "$ip" "$user"
-fi
-
-if [ -n "$ipv6" ]; then
-	is_ipv6_valid "$ipv6" "$user"
-fi
-
-if [ -z "$ip" -a -z "$ipv6" ]; then
-	get_user_ipv6	#	get first available user ipv6 address as fallback, if none ip address was defined
-	if [ -z "$ipv6" ]; then
-		get_user_ip	#	get first available user ipv4 address as fallback, if none ipv6 user address available
-	fi
-fi
-
-# Perform verification if read-only mode is enabled
-check_hestia_demo_mode
-
-#----------------------------------------------------------#
-#                       Action                             #
-#----------------------------------------------------------#
-
-# Reading user values
-source_conf "$USER_DATA/user.conf"
-
-[[ -e "$HOMEDIR/$user/web/$domain" ]] && check_result "$E_EXISTS" "Web domain folder for $domain should not exist"
-
-# Creating domain directories
-mkdir $HOMEDIR/$user/web/$domain
-chown $user:$user $HOMEDIR/$user/web/$domain
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/public_html"
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/document_errors"
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/cgi-bin"
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/private"
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/stats"
-$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/logs"
-
-# Creating domain logs
-touch /var/log/$WEB_SYSTEM/domains/$domain.bytes \
-	/var/log/$WEB_SYSTEM/domains/$domain.log \
-	/var/log/$WEB_SYSTEM/domains/$domain.error.log
-ln -f -s /var/log/$WEB_SYSTEM/domains/$domain.*log \
-	$HOMEDIR/$user/web/$domain/logs/
-
-# Adding domain skeleton
-user_exec cp -r $WEBTPL/skel/* "$HOMEDIR/$user/web/$domain/" > /dev/null 2>&1
-for file in $(find "$HOMEDIR/$user/web/$domain/" -type f); do
-	sed -i "s/%domain%/$domain/g" $file
-done
-
-# Changing file owner & permission
-chown -R $user:$user $HOMEDIR/$user/web/$domain
-chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
-chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
-user_exec chmod 751 $HOMEDIR/$user/web/$domain/*
-user_exec chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
-user_exec chmod 644 $HOMEDIR/$user/web/$domain/public_*html/*
-user_exec chmod 551 $HOMEDIR/$user/web/$domain
-chown --no-dereference $user:www-data $HOMEDIR/$user/web/$domain/public_*html
-
-# Adding PHP-FPM backend
-if [ -n "$WEB_BACKEND" ]; then
-	if [ -z "$BACKEND_TEMPLATE" ]; then
-		BACKEND_TEMPLATE='default'
-		if [ -z "$(grep BACKEND_TEMPLATE $USER_DATA/user.conf)" ]; then
-			sed -i "s/^DNS_TEMPL/BACKEND_TEMPLATE='default'\nDNS_TEMPL/g" \
-				$USER_DATA/user.conf
-		else
-			update_user_value "$user" '$BACKEND_TEMPLATE' "default"
-		fi
-	fi
-	export BACKEND="$BACKEND_TEMPLATE"
-	$BIN/v-add-web-domain-backend "$user" "$domain" "$BACKEND_TEMPLATE" "$restart"
-	check_result $? "Backend error" > /dev/null
-fi
-
-# Preparing domain aliases
-if [ "$aliases" = 'none' ]; then
-	ALIAS=''
-else
-	ALIAS="www.$domain"
-	if [ -z "$aliases" ]; then
-		# Check and skip www alias for subdomains.
-		IFS='.' read -r -a domain_elements <<< "$domain"
-		if [ "${#domain_elements[@]}" -gt 2 ]; then
-			is_valid_2_part_extension $domain
-			if [ $? -ne 0 ]; then
-				ALIAS=""
-			else
-				ALIAS="www.$domain"
-			fi
-		else
-			ALIAS="www.$domain"
-		fi
-	else
-		ALIAS="$aliases"
-	fi
-
-	if [ -n "$local_ip" ]; then
-		ip_alias=$(get_ip_alias "$domain" "$local_ip")
-		if [ -n "$ip_alias" ]; then
-			ALIAS="$ALIAS,$ip_alias"
-		fi
-	fi
-	if [ -n "$local_ipv6" ]; then
-		ipv6_alias=$(get_ip_alias "$domain" "$local_ipv6")
-		if [ -n "$ipv6_alias" ]; then
-			ALIAS="$ALIAS,$ipv6_alias"
-		fi
-	fi
-fi
-
-# Preparing domain variables
-prepare_web_domain_values
-
-if [ -z "$WEB_TEMPLATE" ]; then
-	WEB_TEMPLATE='default'
-	update_user_value "$user" '$WEB_TEMPLATE' "default"
-fi
-
-# Adding web server config
-add_web_config "$WEB_SYSTEM" "$WEB_TEMPLATE.tpl"
-
-# Adding proxy config
-if [ -n "$PROXY_SYSTEM" ]; then
-	PROXY_EXT="$proxy_ext"
-	if [ -z "$proxy_ext" ]; then
-		PROXY_EXT="jpg,jpeg,webp,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls"
-		PROXY_EXT="$PROXY_EXT,exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp"
-		PROXY_EXT="$PROXY_EXT,rtf,js,mp3,avi,mpeg,flv,html,htm,woff,woff2,ttf"
-	fi
-	if [ -z "$PROXY_TEMPLATE" ]; then
-		PROXY_TEMPLATE='default'
-		update_user_value "$user" '$PROXY_TEMPLATE' "default"
-	fi
-
-	add_web_config "$PROXY_SYSTEM" "$PROXY_TEMPLATE.tpl"
-fi
-
-#----------------------------------------------------------#
-#                       Hestia                             #
-#----------------------------------------------------------#
-
-# Increasing counters
-[ -n "$local_ip" ] && increase_ip_value "$local_ip"
-[ -n "$local_ipv6" ] && increase_ip_value "$local_ipv6"
-increase_user_value "$user" '$U_WEB_DOMAINS'
-increase_user_value "$user" '$U_WEB_ALIASES' "$alias_number"
-
-# Generating timestamp
-time_n_date=$(date +'%T %F')
-time=$(echo "$time_n_date" | cut -f 1 -d \ )
-date=$(echo "$time_n_date" | cut -f 2 -d \ )
-
-# Adding domain in web.conf
-echo "DOMAIN='$domain' IP='$ip' IP6='$ipv6' CUSTOM_DOCROOT='' ALIAS='$ALIAS' TPL='$WEB_TEMPLATE'\
- SSL='no' SSL_FORCE='no' SSL_HOME='same' LETSENCRYPT='no' FTP_USER='' FTP_MD5=''\
- BACKEND='$BACKEND_TEMPLATE' PROXY='$PROXY_TEMPLATE' PROXY_EXT='$PROXY_EXT'\
- STATS='' STATS_USER='' STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0'\
- SUSPENDED='no' TIME='$time' DATE='$date'" >> $USER_DATA/web.conf
-
-syshealth_repair_web_config
-
-# Restarting web server
-$BIN/v-restart-web "$restart"
-check_result $? "Web restart failed" > /dev/null
-
-# Restarting proxy server
-$BIN/v-restart-proxy "$restart"
-check_result $? "Proxy restart failed" > /dev/null
-
-# Logging
-$BIN/v-log-action "$user" "Info" "Web" "Added new web domain (Name: $domain)."
-log_event "$OK" "$ARGUMENTS"
 
-exit
+${HESTIA}/bin/v-add-web-domain-ipv46 "$user" "$domain" "$ip" "$ipv6" "$restart" "$aliases" "$proxy_ext"

+ 257 - 0
bin/v-add-web-domain-ipv46

@@ -0,0 +1,257 @@
+#!/bin/bash
+# info: add web domain
+# options: USER DOMAIN [IPV4] [IPV6] [RESTART] [ALIASES] [PROXY_EXTENSIONS]
+#
+# example: v-add-web-domain admin wonderland.com 192.18.22.43 1111:2222:3333::1 yes www.wonderland.com
+#
+# This function adds virtual host to a server. In cases when ip is
+# undefined in the script, "default" template will be used. The alias of
+# www.domain.tld type will be automatically assigned to the domain unless
+# "none" is transmited as argument. If ip have associated dns name, this
+# domain will also get the alias domain-tpl.$ipname. An alias with the ip
+# name is useful during the site testing while dns isn't moved to server yet.
+
+#----------------------------------------------------------#
+#                Variables & Functions                     #
+#----------------------------------------------------------#
+
+# Argument definition
+user=$1
+domain=$2
+domain_idn=$2
+ip=$3
+ipv6=$4
+restart=$5 # will be moved to the end soon
+aliases=$6
+proxy_ext=$7
+
+# 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/domain.sh
+source $HESTIA/func/domain.sh
+# shellcheck source=/usr/local/hestia/func/ip.sh
+source $HESTIA/func/ip.sh
+# shellcheck source=/usr/local/hestia/func/syshealth.sh
+source $HESTIA/func/syshealth.sh
+# load config file
+source_conf "$HESTIA/conf/hestia.conf"
+
+# Additional argument formatting
+format_domain
+format_domain_idn
+format_aliases
+domain_utf=$(idn2 --quiet -d "$domain_idn")
+
+#----------------------------------------------------------#
+#                    Verifications                         #
+#----------------------------------------------------------#
+
+is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
+check_args '2' "$#" 'USER DOMAIN [IPV4] [IPV6] [RESTART] [ALIASES] [PROXY_EXTENSIONS]'
+is_format_valid 'user' 'domain' 'aliases' 'ip' 'ipv6' 'proxy_ext'
+is_object_valid 'user' 'USER' "$user"
+is_object_unsuspended 'user' 'USER' "$user"
+is_package_full 'WEB_DOMAINS'
+
+if [ "$aliases" != "none" ]; then
+	ALIAS="$aliases"
+	is_package_full 'WEB_ALIASES'
+fi
+
+if [ "$($BIN/v-list-web-domain $user $domain_utf shell | sed -n '/DOMAIN/s/DOMAIN:[\t ]*//p')" != "$domain" ]; then
+	is_domain_new 'web' "$domain_utf,$aliases"
+fi
+if [ "$($BIN/v-list-web-domain $user $domain_idn shell | sed -n '/DOMAIN/s/DOMAIN:[\t ]*//p')" != "$domain" ]; then
+	is_domain_new 'web' "$domain_idn,$aliases"
+else
+	is_domain_new 'web' "$domain,$aliases"
+fi
+if [ -z "$(is_ip_format_valid $domain)" ]; then
+	echo "Error: Invalid domain format. IP address detected as input."
+	exit 1
+fi
+
+is_dir_symlink "$HOMEDIR/$user/web"
+is_dir_symlink "$HOMEDIR/$user/web/$domain"
+
+is_base_domain_owner "$domain,$aliases"
+
+if [ -n "$ip" ]; then
+	is_ip_valid "$ip" "$user"
+fi
+
+if [ -n "$ipv6" ]; then
+	is_ipv6_valid "$ipv6" "$user"
+fi
+
+if [ -z "$ip" -a -z "$ipv6" ]; then
+	get_user_ipv6 #	get first available user ipv6 address as fallback, if none ip address was defined
+	if [ -z "$ipv6" ]; then
+		get_user_ip #	get first available user ipv4 address as fallback, if none ipv6 user address available
+	fi
+fi
+
+# Perform verification if read-only mode is enabled
+check_hestia_demo_mode
+
+#----------------------------------------------------------#
+#                       Action                             #
+#----------------------------------------------------------#
+
+# Reading user values
+source_conf "$USER_DATA/user.conf"
+
+[[ -e "$HOMEDIR/$user/web/$domain" ]] && check_result "$E_EXISTS" "Web domain folder for $domain should not exist"
+
+# Creating domain directories
+mkdir $HOMEDIR/$user/web/$domain
+chown $user:$user $HOMEDIR/$user/web/$domain
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/public_html"
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/document_errors"
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/cgi-bin"
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/private"
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/stats"
+$BIN/v-add-fs-directory "$user" "$HOMEDIR/$user/web/$domain/logs"
+
+# Creating domain logs
+touch /var/log/$WEB_SYSTEM/domains/$domain.bytes \
+	/var/log/$WEB_SYSTEM/domains/$domain.log \
+	/var/log/$WEB_SYSTEM/domains/$domain.error.log
+ln -f -s /var/log/$WEB_SYSTEM/domains/$domain.*log \
+	$HOMEDIR/$user/web/$domain/logs/
+
+# Adding domain skeleton
+user_exec cp -r $WEBTPL/skel/* "$HOMEDIR/$user/web/$domain/" > /dev/null 2>&1
+for file in $(find "$HOMEDIR/$user/web/$domain/" -type f); do
+	sed -i "s/%domain%/$domain/g" $file
+done
+
+# Changing file owner & permission
+chown -R $user:$user $HOMEDIR/$user/web/$domain
+chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
+chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
+user_exec chmod 751 $HOMEDIR/$user/web/$domain/*
+user_exec chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
+user_exec chmod 644 $HOMEDIR/$user/web/$domain/public_*html/*
+user_exec chmod 551 $HOMEDIR/$user/web/$domain
+chown --no-dereference $user:www-data $HOMEDIR/$user/web/$domain/public_*html
+
+# Adding PHP-FPM backend
+if [ -n "$WEB_BACKEND" ]; then
+	if [ -z "$BACKEND_TEMPLATE" ]; then
+		BACKEND_TEMPLATE='default'
+		if [ -z "$(grep BACKEND_TEMPLATE $USER_DATA/user.conf)" ]; then
+			sed -i "s/^DNS_TEMPL/BACKEND_TEMPLATE='default'\nDNS_TEMPL/g" \
+				$USER_DATA/user.conf
+		else
+			update_user_value "$user" '$BACKEND_TEMPLATE' "default"
+		fi
+	fi
+	export BACKEND="$BACKEND_TEMPLATE"
+	$BIN/v-add-web-domain-backend "$user" "$domain" "$BACKEND_TEMPLATE" "$restart"
+	check_result $? "Backend error" > /dev/null
+fi
+
+# Preparing domain aliases
+if [ "$aliases" = 'none' ]; then
+	ALIAS=''
+else
+	ALIAS="www.$domain"
+	if [ -z "$aliases" ]; then
+		# Check and skip www alias for subdomains.
+		IFS='.' read -r -a domain_elements <<< "$domain"
+		if [ "${#domain_elements[@]}" -gt 2 ]; then
+			is_valid_2_part_extension $domain
+			if [ $? -ne 0 ]; then
+				ALIAS=""
+			else
+				ALIAS="www.$domain"
+			fi
+		else
+			ALIAS="www.$domain"
+		fi
+	else
+		ALIAS="$aliases"
+	fi
+
+	if [ -n "$local_ip" ]; then
+		ip_alias=$(get_ip_alias "$domain" "$local_ip")
+		if [ -n "$ip_alias" ]; then
+			ALIAS="$ALIAS,$ip_alias"
+		fi
+	fi
+	if [ -n "$local_ipv6" ]; then
+		ipv6_alias=$(get_ip_alias "$domain" "$local_ipv6")
+		if [ -n "$ipv6_alias" ]; then
+			ALIAS="$ALIAS,$ipv6_alias"
+		fi
+	fi
+fi
+
+# Preparing domain variables
+prepare_web_domain_values
+
+if [ -z "$WEB_TEMPLATE" ]; then
+	WEB_TEMPLATE='default'
+	update_user_value "$user" '$WEB_TEMPLATE' "default"
+fi
+
+# Adding web server config
+add_web_config "$WEB_SYSTEM" "$WEB_TEMPLATE.tpl"
+
+# Adding proxy config
+if [ -n "$PROXY_SYSTEM" ]; then
+	PROXY_EXT="$proxy_ext"
+	if [ -z "$proxy_ext" ]; then
+		PROXY_EXT="jpg,jpeg,webp,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls"
+		PROXY_EXT="$PROXY_EXT,exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp"
+		PROXY_EXT="$PROXY_EXT,rtf,js,mp3,avi,mpeg,flv,html,htm,woff,woff2,ttf"
+	fi
+	if [ -z "$PROXY_TEMPLATE" ]; then
+		PROXY_TEMPLATE='default'
+		update_user_value "$user" '$PROXY_TEMPLATE' "default"
+	fi
+
+	add_web_config "$PROXY_SYSTEM" "$PROXY_TEMPLATE.tpl"
+fi
+
+#----------------------------------------------------------#
+#                       Hestia                             #
+#----------------------------------------------------------#
+
+# Increasing counters
+[ -n "$local_ip" ] && increase_ip_value "$local_ip"
+[ -n "$local_ipv6" ] && increase_ip_value "$local_ipv6"
+increase_user_value "$user" '$U_WEB_DOMAINS'
+increase_user_value "$user" '$U_WEB_ALIASES' "$alias_number"
+
+# Generating timestamp
+time_n_date=$(date +'%T %F')
+time=$(echo "$time_n_date" | cut -f 1 -d \ )
+date=$(echo "$time_n_date" | cut -f 2 -d \ )
+
+# Adding domain in web.conf
+echo "DOMAIN='$domain' IP='$ip' IP6='$ipv6' CUSTOM_DOCROOT='' ALIAS='$ALIAS' TPL='$WEB_TEMPLATE'\
+ SSL='no' SSL_FORCE='no' SSL_HOME='same' LETSENCRYPT='no' FTP_USER='' FTP_MD5=''\
+ BACKEND='$BACKEND_TEMPLATE' PROXY='$PROXY_TEMPLATE' PROXY_EXT='$PROXY_EXT'\
+ STATS='' STATS_USER='' STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0'\
+ SUSPENDED='no' TIME='$time' DATE='$date'" >> $USER_DATA/web.conf
+
+syshealth_repair_web_config
+
+# Restarting web server
+$BIN/v-restart-web "$restart"
+check_result $? "Web restart failed" > /dev/null
+
+# Restarting proxy server
+$BIN/v-restart-proxy "$restart"
+check_result $? "Proxy restart failed" > /dev/null
+
+# Logging
+$BIN/v-log-action "$user" "Info" "Web" "Added new web domain (Name: $domain)."
+log_event "$OK" "$ARGUMENTS"
+
+exit

+ 19 - 0
docs/docs/reference/cli.md

@@ -945,6 +945,25 @@ v-add-web-domain-httpauth admin acme.com user02 super_pass
 
 This function is used for securing web domain with http auth
 
+## v-add-web-domain-ipv46
+
+add web domain
+
+**Options**: `USER` `DOMAIN` `[IP]` `[IPV6]` `[RESTART]` `[ALIASES]` `[PROXY_EXTENSIONS]`
+
+**Examples**:
+
+```bash
+v-add-web-domain-ipv46 admin wonderland.com 192.18.22.43 1111:222:333:111:2 yes www.wonderland.com
+```
+
+This function adds virtual host to a server. In cases when ip is
+undefined in the script, "default" template will be used. The alias of
+<www.domain.tld> type will be automatically assigned to the domain unless
+"none" is transmited as argument. If ip have associated dns name, this
+domain will also get the alias domain-tpl.$ipname. An alias with the ip
+name is useful during the site testing while dns isn't moved to server yet.
+
 ## v-add-web-domain-proxy
 
 add webdomain proxy support

+ 3 - 3
install/hst-install-debian.sh

@@ -2099,13 +2099,13 @@ fi
 # Adding default domain
 if [ -n "$ip" ]; then
 	if [ -n "$ipv6" ]; then
-		${HESTIA}/bin/v-add-web-domain admin ${servername} ${ip} ${ipv6}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} ${ip} ${ipv6}
 	else
-		${HESTIA}/bin/v-add-web-domain admin ${servername} ${ip}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} ${ip}
 	fi
 else
 	if [ -n "$ipv6" ]; then
-		${HESTIA}/bin/v-add-web-domain admin ${servername} "" ${ipv6}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} "" ${ipv6}
 	fi
 fi
 

+ 3 - 3
install/hst-install-ubuntu.sh

@@ -2176,13 +2176,13 @@ fi
 # Adding default domain
 if [ -n "$ip" ]; then
 	if [ -n "$ipv6" ]; then
-		${HESTIA}/bin/v-add-web-domain admin ${servername} ${ip} ${ipv6}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} ${ip} ${ipv6}
 	else
-		${HESTIA}/bin/v-add-web-domain admin ${servername} ${ip}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} ${ip}
 	fi
 else
 	if [ -n "$ipv6" ]; then
-		${HESTIA}/bin/v-add-web-domain admin ${servername} "" ${ipv6}
+		${HESTIA}/bin/v-add-web-domain-ipv46 admin ${servername} "" ${ipv6}
 	fi
 fi
 check_result $? "can't create $servername domain"

+ 1 - 1
test/config-tests.bats

@@ -49,7 +49,7 @@ function setup() {
     assert_success
     refute_output
 
-    run v-add-web-domain $user 'testhestiacp.com'
+    run v-add-web-domain-ipv46 $user 'testhestiacp.com'
     assert_success
     refute_output
 

+ 3 - 3
test/letsencrypt.bats

@@ -33,13 +33,13 @@ function setup() {
 }
 
 @test "[ Web ] Create web domain" {
-    run v-add-web-domain $user $domain $ip yes "www.$domain,renewal.$domain,foobar.$domain,bar.$domain"
+    run v-add-web-domain-ipv46 $user $domain $ip $ipv6 yes "www.$domain,renewal.$domain,foobar.$domain,bar.$domain"
     assert_success
     refute_output
 }
 
 @test "[ Web ] Create 2nd web domain" {
-    run v-add-web-domain $user "hestia.$domain" $ip yes
+    run v-add-web-domain-ipv46 $user "hestia.$domain" $ip $ipv6 yes
     assert_success
     refute_output
 }
@@ -105,7 +105,7 @@ function setup() {
 }
 
 @test "[ Redirect ] Create web domain" {
-    run v-add-web-domain $user "redirect.$domain" $ip yes
+    run v-add-web-domain-ipv46 $user "redirect.$domain" $ip $ipv6 yes
     assert_success
     refute_output
 }

+ 13 - 13
test/test.bats

@@ -711,7 +711,7 @@ function check_ip_not_banned(){
 #                         WEB                              #
 #----------------------------------------------------------#
 
-@test "WEB: Add web domain" {
+@test "WEB: Add web domain. Wrapper Script for compatibility purposes" {
     run v-add-web-domain $user $domain 198.18.0.125
     assert_success
     refute_output
@@ -722,7 +722,7 @@ function check_ip_not_banned(){
 }
 
 @test "WEB: Add web domain (duplicate)" {
-    run v-add-web-domain $user $domain 198.18.0.125
+    run v-add-web-domain-ipv46 $user $domain 198.18.0.125
     assert_failure $E_EXISTS
 }
 
@@ -844,7 +844,7 @@ function check_ip_not_banned(){
 #----------------------------------------------------------#
 
 @test "WEB: Add IDN domain UTF idn-tést.eu" {
-   run v-add-web-domain $user idn-tést.eu 198.18.0.125
+   run v-add-web-domain-ipv46 $user idn-tést.eu 198.18.0.125
    assert_success
    refute_output
 
@@ -855,7 +855,7 @@ function check_ip_not_banned(){
 
 @test "WEB: Add IDN domain ASCII idn-tést.eu" {
    # Expected to fail due to utf exists
-   run v-add-web-domain $user "xn--idn-tst-fya.eu" 198.18.0.125
+   run v-add-web-domain-ipv46 $user "xn--idn-tst-fya.eu" 198.18.0.125
    assert_failure $E_EXISTS
 }
 
@@ -873,7 +873,7 @@ function check_ip_not_banned(){
 }
 
 @test "WEB: Add IDN domain UTF bløst.рф" {
-   run v-add-web-domain $user bløst.рф 198.18.0.125
+   run v-add-web-domain-ipv46 $user bløst.рф 198.18.0.125
    assert_success
    refute_output
 }
@@ -897,7 +897,7 @@ function check_ip_not_banned(){
     def_phpver=$(multiphp_default_version)
     multi_domain="multiphp.${domain}"
 
-    run v-add-web-domain $user $multi_domain 198.18.0.125
+    run v-add-web-domain-ipv46 $user $multi_domain 198.18.0.125
     assert_success
     refute_output
 
@@ -1143,7 +1143,7 @@ function check_ip_not_banned(){
 @test "Docroot: Self Subfolder" {
     docroot1_domain="docroot1.${domain}"
 
-    run v-add-web-domain $user $docroot1_domain 198.18.0.125
+    run v-add-web-domain-ipv46 $user $docroot1_domain 198.18.0.125
     assert_success
     refute_output
 
@@ -1164,7 +1164,7 @@ function check_ip_not_banned(){
     docroot1_domain="docroot1.${domain}"
     docroot2_domain="docroot2.${domain}"
 
-    run v-add-web-domain $user $docroot2_domain 198.18.0.125
+    run v-add-web-domain-ipv46 $user $docroot2_domain 198.18.0.125
     assert_success
     refute_output
 
@@ -1634,11 +1634,11 @@ function check_ip_not_banned(){
     assert_success
     refute_output
 
-    run v-add-web-domain $user2 $rootdomain
+    run v-add-web-domain-ipv46 $user2 $rootdomain
     assert_success
     refute_output
 
-    run v-add-web-domain $user $subdomain
+    run v-add-web-domain-ipv46 $user $subdomain
     assert_failure $E_EXISTS
 }
 
@@ -1667,7 +1667,7 @@ function check_ip_not_banned(){
 }
 
 @test "Allow Users: User can add user.user2.com" {
-    run v-add-web-domain $user $subdomain
+    run v-add-web-domain-ipv46 $user $subdomain
     assert_success
     refute_output
 }
@@ -1716,12 +1716,12 @@ function check_ip_not_banned(){
 }
 
 @test "Allow Users: User can't add user.user2.com again" {
-    run v-add-web-domain $user $subdomain
+    run v-add-web-domain-ipv46 $user $subdomain
     assert_failure $E_EXISTS
 }
 
 @test "Allow Users: user2 can add user.user2.com again" {
-    run v-add-web-domain $user2 $subdomain
+    run v-add-web-domain-ipv46 $user2 $subdomain
     assert_success
     refute_output
 }

+ 1 - 1
test/wildcard.bats

@@ -23,7 +23,7 @@ function setup() {
 # User and domain needs to already exists as dns domain due to DNS
 
 @test "[ Web ] Create web domain" {
-    run v-add-web-domain $user $domain $ip yes "*.$domain"
+    run v-add-web-domain-ipv46 $user $domain $ip $ipv6 yes "*.$domain"
     assert_success
     refute_output
 }

+ 1 - 1
web/add/web/index.php

@@ -74,7 +74,7 @@ if (!empty($_POST["ok"])) {
 	if (empty($_SESSION["error_msg"])) {
 		exec(
 			HESTIA_CMD .
-				"v-add-web-domain " .
+				"v-add-web-domain-ipv46 " .
 				$user .
 				" " .
 				quoteshellarg($v_domain) .