File debian.postinst of Package egroupware-collabora-key

#! /bin/sh

#export DEBCONF_DEBUG=developer
set -e
# das hier muss ganz oben stehen (man debconf-devel)
. /usr/share/debconf/confmodule
db_version 2.0


webserver_soft_reload() {
	if command -v invoke-rc.d >/dev/null 2>&1; then
		invoke-rc.d "$1" force-reload || :
	else
		[ -x /etc/init.d/"$1" ] && /etc/init.d/"$1" force-reload || :
	fi
}

# check if docker compose is available (Ubuntu 24.04 stalls on docker-compose!)
COMPOSE="docker compose"
docker help compose >/dev/null || {
	COMPOSE="docker-compose"
}

if [ "$1" = configure -o "$1" = upgrade ]
then
	# If upgrading, $2 contains the release currently installed, otherwise it's empty
	if [ -z "$2" ]
	then
		# new install
		# change owner of [cl]]oolwsd.xml so EGroupware can change it
		chown -R www-data:www-data /var/lib/egroupware/default/loolwsd/[cl]oolwsd.xml
	else # upgrade
	  # if we have no separate coolwsd.xml created it now, but patch in termination and support_key from loolwsd.xml
	  test ! -s /var/lib/egroupware/default/loolwsd/coolwsd.xml -a -f /var/lib/egroupware/default/loolwsd/coolwsd.xml.dpkg-dist && {
	    cd /etc/egroupware-collabora-key
	    $COMPOSE stop
	    $COMPOSE rm -f
	    # if we are not using the current docker-compose.yml, mv it in place, but keep extra_hosts
	    test -f docker-compose.yml.dpkg-dist && {
        (echo; grep -A2 '^ *extra_hosts:' docker-compose.yml | grep -v '^ *#') >> docker-compose.yml.dpkg-dist
        mv docker-compose.yml docker-compose.yml.dpkg-old
        mv docker-compose.yml.dpkg-dist docker-compose.yml
	    } || true
	    cd /var/lib/egroupware/default/loolwsd
	    mv coolwsd.xml.dpkg-dist coolwsd.xml
	    grep '<termination .*>true</termination>' loolwsd.xml &&
	      sed 's#>false</termination>#>true</termination>#' -i /var/lib/egroupware/default/loolwsd/coolwsd.xml || true
	    grep '<support_key>.*</support_key>' loolwsd.xml &&
	      sed "s#<support_key></support_key>#<support_key>$(grep '<support_key>.*</support_key>' /var/lib/egroupware/default/loolwsd/loolwsd.xml|sed 's/^ *//')</support_key>#" \
	        -i /var/lib/egroupware/default/loolwsd/coolwsd.xml || true
	  } || true
	fi

	# (re-)start our containers (do NOT fail as it leaves package in a wired state)
	cd /etc/egroupware-collabora-key
	$COMPOSE pull && \
	echo "y" | $COMPOSE up -d || true

	# Set up web server and reload it.
	if [ -d /etc/nginx -a -x /usr/sbin/nginx ]
	then
		# initial install: enable egroupware and disable default site
		if [ -z "$2" ]
		then
			# fix older EGroupware nginx.conf to include app.d/egroupware*.conf
			[ -d /etc/egroupware ] && [ -f /etc/egroupware/nginx.conf ] && \
				[ -z "$(grep  'include app.d/' /etc/egroupware/nginx.conf)" ] && \
				sed -i 's|# EGroupware installed in /usr/share/egroupware|# include other EGroupware parts like Collabora\n\tinclude app.d/egroupware*.conf;\n\n\t# EGroupware installed in /usr/share/egroupware|g' /etc/egroupware/nginx.conf

			[ -d /etc/nginx/app.d ] || mkdir /etc/nginx/app.d
			ln -fs ../../egroupware-collabora-key/nginx.conf /etc/nginx/app.d/egroupware-collabora-key.conf
		fi
		nginx -s reload
	fi
	if [ -d /etc/apache2 -a -x /usr/sbin/a2enmod ]
	then
		# initial install: add Include /etc/egroupware-collabora-key/apache.conf to all vhosts
		if [ -z "$2" ]
		then
			cd /etc/apache2/sites-available
			for conf in $(grep -il '<VirtualHost ' *.conf)
			do
				[ -z "$(grep '/etc/egroupware-collabora-key/apache.conf' $conf)" ] && \
					sed -i 's|</VirtualHost>|\t# Collabora proxy needs to be included inside vhost\n\tinclude /etc/egroupware-collabora-key/apache.conf\n\n</VirtualHost>|g' $conf && \
					echo "Include /etc/egroupware-collabora-key/apache.conf added to site $conf"
			done
		fi
		a2enmod proxy
		a2enmod proxy_http
		a2enmod proxy_wstunnel
		webserver_soft_reload apache2
	fi
fi

#DEBHELPER#

db_stop
openSUSE Build Service is sponsored by