File debian.postinst of Package egroupware-rocketchat

#! /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
  cd /etc/egroupware-rocketchat
  # change owner of Rocket.Chat data-directory to 65533 used by container
  chown -R 65533:65533 /var/lib/egroupware/default/rocketchat

	# If upgrading, $2 contains the release currently installed, otherwise it's empty
	if [ -z "$2" ]
	then
    # new install
	  # create docker-compose.override.yml from latest-docker-compose.override.yml
    cp latest-docker-compose.override.yml docker-compose.override.yml

    # if HTTP_HOST given, patch docker-compose.override.yml with it and install and integrate Rocket.Chat into EGroupware
    test -z "$HTTP_HOST" || {
      sed -i docker-compose.override.yml \
          -e "s#ROOT_URL=.*#ROOT_URL=https://${HTTP_HOST}/#g"
      ./install-rocketchat.sh
    }
    # otherwise use our primary IP (of interface with default route) and leave installation to Rocket.Chat itself
    test -n "$HTTP_HOST" || \
    sed -i docker-compose.override.yml \
        -e "s#ROOT_URL=.*#ROOT_URL=http://$(ifconfig $(netstat -rn|grep ^0.0.0.0|head -1|sed 's/^.* \(.*\)$/\1/g')|grep 'inet '|sed -En 's/.*inet ([0-9.]+).*/\1/p')/#g"
  else # update
	  # if we dont have it, create docker-compose.override.yml
    test -f docker-compose.override.yml || {
      # if we have modifications in docker-compose.yml update created a docker-compose.yml.dpgk-dist
      test docker-compose.yml.dpgk-dist -nt docker-compose.yml && {
         # use current docker-compose.yml as .override
         sed "s|version:'2'|version:'3'|" docker-compose.yml > docker-compose.override.yml
         # disabling a couple of settings, which would break with MongoDB 5.0 and Rocket.Chat 5.4
         sed -i  docker-compose.override.yml \
          -e "s|^\( *\)\(- MONGO_.*\)$|\1#\2|" \
          -e "s|^\( *\)\(image: *mongo:.*\)$|\1#\2|" \
          -e "s|^\( *\)\(command: *mongod.*\)$|\1#\2|"
         # and move new .dpgk-dist in place
         mv docker-compose.yml.dpgk-dist docker-compose.yml
      } || \
      # otherwise create it from latest-docker-compose.override
      cp latest-docker-compose.override.yml docker-compose.override.yml
    }
    # if docker-compose.yml.dpgk-dist exists and is newer than docker-compose.yml --> replace it
    test docker-compose.yml.dpgk-dist -nt docker-compose.yml && {
      mv docker-compose.yml.dpgk-dist docker-compose.yml
    } || true
    # update to MongoDB to 7.0
    ./update-mongodb.sh 7.0 && {
      # first start old "stable6" image, otherwise some indexes might be missing
      echo "y" | $COMPOSE up -d || true
      echo "Waiting for stable6 RC to start"
      for i in `seq 1 45`; do echo -n .; sleep 1; done; echo
      docker logs rocketchat
      # on success: disable image overwrite, to get quay.io/egroupware/rocket.chat:stable7 from docker-compose.yml
      sed 's/^\( *\)\(image: *.*rocket.chat.*\)$/\1#\2/g' -i docker-compose.override.yml
      # remove mongo service overwrites, as docker-compose.yml has everything for 7.0
      sed -e '/^ *mongo:/,+99d' -i docker-compose.override.yml
    } || {
      true # do nothing as RC 7.x still supports MongoDB 5.0, it's only deprecated
    }
	fi

	# (re-)start our containers (do NOT fail package installation on error, as this leaves package in a wired state!)
	$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
			[ -d /etc/nginx/app.d ] || mkdir /etc/nginx/app.d
			ln -fs ../../egroupware-rocketchat/nginx.conf /etc/nginx/app.d/egroupware-rocketchat.conf
		fi
		nginx -s reload
	fi
	if [ -d /etc/apache2 -a -x /usr/sbin/a2enmod ]
	then
		# initial install: add Include /etc/egroupware-rocketchat/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-rocketchat/apache.conf' $conf)" ] && \
					sed -i 's|</VirtualHost>|\t# Rocket.Chat proxy needs to be included inside vhost\n\tinclude /etc/egroupware-rocketchat/apache.conf\n\n</VirtualHost>|g' $conf && \
					echo "Include /etc/egroupware-rocketchat/apache.conf added to site $conf"
			done
		fi
		a2enmod proxy
		a2enmod proxy_http
		a2enmod proxy_wstunnel
		a2enmod rewrite
		webserver_soft_reload apache2
	fi
fi

#DEBHELPER#

db_stop
openSUSE Build Service is sponsored by