"Fossies" - the Fresh Open Source Software Archive

Member "jitsi-meet-7555/debian/jitsi-meet-web-config.postinst" (28 Sep 2023, 16330 Bytes) of package /linux/misc/jitsi-meet-7555.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/bin/bash
    2 # postinst script for jitsi-meet-web-config
    3 #
    4 # see: dh_installdeb(1)
    5 
    6 set -e
    7 
    8 # summary of how this script can be called:
    9 #        * <postinst> `configure' <most-recently-configured-version>
   10 #        * <old-postinst> `abort-upgrade' <new version>
   11 #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
   12 #          <new-version>
   13 #        * <postinst> `abort-remove'
   14 #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
   15 #          <failed-install-package> <version> `removing'
   16 #          <conflicting-package> <version>
   17 # for details, see http://www.debian.org/doc/debian-policy/ or
   18 # the debian-policy package
   19 
   20 case "$1" in
   21     configure)
   22 
   23         # loading debconf
   24         . /usr/share/debconf/confmodule
   25 
   26         # try to get host from jitsi-videobridge
   27         db_get jitsi-videobridge/jvb-hostname
   28         if [ -z "$RET" ] ; then
   29             # server hostname
   30             db_set jitsi-videobridge/jvb-hostname "localhost"
   31             db_input critical jitsi-videobridge/jvb-hostname || true
   32             db_go
   33             db_get jitsi-videobridge/jvb-hostname
   34         fi
   35         JVB_HOSTNAME=$(echo "$RET" | xargs echo -n)
   36 
   37         # detect dpkg-reconfigure
   38         RECONFIGURING="false"
   39         db_get jitsi-meet/jvb-hostname
   40         JVB_HOSTNAME_OLD=$(echo "$RET" | xargs echo -n)
   41         if [ -n "$RET" ] && [ ! "$JVB_HOSTNAME_OLD" = "$JVB_HOSTNAME" ] ; then
   42             RECONFIGURING="true"
   43             rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
   44         fi
   45 
   46         # stores the hostname so we will reuse it later, like in purge
   47         db_set jitsi-meet/jvb-hostname $JVB_HOSTNAME
   48 
   49         NGINX_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'nginx' 2>/dev/null | awk '{print $3}' || true)"
   50         NGINX_FULL_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'nginx-full' 2>/dev/null | awk '{print $3}' || true)"
   51         NGINX_EXTRAS_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'nginx-extras' 2>/dev/null | awk '{print $3}' || true)"
   52         if [ "$NGINX_INSTALL_CHECK" = "installed" ] \
   53            || [ "$NGINX_INSTALL_CHECK" = "unpacked" ] \
   54            || [ "$NGINX_FULL_INSTALL_CHECK" = "installed" ] \
   55            || [ "$NGINX_FULL_INSTALL_CHECK" = "unpacked" ] \
   56            || [ "$NGINX_EXTRAS_INSTALL_CHECK" = "installed" ] \
   57            || [ "$NGINX_EXTRAS_INSTALL_CHECK" = "unpacked" ] ; then
   58             FORCE_NGINX="true"
   59         fi
   60         OPENRESTY_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'openresty' 2>/dev/null | awk '{print $3}' || true)"
   61         if [ "$OPENRESTY_INSTALL_CHECK" = "installed" ] || [ "$OPENRESTY_INSTALL_CHECK" = "unpacked" ] ; then
   62             FORCE_OPENRESTY="true"
   63         fi
   64         APACHE_INSTALL_CHECK="$(dpkg-query -f '${Status}' -W 'apache2' 2>/dev/null | awk '{print $3}' || true)"
   65         if [ "$APACHE_INSTALL_CHECK" = "installed" ] || [ "$APACHE_INSTALL_CHECK" = "unpacked" ] ; then
   66             FORCE_APACHE="true"
   67         fi
   68         # In case user enforces apache and if apache is available, unset nginx.
   69         RET=""
   70         db_get jitsi-meet/enforce_apache || RET="false"
   71         if [ "$RET" = "true" ] && [ "$FORCE_APACHE" = "true" ]; then
   72             FORCE_NGINX="false"
   73         fi
   74 
   75         UPLOADED_CERT_CHOICE="I want to use my own certificate"
   76         LE_CERT_CHOICE="Let's Encrypt certificates"
   77         # if first time config ask for certs, or if we are reconfiguring
   78         if [ -z "$JVB_HOSTNAME_OLD" ] || [ "$RECONFIGURING" = "true" ] ; then
   79             RET=""
   80             # ask the question only if there is nothing stored, option to pre-set it on install in automations
   81             db_get jitsi-meet/cert-choice
   82             CERT_CHOICE="$RET"
   83             if [ -z "$CERT_CHOICE" ] ; then
   84                 db_input critical jitsi-meet/cert-choice || true
   85                 db_go
   86                 db_get jitsi-meet/cert-choice
   87                 CERT_CHOICE="$RET"
   88             fi
   89 
   90             if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ]; then
   91                 RET=""
   92                 db_get jitsi-meet/cert-path-key
   93                 if [ -z "$RET" ] ; then
   94                     db_set jitsi-meet/cert-path-key "/etc/ssl/$JVB_HOSTNAME.key"
   95                     db_input critical jitsi-meet/cert-path-key || true
   96                     db_go
   97                     db_get jitsi-meet/cert-path-key
   98                 fi
   99                 CERT_KEY="$RET"
  100                 RET=""
  101                 db_get jitsi-meet/cert-path-crt
  102                 if [ -z "$RET" ] ; then
  103                     db_set jitsi-meet/cert-path-crt "/etc/ssl/$JVB_HOSTNAME.crt"
  104                     db_input critical jitsi-meet/cert-path-crt || true
  105                     db_go
  106                     db_get jitsi-meet/cert-path-crt
  107                 fi
  108                 CERT_CRT="$RET"
  109             else
  110                 # create self-signed certs (we also need them for the case of LE so we can start nginx)
  111                 CERT_KEY="/etc/jitsi/meet/$JVB_HOSTNAME.key"
  112                 CERT_CRT="/etc/jitsi/meet/$JVB_HOSTNAME.crt"
  113                 HOST="$( (hostname -s; echo localhost) | head -n 1)"
  114                 DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"
  115                 openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj \
  116                     "/O=$DOMAIN/OU=$HOST/CN=$JVB_HOSTNAME/emailAddress=webmaster@$HOST.$DOMAIN" \
  117                     -keyout $CERT_KEY \
  118                     -out $CERT_CRT \
  119                     -reqexts SAN \
  120                     -extensions SAN \
  121                     -config <(cat /etc/ssl/openssl.cnf \
  122                         <(printf "[SAN]\nsubjectAltName=DNS:localhost,DNS:$JVB_HOSTNAME"))
  123 
  124                 if [ "$CERT_CHOICE" = "$LE_CERT_CHOICE" ]; then
  125                     db_subst jitsi-meet/email domain "${JVB_HOSTNAME}"
  126                     db_input critical jitsi-meet/email || true
  127                     db_go
  128                     db_get jitsi-meet/email
  129                     EMAIL="$RET"
  130                     if [ ! -z "$EMAIL" ] ; then
  131                         ISSUE_LE_CERT="true"
  132                     fi
  133                 fi
  134             fi
  135         fi
  136 
  137         # jitsi meet
  138         JITSI_MEET_CONFIG="/etc/jitsi/meet/$JVB_HOSTNAME-config.js"
  139         if [ ! -f $JITSI_MEET_CONFIG ] ; then
  140             cp /usr/share/jitsi-meet-web-config/config.js $JITSI_MEET_CONFIG
  141             # replaces needed config for multidomain as it works only with nginx
  142             if [[ "$FORCE_NGINX" = "true" ]] ; then
  143                 sed -i "s/conference.jitsi-meet.example.com/conference.<\!--# echo var=\"subdomain\" default=\"\" -->jitsi-meet.example.com/g" $JITSI_MEET_CONFIG
  144             fi
  145             sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" $JITSI_MEET_CONFIG
  146         fi
  147 
  148         if [ "$CERT_CHOICE" = "$LE_CERT_CHOICE" ] || [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ]; then
  149             # Make sure jaas-choice is not answered already
  150             db_get jitsi-meet/jaas-choice
  151             JAAS_INPUT="$RET"
  152             if [ -z "$JAAS_INPUT" ] ; then
  153                 db_subst jitsi-meet/jaas-choice domain "${JVB_HOSTNAME}"
  154                 db_set jitsi-meet/jaas-choice false
  155                 db_input critical jitsi-meet/jaas-choice || true
  156                 db_go
  157                 db_get jitsi-meet/jaas-choice
  158                 JAAS_INPUT="$RET"
  159             fi
  160         fi
  161 
  162         if [ "${JAAS_INPUT}" = "true" ] && ! grep -q "^var enableJaaS = true;$" $JITSI_MEET_CONFIG;  then
  163             if grep -q "^var enableJaaS = false;$" $JITSI_MEET_CONFIG; then
  164                 sed -i "s/^var enableJaaS = false;$/var enableJaaS = true;/g" $JITSI_MEET_CONFIG
  165             else
  166                 # old config, let's add the lines at the end. Adding var enableJaaS to avoid adding it on update again
  167                 echo "var enableJaaS = true;" >> $JITSI_MEET_CONFIG
  168                 echo "config.dialInNumbersUrl = 'https://conference-mapper.jitsi.net/v1/access/dids';" >> $JITSI_MEET_CONFIG
  169                 echo "config.dialInConfCodeUrl = 'https://conference-mapper.jitsi.net/v1/access';" >> $JITSI_MEET_CONFIG
  170 
  171                 # Sets roomPasswordNumberOfDigits only if there was not already set
  172                 if ! cat $JITSI_MEET_CONFIG | grep roomPasswordNumberOfDigits | grep -qv //; then
  173                     echo "config.roomPasswordNumberOfDigits = 10; // skip re-adding it (do not remove comment)" >> $JITSI_MEET_CONFIG
  174                 fi
  175             fi
  176         fi
  177 
  178         # Fixes multi-stream flags to workaround problem with mobile joining a multi-stream call with multi-stream disabled
  179         FIX_MSG="// Temporary backwards compatibility with old mobile clients."
  180         if ! grep -q "^${FIX_MSG}" $JITSI_MEET_CONFIG; then
  181             echo  $FIX_MSG >> $JITSI_MEET_CONFIG
  182             echo "config.flags = config.flags || {};" >> $JITSI_MEET_CONFIG
  183         fi
  184         if ! grep -q "^config.flags.sourceNameSignaling*" $JITSI_MEET_CONFIG; then
  185             echo "config.flags.sourceNameSignaling = true;" >> $JITSI_MEET_CONFIG
  186         fi
  187         if ! grep -q "^config.flags.sendMultipleVideoStreams*" $JITSI_MEET_CONFIG; then
  188             echo "config.flags.sendMultipleVideoStreams = true;" >> $JITSI_MEET_CONFIG
  189         fi
  190         if ! grep -q "^config.flags.receiveMultipleVideoStreams*" $JITSI_MEET_CONFIG; then
  191             echo "config.flags.receiveMultipleVideoStreams = true;" >> $JITSI_MEET_CONFIG
  192         fi
  193 
  194         if [[ "$FORCE_OPENRESTY" = "true" ]]; then
  195             NGX_COMMON_CONF_PATH="/usr/local/openresty/nginx/conf/$JVB_HOSTNAME.conf"
  196             NGX_SVC_NAME=openresty
  197             OPENRESTY_NGX_CONF="/usr/local/openresty/nginx/conf/nginx.conf"
  198         else
  199             NGX_COMMON_CONF_PATH="/etc/nginx/sites-available/$JVB_HOSTNAME.conf"
  200             NGX_SVC_NAME=nginx
  201         fi
  202 
  203         if [[ ( "$FORCE_NGINX" = "true" || "$FORCE_OPENRESTY" = "true" ) && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
  204 
  205             # this is a reconfigure, lets just delete old links
  206             if [ "$RECONFIGURING" = "true" ] ; then
  207                 rm -f /etc/nginx/sites-enabled/$JVB_HOSTNAME_OLD.conf
  208                 rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
  209                 if [[ "$FORCE_OPENRESTY" = "true" ]]; then
  210                     sed -i "/include.*$JVB_HOSTNAME_OLD/d" "$OPENRESTY_NGX_CONF"
  211                 fi
  212             fi
  213 
  214             # nginx conf
  215             if [ ! -f "$NGX_COMMON_CONF_PATH" ] ; then
  216                 cp /usr/share/jitsi-meet-web-config/jitsi-meet.example "$NGX_COMMON_CONF_PATH"
  217                 if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ] && ! [[ "$FORCE_OPENRESTY" = "true" ]] ; then
  218                     ln -s "$NGX_COMMON_CONF_PATH" /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
  219                 fi
  220                 sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" "$NGX_COMMON_CONF_PATH"
  221 
  222                 if [[ "$FORCE_OPENRESTY" = "true" ]]; then
  223                     OPENRESTY_NGX_CONF_MD5_ORIG=$(dpkg-query -s openresty | sed -n '/\/nginx\.conf /{s@.* @@;p}')
  224                     OPENRESTY_NGX_CONF_MD5_USERS=$(md5sum "$OPENRESTY_NGX_CONF" | sed 's@ .*@@')
  225                     if [[ "$OPENRESTY_NGX_CONF_MD5_USERS" = "$OPENRESTY_NGX_CONF_MD5_ORIG" ]]; then
  226                        sed -i "/^http \x7b/,/^\x7d/s@^\x7d@\tinclude $NGX_COMMON_CONF_PATH;\n\x7d@" "$OPENRESTY_NGX_CONF"
  227                     fi
  228                 fi
  229             fi
  230 
  231             if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
  232                 # replace self-signed certificate paths with user provided ones
  233                 CERT_KEY_ESC=$(echo $CERT_KEY | sed 's/\./\\\./g')
  234                 CERT_KEY_ESC=$(echo $CERT_KEY_ESC | sed 's/\//\\\//g')
  235                 sed -i "s/ssl_certificate_key\ \/etc\/jitsi\/meet\/.*key/ssl_certificate_key\ $CERT_KEY_ESC/g" \
  236                     "$NGX_COMMON_CONF_PATH"
  237                 CERT_CRT_ESC=$(echo $CERT_CRT | sed 's/\./\\\./g')
  238                 CERT_CRT_ESC=$(echo $CERT_CRT_ESC | sed 's/\//\\\//g')
  239                 sed -i "s/ssl_certificate\ \/etc\/jitsi\/meet\/.*crt/ssl_certificate\ $CERT_CRT_ESC/g" \
  240                     "$NGX_COMMON_CONF_PATH"
  241             fi
  242 
  243             invoke-rc.d $NGX_SVC_NAME reload || true
  244         elif [[ "$FORCE_APACHE" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
  245 
  246             # this is a reconfigure, lets just delete old links
  247             if [ "$RECONFIGURING" = "true" ] ; then
  248                 a2dissite $JVB_HOSTNAME_OLD.conf
  249                 rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
  250             fi
  251 
  252             # apache2 config
  253             if [ ! -f /etc/apache2/sites-available/$JVB_HOSTNAME.conf ] ; then
  254                 # when creating new config, make sure all needed modules are enabled
  255                 a2enmod rewrite ssl headers proxy_http proxy_wstunnel include
  256                 cp /usr/share/jitsi-meet-web-config/jitsi-meet.example-apache /etc/apache2/sites-available/$JVB_HOSTNAME.conf
  257                 a2ensite $JVB_HOSTNAME.conf
  258                 sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/apache2/sites-available/$JVB_HOSTNAME.conf
  259             fi
  260 
  261             if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
  262                 # replace self-signed certificate paths with user provided ones
  263                 CERT_KEY_ESC=$(echo $CERT_KEY | sed 's/\./\\\./g')
  264                 CERT_KEY_ESC=$(echo $CERT_KEY_ESC | sed 's/\//\\\//g')
  265                 sed -i "s/SSLCertificateKeyFile\ \/etc\/jitsi\/meet\/.*key/SSLCertificateKeyFile\ $CERT_KEY_ESC/g" \
  266                     /etc/apache2/sites-available/$JVB_HOSTNAME.conf
  267                 CERT_CRT_ESC=$(echo $CERT_CRT | sed 's/\./\\\./g')
  268                 CERT_CRT_ESC=$(echo $CERT_CRT_ESC | sed 's/\//\\\//g')
  269                 sed -i "s/SSLCertificateFile\ \/etc\/jitsi\/meet\/.*crt/SSLCertificateFile\ $CERT_CRT_ESC/g" \
  270                     /etc/apache2/sites-available/$JVB_HOSTNAME.conf
  271             fi
  272 
  273             invoke-rc.d apache2 reload || true
  274         fi
  275 
  276         # If scripts fail they will print suggestions for next steps, do not fail install
  277         # those can be re-run later
  278         # run the scripts only on new install or when re-configuring
  279         if [[ "$ISSUE_LE_CERT" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
  280             /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh $EMAIL $JVB_HOSTNAME || true
  281         fi
  282         JAAS_REG_ERROR=0
  283         if [[ "${JAAS_INPUT}" = "true" && ( -z "$JVB_HOSTNAME_OLD" || "$RECONFIGURING" = "true" ) ]] ; then
  284             /usr/share/jitsi-meet/scripts/register-jaas-account.sh $EMAIL $JVB_HOSTNAME || JAAS_REG_ERROR=$?
  285         fi
  286 
  287         echo ""
  288         echo ""
  289         echo "       ;dOocd;"
  290         echo "     .dNMM0dKO."
  291         echo "     lNMMMKd0K,"
  292         echo "    .xMMMMNxkNc"
  293         echo "     dMMMMMkxXc"
  294         echo "     cNMMMNl.."
  295         if [ "${JAAS_INPUT}" != "true" ] || [ ${JAAS_REG_ERROR} -ne 0 ]; then
  296             echo "     .kMMMX;             Interested in adding telephony to your Jitsi meetings?"
  297             echo "      ;XMMMO'"
  298             echo "       lNMMWO'           Sign up on https://jaas.8x8.vc/components?host=${JVB_HOSTNAME}"
  299             echo "        lNMMM0,                        and follow the guide in the dev console."
  300         else
  301             echo "     .kMMMX;"
  302             echo "      ;XMMMO'            Congratulations! Now you can use telephony in your Jitsi meetings!"
  303             echo "       lNMMWO'             We have created a free JaaS (Jitsi as a Service) account for you. "
  304             echo "        lNMMM0,              You can login to https://jaas.8x8.vc/components to check our developer console and your account details."
  305         fi
  306         echo "         lXMMMK:."
  307         echo "          ;KMMMNKd.  'oo,"
  308         echo "           'xNMMMMXkkkkOKOl'"
  309         echo "             :0WMMMMMMNOkk0Kk,"
  310         echo "              .cdOWMMMMMWXOkOl"
  311         echo "                 .;dKWMMMMMXc."
  312         echo "                    .,:cll:'"
  313         echo ""
  314         echo ""
  315 
  316         # and we're done with debconf
  317         db_stop
  318     ;;
  319 
  320     abort-upgrade|abort-remove|abort-deconfigure)
  321     ;;
  322 
  323     *)
  324         echo "postinst called with unknown argument \`$1'" >&2
  325         exit 1
  326     ;;
  327 esac
  328 
  329 # dh_installdeb will replace this with shell code automatically
  330 # generated by other debhelper scripts.
  331 
  332 #DEBHELPER#
  333 
  334 exit 0