Files
upstream-jicofo/debian/postinst
upstream-mirror fcbc274d01
Some checks failed
Java CI with Maven / Java 21 (push) Failing after 4m41s
Java CI with Maven / Java 17 (push) Failing after 4m42s
snapshot of https://github.com/jitsi/jicofo.git @ 9ab59aa3d348e282da89da2c9f11ecbecd3f7b79 (2026-09-15)
2026-09-15 16:13:53 +05:00

168 lines
6.5 KiB
Bash

#!/bin/bash
# postinst script for jicofo
set -e
case "$1" in
configure)
CONFIG="/etc/jitsi/jicofo/config"
# we don't want to regenerate config on upgrade
OLDCONFIG="false"
if [ -f $CONFIG ]; then
. $CONFIG
if [ -n "$JICOFO_HOSTNAME" ] \
&& [ -n "$JICOFO_AUTH_DOMAIN" ] && [ -n "$JICOFO_AUTH_USER" ] && [ -n "$JICOFO_AUTH_PASSWORD" ]; then
OLDCONFIG="true"
fi
fi
# debconf hostname question
. /usr/share/debconf/confmodule
# try to get host from jitsi-videobridge
db_get jitsi-videobridge/jvb-hostname
if [ -z "$RET" ] ; then
# server hostname
db_set jitsi-videobridge/jvb-hostname "localhost"
db_input critical jitsi-videobridge/jvb-hostname || true
db_go
fi
JVB_HOSTNAME=$(echo "$RET" | xargs echo -n)
# generate config on new install
if [ "$OLDCONFIG" = "false" ] || [ "$JVB_HOSTNAME" != "$JICOFO_HOSTNAME" ]; then
JICOFO_HOSTNAME="$JVB_HOSTNAME"
JICOFO_AUTH_DOMAIN="auth.$JICOFO_HOSTNAME"
JICOFO_AUTH_USER="focus"
db_get jicofo/jicofo-authpassword
if [ -z "$RET" ] ; then
RET=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16`
fi
JICOFO_AUTH_PASSWORD="$RET"
# This re-creates $CONFIG. If previous values existed, they will be set in jicofo.conf below.
echo '# adds java system props that are passed to jicofo (default are for home and logging config file)' > $CONFIG
echo "JAVA_SYS_PROPS=\"-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi\
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo\
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi\
-Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties\"" >> $CONFIG
fi
# Store values, so we can use it if we are configuring other packages on the same machine
# we are currently doing this on every upgrade in order to be able to successfully upgrade
# from old packages, otherwise we can do it only on new configuration or reconfiguration
db_set jicofo/jicofo-authpassword "$JICOFO_AUTH_PASSWORD"
# and we're done with debconf
db_stop
OLD_JITSI_CONFIG="/etc/jitsi/jicofo/sip-communicator.properties"
HOCON_CONFIG="/etc/jitsi/jicofo/jicofo.conf"
if [ ! -f $HOCON_CONFIG ]; then
echo "Generating an empty jicofo.conf file"
echo "# Jicofo HOCON configuration. See reference.conf in /usr/share/jicofo/jicofo.jar for
#available options, syntax, and default values.
jicofo {
}" >> $HOCON_CONFIG
fi
# Make sure the client-proxy is set correctly.
hocon -f $HOCON_CONFIG set jicofo.xmpp.client.client-proxy "\"focus.$JVB_HOSTNAME\""
# Set the client XMPP config in jicofo.conf. The values were either read from an existing
# /etc/jitsi/jicofo/config or generated above.
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.xmpp-domain" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.xmpp-domain" "\"$JICOFO_HOSTNAME\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.domain" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.domain" "\"$JICOFO_AUTH_DOMAIN\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.username" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.username" "\"$JICOFO_AUTH_USER\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.password" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.password" "\"$JICOFO_AUTH_PASSWORD\""
fi
# Add the JvbBrewery config if missing
if ! grep -sq "org.jitsi.jicofo.BRIDGE_MUC" "$OLD_JITSI_CONFIG" ;then
if ! hocon -f $HOCON_CONFIG get "jicofo.bridge.brewery-jid" > /dev/null 2>&1 ; then
hocon -f $HOCON_CONFIG set "jicofo.bridge.brewery-jid" \"JvbBrewery@internal.auth.${JVB_HOSTNAME}\"
fi
fi
# Mark the jibri domain as trusted unless the trusted-domains have been set.
if [[ $(hocon -j -f $HOCON_CONFIG get "jicofo.xmpp.trusted-domains" 2> /dev/null | jq -r "type") != "array" ]] ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.trusted-domains" "[ \"recorder.$JVB_HOSTNAME\" ]"
fi
# we don't want to start the daemon as root
if ! getent group jitsi > /dev/null ; then
groupadd jitsi
fi
if ! getent passwd jicofo > /dev/null ; then
useradd -r -g jitsi --shell /bin/bash --create-home -d /usr/share/jicofo jicofo
fi
if ! groups jicofo | grep '\bjitsi\b' > /dev/null ; then
usermod -g jitsi jicofo
fi
mkdir -p /usr/share/jicofo
# we claim the home folder of jicofo in case it is owned by someone else
OWNER=$(stat -c '%U' /usr/share/jicofo)
GROUP=$(stat -c '%G' /usr/share/jicofo)
if ! dpkg-statoverride --list /usr/share/jicofo/* >/dev/null && [ "$OWNER:$GROUP" != "jicofo:jitsi" ]; then
chown -R jicofo:jitsi /usr/share/jicofo
OWNER=jicofo
GROUP=jitsi
fi
CONFIG_DIR=$(dirname $CONFIG)
if ! dpkg-statoverride --list "$CONFIG_DIR" >/dev/null; then
chown -R jicofo:jitsi "$CONFIG_DIR"
chmod 750 "$CONFIG_DIR"
fi
# die logz
if [ ! -d /var/log/jitsi ]; then
mkdir -p /var/log/jitsi
chown $OWNER:$GROUP /var/log/jitsi
chmod 770 /var/log/jitsi
fi
ls /var/log/jitsi/jicofo* 1>/dev/null 2>&1 && chown -f -R $OWNER:$GROUP /var/log/jitsi/jicofo*
ls /var/log/jitsi/jicofo* 1>/dev/null 2>&1 && chmod -f -R 640 /var/log/jitsi/jicofo*
# ensure focus is not running - it will be started at the end
if invoke-rc.d jicofo status >/dev/null 2>&1 ; then
invoke-rc.d jicofo stop || true
fi
# clean up old jicofo group
if getent group jicofo > /dev/null; then
groupdel jicofo
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0