"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