#!/bin/sh

# TEMPORARY Preset for ctctl DERIVATIVE OF "server_debian.inc"



case "$Type" in
	"ovz" )
		printf '%s\n' "${sERROR}E: Container type \"${Type}\" not yet implemented for preset: ${Preset}.${fRESET}" 1>&2
		LastStatus=63 ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		;;
	"lxc" )
#		printf '%s\n' "======================================================================"
		printf "${sHEAD0}\n   SETUP FOR DEBIAN SERVER ${ParO}LXC VPS${ParC}   \n${fRESET}\n"

		if [ $StatusCode -eq 0 ] ; then
			preset_debian_EssentialVPS_FqdnIP
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		if [ $StatusCode -eq 0 ] ; then
			Force1DNS="$(WorkingInternetDNS)"
		fi
		if [ $StatusCode -eq 0 ] ; then
			# This before EssentialVPS: Because EssentialVPS changes networking and DNS can become invalid.
			preset_debian_LocalDNS 0 $Force1DNS
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi

		# ConfigVps
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_EssentialVPS_2
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_CheckFQDNtoPublicIP $Force1DNS
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
				
		# dpkg force-unsafe-io
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_DpkgAcceleration
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		
		# sudo screen netselect-apt aptitude...
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_AdminUtils
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Geographic/random, Nice repos
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_NiceRepos
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# SSH server
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_SshServer
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Default UMASK
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_DefaultUmask
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Administrator user account
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_UserAccount
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# chmod o=
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_ProtectHomes
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Instead of dpkg-reconfigure tzdata
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_TimeZone
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Patch about LXC kernel log
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_LxcKernelLog
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		
		# Logs timestamps format
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_LogsTimeFormat
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# locales
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_Locales
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# backports
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_BackportRepos
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# update && upgrade
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_ApplyUpdates
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Networking and more tools
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_NetAndCompressionTools
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# sesele
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_Sesele
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# aukups
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_Aukups
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# motd.sh
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_Motd
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Attacks protection
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_AntiAssault
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		
# This really slows down setup, and maybe other software too.
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_SecurityCheckers
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi

		# x509 certificate
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_PublicCertificate
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# MTA
#		if [ $StatusCode -eq 0 ] ; then
##			printf "${sHEAD0}   Installing MTA for mail notify service$   {fRESET}\n"
##			CurDebianVpsInstall_LXC --install-recommends exim4
#			preset_debian_MTA
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
#		if [ $StatusCode -eq 0 ] ; then
#			PipelineableExec=0
##			RunInLxc "$VEID" '' dpkg-reconfigure exim4-config
#			if [ -f "${VpsRoot}/etc/default/locale" ] ; then
#				RunInLxc "$VEID" '' sh -c ". /etc/default/locale ; dpkg-reconfigure exim4-config"
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			else
#				RunInLxc "$VEID" '' dpkg-reconfigure exim4-config
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			fi
#			PipelineableExec=
#		fi
#		if [ $StatusCode -eq 0 ] ; then
#			# Allow Exim to read x509 certificates
#			CurService_ToRestart=0
#			CurValue1="EximUser=\"\$(echo \$(ps -A -o pid,cmd | grep -ie 'exim' | grep -ve ' grep ' | head -n 1) | cut -f 1 -d ' ')\"
#EximUser=\"\$(echo \$(cat /proc/\${EximUser}/status | grep -ie '^Uid:' | cut -f 2- -d ':') | cut -f 2 -d ' ')\"
#EximUser=\"\$(cat /etc/passwd | cut -f 1,3 -d ':' | grep -e \":\${EximUser}\$\" | cut -f 1 -d ':')\"
#EximGroup=\"\$(cat /etc/passwd | grep -e \"^\${EximUser}:\" | cut -f 4 -d ':')\"
#EximGroup=\"\$(cat /etc/group | cut -f 1,3 -d ':' | grep -e \":\${EximGroup}\$\" | cut -f 1 -d ':')\"
#usermod --append --groups x509 \$EximUser
#exit $?"
#			RunInLxc "$VEID" '' "$CurValue1"
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			CurService_ToRestart=1
#			# TLS FOR EXIM MX
#			if [ "$VpsFQDN" != "." ] ; then
#				HeloName="$VpsFQDN"
#				if [ -f "${VpsRoot}/etc/sesele/local-certs/${HeloName}/privkey.pem" ] ; then
#					if [ "$(cat "$File" | grep -e '^MAIN_TLS_CERTIFICATE.*=')" = "" ] ; then
#						GuestFile="/etc/exim4/conf.d/main/01_local_ssl"
#						File="${VpsRoot}/${GuestFile}"
#						PutFileInVps_LXC "$VEID" /dev/null "$GuestFile"
#						LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#						printf '%s\n' "MAIN_TLS_ENABLE = yes" >> "$File"
#						printf '%s\n' "MAIN_TLS_CERTIFICATE = /etc/sesele/local-certs/${HeloName}/fullchain.pem" >> "$File"
#						printf '%s\n' "MAIN_TLS_PRIVATEKEY = /etc/sesele/local-certs/${HeloName}/privkey.pem" >> "$File"
#						CurService_ToRestart=1
#					fi
#				else
#					printf '%s\n' "W: Still no $HeloName certificates in sesele configuration tree." 1>&2
#				fi
#			fi
#			# Allow to rebase RFC max line length of 998 characters
#			GuestFile="/etc/exim4/conf.d/acl/00_local"
#			File="${VpsRoot}/${GuestFile}"
#			if [ ! -f "$File" ] ; then
#				PutFileInVps_LXC "$VEID" /dev/null "$GuestFile"
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			fi
#			if [ "$(cat "$File" 2>/dev/null | grep -ie 'line.*limit=')" = "" ] ; then
#				echo IGNORE_SMTP_LINE_LENGTH_LIMIT=1 >> "$File"
#				CurService_ToRestart=1
#			fi
#			# Disable IPv6 on top of 02_exim4-config_options
#			GuestFile="/etc/exim4/conf.d/main/02_exim4-config_options"
#			File="${VpsRoot}/${GuestFile}"
#			if [ ! -f "$File" ] ; then
#				PutFileInVps_LXC "$VEID" /dev/null "$GuestFile"
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			fi
#			PreviousContent="$(cat "$File")"  #"
#			if [ "$(printf '%s' "$PreviousContent" | grep -e '^disable_ipv6=')" = "" ] ; then
#				printf '%s\n' "Disabling IPv6 for EXIM"
#				printf '%s\n' disable_ipv6=true > "$File"
#				printf '%s\n' "$PreviousContent" >> "$File"
#				CurService_ToRestart=1
#			else
#				printf '%s\n' "I: IPv6 was already disabled for EXIM"
#			fi
#			printf '%s\n' "When some manual change is done to EXIM configuration files, after that must do \"update-exim4.conf\" and \"systemctl reload exim4\""
#			RunInLxc "$VEID" '' update-exim4.conf
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			printf '%s\n' "The (helo) name announced by the SMTP service is in /etc/hosts"
#			printf '%s\n' "The default domain for the senders is in /etc/mailname"
#			if [ $CurService_ToRestart -eq 1 ] ; then
#				printf '%s\n' "Restarting EXIM to apply changes"
#				CurService_LXC restart exim4
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			fi
#			if [ $StatusCode -eq 0 ] ; then
#				printf "${sPROMPT}Enter an e-mail address if you want to trigger a sending test now:${fRESET}\n"
#				read TestEmail
#				if [ "$TestEmail" != "" ] ; then
#					RunInLxc "$VEID" '' sh -c "echo 'Production leaving' | mail -s \"[\$(hostname -s)] Mail test \$(date +'%Y%m%d.%H%M%S')\" $TestEmail"
#					LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#				fi
#			fi
#		fi
#		if [ $StatusCode -eq 0 ] ; then
#			printf "${sHEAD1}Independent mail client for command line${fRESET} (alternative to 'mail' command for scripts too)\n"
#			if [ ! -e "${VpsRoot}/usr/share/doc/swaks" ] ; then
#				printf '%s\n' "Installing swaks"
#				CurDebianVpsInstall_LXC --install-recommends swaks
#				LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#			else
#				printf '%s\n' "I: swaks was already installed"
#			fi
#		fi
		
		# Monitoring
#		if [ $StatusCode -eq 0 ] ; then
#			preset_debian_Monitoring
#			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
#		fi
		
		# Clean
		if [ $StatusCode -eq 0 ] ; then
			preset_debian_Clean
			LastStatus=$? ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		fi
		;;
	* )
		printf '%s\n' "${sERROR}E: Unknown or unsupported container type \"${Type}\" for preset: ${Preset}.${fRESET}" 1>&2
		LastStatus=80 ; if [ $StatusCode -eq 0 ] ; then StatusCode=$LastStatus ; fi
		;;
esac
