Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
pedro | cf0027240c | |
pedro | 93e7f04880 | |
pedro | 79abc93fcf | |
pedro | 3287166e13 | |
pedro | af663e074e | |
pedro | e6d087d2da | |
pedro | 027566e6cc | |
pedro | a10070a7d5 | |
pedro | 7ec8aa82c4 | |
pedro | 555427cba1 | |
pedro | 02d35fcf18 |
|
@ -26,18 +26,6 @@ OPTIONAL PARAMETERS
|
|||
mtu
|
||||
An optional MTU setting to include in the router advertisements.
|
||||
|
||||
default-preference
|
||||
This option specifies the Default Router Preference value to advertise to
|
||||
hosts. Default: medium.
|
||||
|
||||
route-preference
|
||||
This option specifies the default value of advertised route preference for
|
||||
specific routes. Default: medium.
|
||||
|
||||
default-lifetime
|
||||
This option specifies the time (in seconds) how long (since the receipt of RA)
|
||||
hosts may use the router as a default router. 0 means do not use as a default
|
||||
router. Default: 3.
|
||||
|
||||
OPTIONAL MULTIPLE PARAMETERS
|
||||
----------------------------
|
||||
|
|
|
@ -58,48 +58,27 @@ fi
|
|||
MTU=
|
||||
if [ -f "${__object:?}/parameter/mtu" ];
|
||||
then
|
||||
MTU="link mtu $(cat "${__object:?}/parameter/mtu");"
|
||||
fi
|
||||
|
||||
DEFAULT_PREFERENCE=
|
||||
if [ -f "${__object:?}/parameter/default-preference" ];
|
||||
then
|
||||
DEFAULT_PREFERENCE="default preference $(cat "${__object:?}/parameter/default-preference");"
|
||||
fi
|
||||
|
||||
ROUTE_PREFERENCE=
|
||||
if [ -f "${__object:?}/parameter/route-preference" ];
|
||||
then
|
||||
ROUTE_PREFERENCE="route preference $(cat "${__object:?}/parameter/route-preference");"
|
||||
fi
|
||||
|
||||
DEFAULT_LIFETIME=
|
||||
if [ -f "${__object:?}/parameter/default-lifetime" ];
|
||||
then
|
||||
DEFAULT_LIFETIME="default lifetime $(cat "${__object:?}/parameter/default-lifetime");"
|
||||
MTU="link mtu $(cat "${__object:?}/parameter/mtu")"
|
||||
fi
|
||||
|
||||
__file "${confdir:?}/radv-${__object_id:?}.conf" \
|
||||
--mode 0640 --owner root --group bird \
|
||||
--source - << EOF
|
||||
ipv6 table radv_routes_${__object_id};
|
||||
ipv6 table radv_routes;
|
||||
|
||||
protocol static {
|
||||
description "Routes advertised via RAs";
|
||||
ipv6 { table radv_routes_${__object_id}; };
|
||||
ipv6 { table radv_routes; };
|
||||
|
||||
$(sed -e 's/^/\troute /' -e 's/$/ unreachable;/' "${__object:?}/parameter/route")
|
||||
}
|
||||
|
||||
protocol radv ${__object_id:?} {
|
||||
propagate routes ${have_routes:?};
|
||||
ipv6 { table radv_routes_${__object_id}; export all; };
|
||||
ipv6 { table radv_routes; export all; };
|
||||
|
||||
interface "$(cat "${__object:?}/parameter/interface")" {
|
||||
$MTU
|
||||
$DEFAULT_LIFETIME
|
||||
$DEFAULT_PREFERENCE
|
||||
$ROUTE_PREFERENCE
|
||||
};
|
||||
|
||||
$RDNS
|
||||
|
|
|
@ -1,4 +1 @@
|
|||
mtu
|
||||
default-preference
|
||||
route-preference
|
||||
default-lifetime
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
files/chromedriver_linux64.zip
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
uname -r
|
|
@ -0,0 +1,198 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.2.2 (GNU/Linux)
|
||||
|
||||
mQGiBEXwb0YRBADQva2NLpYXxgjNkbuP0LnPoEXruGmvi3XMIxjEUFuGNCP4Rj/a
|
||||
kv2E5VixBP1vcQFDRJ+p1puh8NU0XERlhpyZrVMzzS/RdWdyXf7E5S8oqNXsoD1z
|
||||
fvmI+i9b2EhHAA19Kgw7ifV8vMa4tkwslEmcTiwiw8lyUl28Wh4Et8SxzwCggDcA
|
||||
feGqtn3PP5YAdD0km4S4XeMEAJjlrqPoPv2Gf//tfznY2UyS9PUqFCPLHgFLe80u
|
||||
QhI2U5jt6jUKN4fHauvR6z3seSAsh1YyzyZCKxJFEKXCCqnrFSoh4WSJsbFNc4PN
|
||||
b0V0SqiTCkWADZyLT5wll8sWuQ5ylTf3z1ENoHf+G3um3/wk/+xmEHvj9HCTBEXP
|
||||
78X0A/0Tqlhc2RBnEf+AqxWvM8sk8LzJI/XGjwBvKfXe+l3rnSR2kEAvGzj5Sg0X
|
||||
4XmfTg4Jl8BNjWyvm2Wmjfet41LPmYJKsux3g0b8yzQxeOA4pQKKAU3Z4+rgzGmf
|
||||
HdwCG5MNT2A5XxD/eDd+L4fRx0HbFkIQoAi1J3YWQSiTk15fw7RMR29vZ2xlLCBJ
|
||||
bmMuIExpbnV4IFBhY2thZ2UgU2lnbmluZyBLZXkgPGxpbnV4LXBhY2thZ2VzLWtl
|
||||
eW1hc3RlckBnb29nbGUuY29tPohjBBMRAgAjAhsDBgsJCAcDAgQVAggDBBYCAwEC
|
||||
HgECF4AFAkYVdn8CGQEACgkQoECDD3+sWZHKSgCfdq3HtNYJLv+XZleb6HN4zOcF
|
||||
AJEAniSFbuv8V5FSHxeRimHx25671az+uQINBEXwb0sQCACuA8HT2nr+FM5y/kzI
|
||||
A51ZcC46KFtIDgjQJ31Q3OrkYP8LbxOpKMRIzvOZrsjOlFmDVqitiVc7qj3lYp6U
|
||||
rgNVaFv6Qu4bo2/ctjNHDDBdv6nufmusJUWq/9TwieepM/cwnXd+HMxu1XBKRVk9
|
||||
XyAZ9SvfcW4EtxVgysI+XlptKFa5JCqFM3qJllVohMmr7lMwO8+sxTWTXqxsptJo
|
||||
pZeKz+UBEEqPyw7CUIVYGC9ENEtIMFvAvPqnhj1GS96REMpry+5s9WKuLEaclWpd
|
||||
K3krttbDlY1NaeQUCRvBYZ8iAG9YSLHUHMTuI2oea07Rh4dtIAqPwAX8xn36JAYG
|
||||
2vgLAAMFB/wKqaycjWAZwIe98Yt0qHsdkpmIbarD9fGiA6kfkK/UxjL/k7tmS4Vm
|
||||
CljrrDZkPSQ/19mpdRcGXtb0NI9+nyM5trweTvtPw+HPkDiJlTaiCcx+izg79Fj9
|
||||
KcofuNb3lPdXZb9tzf5oDnmm/B+4vkeTuEZJ//IFty8cmvCpzvY+DAz1Vo9rA+Zn
|
||||
cpWY1n6z6oSS9AsyT/IFlWWBZZ17SpMHu+h4Bxy62+AbPHKGSujEGQhWq8ZRoJAT
|
||||
G0KSObnmZ7FwFWu1e9XFoUCt0bSjiJWTIyaObMrWu/LvJ3e9I87HseSJStfw6fki
|
||||
5og9qFEkMrIrBCp3QGuQWBq/rTdMuwNFiEkEGBECAAkFAkXwb0sCGwwACgkQoECD
|
||||
D3+sWZF/WACfeNAu1/1hwZtUo1bR+MWiCjpvHtwAnA1R3IHqFLQ2X3xJ40XPuAyY
|
||||
/FJG
|
||||
=Quqp
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=ilBW
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -0,0 +1,51 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=uIZN
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -0,0 +1 @@
|
|||
sha256:99511b54102cf52ab22bf5dcc5a46c4a75d9ed4ca2b1d06b99a006782a33507f
|
|
@ -0,0 +1 @@
|
|||
101.0.4951.41
|
|
@ -0,0 +1,34 @@
|
|||
# Managed remotely, changes will be lost
|
||||
#!/bin/sh
|
||||
set -e
|
||||
set -u
|
||||
|
||||
guess_room_name() {
|
||||
recording_meeting_path="${1}"
|
||||
# the approach is to delete the 25 fixed character postfix string on each
|
||||
# file (example: room_name_2022-06-08-15-28-25.mp4) another approach would be
|
||||
# to take the url
|
||||
# from the metadata.json file, but that would imply json parsing or jq dependency
|
||||
basename "$(ls "${recording_meeting_path}"/*.mp4)" | rev | cut -c25- | rev
|
||||
}
|
||||
|
||||
move_meeting() {
|
||||
recording_meeting_path="${1}"
|
||||
recording_general_path="${2}"
|
||||
room="${3}"
|
||||
mkdir -p "${recording_general_path}/${room}/"
|
||||
mv "${recording_meeting_path}"/*.mp4 "${recording_general_path}/${room}/"
|
||||
rm "${recording_meeting_path}/metadata.json"
|
||||
rmdir "${recording_meeting_path}"
|
||||
}
|
||||
|
||||
main() {
|
||||
recording_meeting_path="${1}"
|
||||
recording_general_path="$(dirname "${1}")"
|
||||
room="$(guess_room_name "${recording_meeting_path}")"
|
||||
move_meeting "${recording_meeting_path}" "${recording_general_path}" "${room}"
|
||||
}
|
||||
|
||||
main "${@}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,136 @@
|
|||
#!/bin/sh -eu
|
||||
|
||||
# Start
|
||||
JIBRI_CONFIG="$(cat <<EOF
|
||||
# Managed remotely, changes will be lost
|
||||
|
||||
# thanks
|
||||
# https://community.jitsi.org/t/jibri-service-fails/85272/4
|
||||
# https://github.com/emrahcom/emrah-buster-templates/blob/master/machines/eb-jibri-template/etc/jitsi/jibri/jibri.conf
|
||||
|
||||
jibri {
|
||||
// A unique identifier for this Jibri
|
||||
// TODO: eventually this will be required with no default
|
||||
id = ""
|
||||
// Whether or not Jibri should return to idle state after handling
|
||||
// (successfully or unsuccessfully) a request. A value of 'true'
|
||||
// here means that a Jibri will NOT return back to the IDLE state
|
||||
// and will need to be restarted in order to be used again.
|
||||
single-use-mode = false
|
||||
api {
|
||||
http {
|
||||
external-api-port = 2222
|
||||
internal-api-port = 3333
|
||||
}
|
||||
xmpp {
|
||||
// See example_xmpp_envs.conf for an example of what is expected here
|
||||
environments = [{
|
||||
name = "jibri-env"
|
||||
xmpp-server-hosts = ["${JIBRI_HOST:?}"]
|
||||
xmpp-domain = "${JIBRI_HOST:?}"
|
||||
|
||||
control-muc {
|
||||
domain = "internal.auth.${JIBRI_HOST:?}"
|
||||
room-name = "JibriBrewery"
|
||||
nickname = "jibri-nickname"
|
||||
}
|
||||
|
||||
control-login {
|
||||
domain = "auth.${JIBRI_HOST:?}"
|
||||
username = "jibri"
|
||||
password = "${JIBRI_AUTH_PASS:?}"
|
||||
}
|
||||
|
||||
call-login {
|
||||
domain = "recorder.${JIBRI_HOST:?}"
|
||||
username = "recorder"
|
||||
password = "${JIBRI_RECORDER_PASS:?}"
|
||||
}
|
||||
|
||||
strip-from-room-domain = "conference."
|
||||
usage-timeout = 0
|
||||
trust-all-xmpp-certs = true
|
||||
}]
|
||||
}
|
||||
}
|
||||
recording {
|
||||
recordings-directory = "/tmp/recordings"
|
||||
# TODO: make this an optional param and remove the default
|
||||
finalize-script = "/opt/finalize_recording.sh"
|
||||
}
|
||||
streaming {
|
||||
// A list of regex patterns for allowed RTMP URLs. The RTMP URL used
|
||||
// when starting a stream must match at least one of the patterns in
|
||||
// this list.
|
||||
rtmp-allow-list = [
|
||||
// By default, all services are allowed
|
||||
".*"
|
||||
]
|
||||
}
|
||||
sip {
|
||||
// The routing rule for the outbound scenario in VoxImplant is based on this prefix
|
||||
outbound-prefix = "out_"
|
||||
}
|
||||
ffmpeg {
|
||||
resolution = "1280x720"
|
||||
// resolution = "1920x1080"
|
||||
// The audio source that will be used to capture audio on Linux
|
||||
audio-source = "alsa"
|
||||
// The audio device that will be used to capture audio on Linux
|
||||
audio-device = "plug:bsnoop"
|
||||
}
|
||||
chrome {
|
||||
// The flags which will be passed to chromium when launching
|
||||
flags = [
|
||||
"--use-fake-ui-for-media-stream",
|
||||
"--start-maximized",
|
||||
"--kiosk",
|
||||
"--enabled",
|
||||
"--autoplay-policy=no-user-gesture-required"
|
||||
]
|
||||
}
|
||||
stats {
|
||||
enable-stats-d = true
|
||||
}
|
||||
webhook {
|
||||
// A list of subscribers interested in receiving webhook events
|
||||
subscribers = []
|
||||
}
|
||||
jwt-info {
|
||||
// The path to a .pem file which will be used to sign JWT tokens used in webhook
|
||||
// requests. If not set, no JWT will be added to webhook requests.
|
||||
# signing-key-path = "/path/to/key.pem"
|
||||
|
||||
// The kid to use as part of the JWT
|
||||
# kid = "key-id"
|
||||
|
||||
// The issuer of the JWT
|
||||
# issuer = "issuer"
|
||||
|
||||
// The audience of the JWT
|
||||
# audience = "audience"
|
||||
|
||||
// The TTL of each generated JWT. Can't be less than 10 minutes.
|
||||
# ttl = 1 hour
|
||||
}
|
||||
call-status-checks {
|
||||
// If not all clients have their audio and video muted, but Jibri does not
|
||||
// detect any data stream (audio or video) comming in, it will stop
|
||||
// recording after NO_MEDIA_TIMEOUT expires.
|
||||
no-media-timeout = 3 minutes
|
||||
|
||||
// If all clients have their audio and video muted, Jibri consideres this
|
||||
// as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
|
||||
all-muted-timeout = 10 minutes
|
||||
|
||||
// When detecting if a call is empty, Jibri takes into consideration for how
|
||||
// long the call has been empty already. If it has been empty for more than
|
||||
// DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
|
||||
default-call-empty-timeout = 30 seconds
|
||||
|
||||
// If ICE hasn't completed, or stays in a state other than "connected" for this amount of time, Jibri will stop.
|
||||
ice-connection-timeout = 30 seconds
|
||||
}
|
||||
}
|
||||
EOF
|
||||
)"
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# src https://github.com/jitsi/jibri#jitsi-debian-repository
|
||||
wget https://download.jitsi.org/jitsi-key.gpg.key -O apt-jitsi-keyring.gpg
|
||||
|
||||
# src https://github.com/jitsi/jibri#google-chrome-stable--chromedriver
|
||||
wget https://dl-ssl.google.com/linux/linux_signing_key.pub -O apt-google-chrome-keyring.gpg
|
||||
|
||||
curl chromedriver.storage.googleapis.com/LATEST_RELEASE > chrome-driver-version
|
||||
cd_path='chromedriver_linux64.zip'
|
||||
cd_url=https://chromedriver.storage.googleapis.com/$(cat chrome-driver-version)/chromedriver_linux64.zip
|
||||
curl "${cd_url}" -z "${cd_path}" -o "${cd_path}"
|
||||
printf "sha256:$(sha256sum chromedriver_linux64.zip | cut -d' ' -f1)" > chrome-driver-hash
|
|
@ -0,0 +1,128 @@
|
|||
#!/bin/sh -eu
|
||||
|
||||
JIBRI_XORG_CONFIG="$(cat <<EOF
|
||||
# Managed remotely, changes will be lost
|
||||
|
||||
# This xorg configuration file is meant to be used by xpra
|
||||
# to start a dummy X11 server.
|
||||
# For details, please see:
|
||||
# https://xpra.org/Xdummy.html
|
||||
|
||||
Section "ServerFlags"
|
||||
Option "DontVTSwitch" "true"
|
||||
Option "AllowMouseOpenFail" "true"
|
||||
Option "PciForceNone" "true"
|
||||
Option "AutoEnableDevices" "false"
|
||||
Option "AutoAddDevices" "false"
|
||||
EndSection
|
||||
|
||||
Section "Device"
|
||||
Identifier "dummy_videocard"
|
||||
Driver "dummy"
|
||||
Option "ConstantDPI" "true"
|
||||
#VideoRam 4096000
|
||||
#VideoRam 256000
|
||||
VideoRam 192000
|
||||
EndSection
|
||||
|
||||
Section "Monitor"
|
||||
Identifier "dummy_monitor"
|
||||
HorizSync 5.0 - 1000.0
|
||||
VertRefresh 5.0 - 200.0
|
||||
#This can be used to get a specific DPI, but only for the default resolution:
|
||||
#DisplaySize 508 317
|
||||
#NOTE: the highest modes will not work without increasing the VideoRam
|
||||
# for the dummy video card.
|
||||
Modeline "32768x32768" 15226.50 32768 35800 39488 46208 32768 32771 32781 32953
|
||||
Modeline "32768x16384" 7516.25 32768 35544 39192 45616 16384 16387 16397 16478
|
||||
Modeline "16384x8192" 2101.93 16384 16416 24400 24432 8192 8390 8403 8602
|
||||
Modeline "8192x4096" 424.46 8192 8224 9832 9864 4096 4195 4202 4301
|
||||
Modeline "5496x1200" 199.13 5496 5528 6280 6312 1200 1228 1233 1261
|
||||
Modeline "5280x1080" 169.96 5280 5312 5952 5984 1080 1105 1110 1135
|
||||
Modeline "5280x1200" 191.40 5280 5312 6032 6064 1200 1228 1233 1261
|
||||
Modeline "5120x3200" 199.75 5120 5152 5904 5936 3200 3277 3283 3361
|
||||
Modeline "4800x1200" 64.42 4800 4832 5072 5104 1200 1229 1231 1261
|
||||
Modeline "3840x2880" 133.43 3840 3872 4376 4408 2880 2950 2955 3025
|
||||
Modeline "3840x2560" 116.93 3840 3872 4312 4344 2560 2622 2627 2689
|
||||
Modeline "3840x2048" 91.45 3840 3872 4216 4248 2048 2097 2101 2151
|
||||
Modeline "3840x1080" 100.38 3840 3848 4216 4592 1080 1081 1084 1093
|
||||
Modeline "3600x1200" 106.06 3600 3632 3984 4368 1200 1201 1204 1214
|
||||
Modeline "3288x1080" 39.76 3288 3320 3464 3496 1080 1106 1108 1135
|
||||
Modeline "2048x2048" 49.47 2048 2080 2264 2296 2048 2097 2101 2151
|
||||
Modeline "2048x1536" 80.06 2048 2104 2312 2576 1536 1537 1540 1554
|
||||
Modeline "2560x1600" 47.12 2560 2592 2768 2800 1600 1639 1642 1681
|
||||
Modeline "2560x1440" 42.12 2560 2592 2752 2784 1440 1475 1478 1513
|
||||
Modeline "1920x1440" 69.47 1920 1960 2152 2384 1440 1441 1444 1457
|
||||
Modeline "1920x1200" 26.28 1920 1952 2048 2080 1200 1229 1231 1261
|
||||
Modeline "1920x1080" 23.53 1920 1952 2040 2072 1080 1106 1108 1135
|
||||
Modeline "1680x1050" 20.08 1680 1712 1784 1816 1050 1075 1077 1103
|
||||
Modeline "1600x1200" 22.04 1600 1632 1712 1744 1200 1229 1231 1261
|
||||
Modeline "1600x900" 33.92 1600 1632 1760 1792 900 921 924 946
|
||||
Modeline "1440x900" 30.66 1440 1472 1584 1616 900 921 924 946
|
||||
ModeLine "1366x768" 72.00 1366 1414 1446 1494 768 771 777 803
|
||||
Modeline "1280x1024" 31.50 1280 1312 1424 1456 1024 1048 1052 1076
|
||||
Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
|
||||
Modeline "1280x768" 23.11 1280 1312 1392 1424 768 786 789 807
|
||||
Modeline "1360x768" 24.49 1360 1392 1480 1512 768 786 789 807
|
||||
Modeline "1024x768" 18.71 1024 1056 1120 1152 768 786 789 807
|
||||
Modeline "768x1024" 19.50 768 800 872 904 1024 1048 1052 1076
|
||||
|
||||
|
||||
#common resolutions for android devices (both orientations):
|
||||
Modeline "800x1280" 25.89 800 832 928 960 1280 1310 1315 1345
|
||||
Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
|
||||
Modeline "720x1280" 30.22 720 752 864 896 1280 1309 1315 1345
|
||||
Modeline "1280x720" 27.41 1280 1312 1416 1448 720 737 740 757
|
||||
Modeline "768x1024" 24.93 768 800 888 920 1024 1047 1052 1076
|
||||
Modeline "1024x768" 23.77 1024 1056 1144 1176 768 785 789 807
|
||||
Modeline "600x1024" 19.90 600 632 704 736 1024 1047 1052 1076
|
||||
Modeline "1024x600" 18.26 1024 1056 1120 1152 600 614 617 631
|
||||
Modeline "536x960" 16.74 536 568 624 656 960 982 986 1009
|
||||
Modeline "960x536" 15.23 960 992 1048 1080 536 548 551 563
|
||||
Modeline "600x800" 15.17 600 632 688 720 800 818 822 841
|
||||
Modeline "800x600" 14.50 800 832 880 912 600 614 617 631
|
||||
Modeline "480x854" 13.34 480 512 560 592 854 873 877 897
|
||||
Modeline "848x480" 12.09 848 880 920 952 480 491 493 505
|
||||
Modeline "480x800" 12.43 480 512 552 584 800 818 822 841
|
||||
Modeline "800x480" 11.46 800 832 872 904 480 491 493 505
|
||||
#resolutions for android devices (both orientations)
|
||||
#minus the status bar
|
||||
#38px status bar (and width rounded up)
|
||||
Modeline "800x1242" 25.03 800 832 920 952 1242 1271 1275 1305
|
||||
Modeline "1280x762" 22.93 1280 1312 1392 1424 762 780 783 801
|
||||
Modeline "720x1242" 29.20 720 752 856 888 1242 1271 1276 1305
|
||||
Modeline "1280x682" 25.85 1280 1312 1408 1440 682 698 701 717
|
||||
Modeline "768x986" 23.90 768 800 888 920 986 1009 1013 1036
|
||||
Modeline "1024x730" 22.50 1024 1056 1136 1168 730 747 750 767
|
||||
Modeline "600x986" 19.07 600 632 704 736 986 1009 1013 1036
|
||||
Modeline "1024x562" 17.03 1024 1056 1120 1152 562 575 578 591
|
||||
Modeline "536x922" 16.01 536 568 624 656 922 943 947 969
|
||||
Modeline "960x498" 14.09 960 992 1040 1072 498 509 511 523
|
||||
Modeline "600x762" 14.39 600 632 680 712 762 779 783 801
|
||||
Modeline "800x562" 13.52 800 832 880 912 562 575 578 591
|
||||
Modeline "480x810" 12.59 480 512 552 584 810 828 832 851
|
||||
Modeline "848x442" 11.09 848 880 920 952 442 452 454 465
|
||||
Modeline "480x762" 11.79 480 512 552 584 762 779 783 801
|
||||
EndSection
|
||||
|
||||
Section "Screen"
|
||||
Identifier "dummy_screen"
|
||||
Device "dummy_videocard"
|
||||
Monitor "dummy_monitor"
|
||||
DefaultDepth 24
|
||||
SubSection "Display"
|
||||
Viewport 0 0
|
||||
Depth 24
|
||||
#Modes "32768x32768" "32768x16384" "16384x8192" "8192x4096" "5120x3200" "3840x2880" "3840x2560" "3840x2048" "2048x2048" "2560x1600" "1920x1440" "1920x1200" "1920x1080" "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768" "1024x600" "800x600" "320x200"
|
||||
Modes "5120x3200" "3840x2880" "3840x2560" "3840x2048" "2048x2048" "2560x1600" "1920x1440" "1920x1200" "1920x1080" "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768" "1024x600" "800x600" "320x200"
|
||||
Virtual 1280 720
|
||||
#Virtual 1920 1080
|
||||
EndSubSection
|
||||
EndSection
|
||||
|
||||
Section "ServerLayout"
|
||||
Identifier "dummy_layout"
|
||||
Screen "dummy_screen"
|
||||
EndSection
|
||||
EOF
|
||||
)"
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
if grep -qE "__file" "${__messages_in}"; then
|
||||
RESTART_SERVICES="YES"
|
||||
fi
|
||||
|
||||
if [ -n "${RESTART_SERVICES}" ]; then
|
||||
echo "systemctl restart jibri"
|
||||
echo "systemctl restart jibri-xorg"
|
||||
fi
|
|
@ -0,0 +1,5 @@
|
|||
TODO
|
||||
|
||||
last java (from debian 11) mostly works, but cuts a little bit of the video (between 2 to 5 seconds). with java8 this works ok
|
||||
|
||||
resolution is hardcoded to 720p (default resolution was 1080p), right now is not configurable
|
|
@ -0,0 +1,128 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
JIBRI_HOST="${__target_host}"
|
||||
JIBRI_AUTH_PASS='jibriauthpass'
|
||||
JIBRI_RECORDER_PASS='jibrirecorderpass'
|
||||
|
||||
os="$(cat "${__global}/explorer/os")"
|
||||
kernel_release="$(cat "${__object}/explorer/kernel_release")"
|
||||
case "${os}" in
|
||||
devuan|debian)
|
||||
if echo "${kernel_release}" | grep -qE "cloud|rt"; then
|
||||
echo "using wrong kernel ${kernel_release}, do/use: apt install linux-image-amd64" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
#ubuntu)
|
||||
#;;
|
||||
# TODO on ubuntu you should also care about installing:
|
||||
# linux-image-extra-virtual
|
||||
# and to check for different kernel
|
||||
# src https://github.com/jitsi/jibri#installation-notes
|
||||
*)
|
||||
echo "Your OS '${os}' is currently not supported." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
__line '/etc/modules' --line 'snd_aloop' --onchange 'modprobe snd_aloop'
|
||||
|
||||
# thanks https://github.com/emrahcom/emrah-buster-templates/blob/master/machines/eb-jibri-template/usr/local/bin/finalize_recording.sh
|
||||
__file '/opt/finalize_recording.sh' \
|
||||
--mode '755' \
|
||||
--source "${__type}/files/finalize_recording.sh"
|
||||
|
||||
__apt_key 'jitsi_meet' \
|
||||
--source "${__type}/files/apt-jitsi-keyring.gpg"
|
||||
|
||||
require='__apt_key/jitsi_meet' __apt_source 'jitsi_meet' \
|
||||
--uri 'https://download.jitsi.org' \
|
||||
--distribution 'stable/'
|
||||
|
||||
__apt_key 'google-chrome' \
|
||||
--source "${__type}/files/apt-google-chrome-keyring.gpg"
|
||||
|
||||
__apt_source 'debian9' \
|
||||
--uri 'http://security.debian.org/debian-security' \
|
||||
--distribution 'stretch/updates' \
|
||||
--component 'main'
|
||||
|
||||
# google-chrome object id is important because after google-chrome installation
|
||||
# the apt file would be duplicated, making apt update process to fail
|
||||
require='__apt_key/google-chrome' __apt_source google-chrome \
|
||||
--uri 'http://dl.google.com/linux/chrome/deb/' \
|
||||
--distribution 'stable' \
|
||||
--component 'main'
|
||||
|
||||
## Ensure apt cache is up-to-date
|
||||
require='__apt_source/jitsi_meet __apt_source/google-chrome __apt_source/debian9' __check_messages update_jibri \
|
||||
--pattern '^__apt_source/(jitsi_meet|google-chrome|debian9)' \
|
||||
--execute 'apt update'
|
||||
|
||||
PKGS="$( grep -v '#' <<END
|
||||
jibri
|
||||
# extra deps
|
||||
default-jre-headless ffmpeg curl alsa-utils icewm xdotool xserver-xorg-video-dummy ruby-hocon
|
||||
google-chrome-stable
|
||||
# old java for jibri
|
||||
openjdk-8-jdk-headless
|
||||
END
|
||||
)"
|
||||
|
||||
for pkg in ${PKGS}; do
|
||||
require='__check_messages/update_jibri' __package "${pkg}"
|
||||
done
|
||||
|
||||
# TODO CHROME_DRIVER explorer so this process is launched only if needed
|
||||
# src https://github.com/jitsi/jibri#google-chrome-stable--chromedriver
|
||||
CHROME_DRIVER_VERSION="$(cat "${__type}/files/chrome-driver-version")"
|
||||
CHROME_DRIVER_HASH="$(cat "${__type}/files/chrome-driver-hash")"
|
||||
__download '/tmp/chromedriver.zip' \
|
||||
--url "https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip" \
|
||||
--sum "${CHROME_DRIVER_HASH}"
|
||||
CHROME_DRIVER_PATH='/usr/local/bin'
|
||||
require='__download/tmp/chromedriver.zip' __unpack '/tmp/chromedriver.zip' \
|
||||
--destination "${CHROME_DRIVER_PATH}" \
|
||||
--onchange "chown root:root ${CHROME_DRIVER_PATH} && chmod 0755 ${CHROME_DRIVER_PATH}"
|
||||
|
||||
CHROME_POLICIES='/etc/opt/chrome/policies/managed'
|
||||
require='__package/google-chrome-stable' __directory "${CHROME_POLICIES}" --parents
|
||||
require="__directory/${CHROME_POLICIES}" __file "${CHROME_POLICIES}/managed_policies" \
|
||||
--mode '644' \
|
||||
--source '-' <<EOF
|
||||
{ "CommandLineFlagSecurityWarningsEnabled": false }
|
||||
EOF
|
||||
|
||||
# Proceed only after installation/upgrade has finished
|
||||
export require='__package/jibri'
|
||||
__user_groups 'jibri' --group 'adm' --group 'audio' --group 'video' --group 'plugdev'
|
||||
|
||||
# shellcheck source=type/__jitsi_jibri/files/jibri.conf.sh
|
||||
. "${__type}/files/jibri.conf.sh" # This defines JIBRI_CONFIG
|
||||
__file '/etc/jitsi/jibri/jibri.conf' \
|
||||
--mode '0444' \
|
||||
--source '-' <<EOF
|
||||
${JIBRI_CONFIG}
|
||||
EOF
|
||||
|
||||
# thanks https://community.jitsi.org/t/jibri-recording-resolution-to-record-a-full-window-at-720p-without-cropping/104442
|
||||
# shellcheck source=type/__jitsi_jibri/files/xorg-video-dummy.conf
|
||||
. "${__type}/files/xorg-video-dummy.conf.sh" # This defines JIBRI_XORG_CONFIG
|
||||
__file '/etc/jitsi/jibri/xorg-video-dummy.conf' \
|
||||
--mode '0444' \
|
||||
--source '-' <<EOF
|
||||
${JIBRI_XORG_CONFIG}
|
||||
EOF
|
||||
|
||||
__file '/opt/jitsi/jibri/launch.sh' \
|
||||
--onchange 'systemctl daemon-reload && systemctl restart jibri.service' \
|
||||
--mode 755 \
|
||||
--source '-' <<EOF
|
||||
#!/bin/bash
|
||||
# Managed remotely, changes will be lost
|
||||
|
||||
exec /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file="/etc/jitsi/jibri/jibri.conf" -jar /opt/jitsi/jibri/jibri.jar --config "/etc/jitsi/jibri/config.json"
|
||||
EOF
|
||||
|
||||
__systemd_unit 'jibri.service' \
|
||||
--enablement-state 'enabled'
|
|
@ -1,26 +0,0 @@
|
|||
#!/bin/sh -eu
|
||||
|
||||
JICOFO_AUTHPASSWORD=""
|
||||
# We need this to properly configure jicofo
|
||||
|
||||
# Default to reading debconf
|
||||
DEBCONF_PASS_FILE="/var/cache/debconf/passwords.dat"
|
||||
if [ -f "${DEBCONF_PASS_FILE}" ]; then
|
||||
JICOFO_AUTHPASSWORD="$(grep -A1 'Template: jicofo/jicofo-authpassword' "${DEBCONF_PASS_FILE}" | tail -n 1 | cut -d ' ' -f 2-)"
|
||||
fi
|
||||
|
||||
# Try jicofo.conf if necessary
|
||||
JICOFO_CONF_FILE="/etc/jitsi/jicofo/jicofo.conf"
|
||||
if [ -z "${JICOFO_AUTHPASSWORD}" ] && [ -f "${JICOFO_CONF_FILE}" ]; then
|
||||
JICOFO_AUTHPASSWORD="$(grep -E '^[[:space:]]*password:' "${JICOFO_CONF_FILE}" | sed -E 's!^[^:]*:[[:space:]]*"(.*)"$!\1!')"
|
||||
fi
|
||||
|
||||
# And fallback to config file if necessary
|
||||
JICOFO_CONFIG_FILE="/etc/jitsi/jicofo/config"
|
||||
if [ -z "${JICOFO_AUTHPASSWORD}" ] && [ -f "${JICOFO_CONFIG_FILE}" ]; then
|
||||
JICOFO_AUTHPASSWORD="$(grep -E '^JICOFO_AUTH_PASSWORD=' "${JICOFO_CONFIG_FILE}" | cut -d '=' -f 2-)"
|
||||
fi
|
||||
|
||||
# If we didn't find it, this is likely a new installation and we'll generate
|
||||
# the password on the manifest
|
||||
echo "${JICOFO_AUTHPASSWORD:-}"
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh -eu
|
||||
|
||||
if [ ! -f "${__object}/parameter/disable-prometheus-exporter" ]; then
|
||||
# TODO: detect curl / depend on it?
|
||||
curl -s localhost:9888/metrics
|
||||
fi
|
|
@ -5,6 +5,9 @@
|
|||
if false; then
|
||||
# We are currently not using these, just here as documentation
|
||||
DEBCONF_SETTINGS="$(cat <<EOF
|
||||
# Jicofo user password:
|
||||
jicofo jicofo/jicofo-authpassword password STH
|
||||
jitsi-meet-prosody jicofo/jicofo-authpassword password STH
|
||||
# The secret used to connect to xmpp server as component
|
||||
jitsi-meet-prosody jitsi-videobridge/jvbsecret password STH
|
||||
jitsi-videobridge jitsi-videobridge/jvbsecret password STH
|
||||
|
@ -37,9 +40,6 @@ jitsi-videobridge jitsi-videobridge/jvb-hostname string ${JITSI_HOST}
|
|||
jitsi-videobridge2 jitsi-videobridge/jvb-hostname string ${JITSI_HOST}
|
||||
# The hostname of the current installation:
|
||||
jitsi-meet-prosody jitsi-meet-prosody/jvb-hostname string ${JITSI_HOST}
|
||||
# Jicofo user password:
|
||||
jicofo jicofo/jicofo-authpassword password ${JICOFO_AUTHPASSWORD}
|
||||
jitsi-meet-prosody jicofo/jicofo-authpassword password ${JICOFO_AUTHPASSWORD}
|
||||
# SSL certificate for the Jitsi Meet instance
|
||||
# Choices: Generate a new self-signed certificate (You will later get a chance to obtain a Let's encrypt certificate), I want to use my own certificate
|
||||
jitsi-meet-web-config jitsi-meet/cert-choice select Generate a new self-signed certificate (You will later get a chance to obtain a Let's encrypt certificate)
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/sh -eu
|
||||
|
||||
# Source:
|
||||
# https://github.com/jitsi/jibri#prosody
|
||||
|
||||
# shellcheck disable=SC2034 # This is intended to be included
|
||||
JIBRI_CONFIG="$(cat <<END
|
||||
VirtualHost "recorder.${JITSI_HOST:?}"
|
||||
modules_enabled = {
|
||||
"ping";
|
||||
}
|
||||
authentication = "internal_plain"
|
||||
END
|
||||
)"
|
|
@ -10,10 +10,6 @@ jicofo {
|
|||
xmpp: {
|
||||
client: {
|
||||
client-proxy: focus.${JITSI_HOST:?}
|
||||
xmpp-domain: "${JITSI_HOST:?}"
|
||||
domain: "auth.${JITSI_HOST:?}"
|
||||
username: "focus"
|
||||
password: "${JICOFO_AUTHPASSWORD:?}"
|
||||
}
|
||||
trusted-domains: [ "recorder.${JITSI_HOST:?}" ]
|
||||
}
|
||||
|
@ -34,5 +30,18 @@ cat <<EOF
|
|||
EOF
|
||||
fi
|
||||
|
||||
# Jibri if needed
|
||||
if [ "${JIBRI_STATE:?}" = "present" ]; then
|
||||
cat <<EOF
|
||||
|
||||
jibri: {
|
||||
// The JID of the MUC to be used as a brewery for jibri instances for streaming.
|
||||
brewery-jid: "JibriBrewery@internal.auth.${JITSI_HOST:?}",
|
||||
// How long to wait for Jibri to start recording from the time it accepts a START request.
|
||||
pending-timeout: 90
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
# End
|
||||
echo '}'
|
||||
|
|
|
@ -21,10 +21,10 @@ You will also need the `__jitsi_meet_domain` type in order to finish setting up
|
|||
the web frontend (including TLS certificates) and its settings.
|
||||
|
||||
You may want to use the `files/ufw` example manifest for a `__ufw`-based
|
||||
firewall compatible with this type that allows all ports needed by Jitsi-Meet.
|
||||
Note however that this will not deal with rules for SSH or for TCP port 9888,
|
||||
which exposes the prometheus exporter if not disabled.
|
||||
Remember to apply your own rules here, particularly regarding SSH.
|
||||
firewall compatible with this type.
|
||||
This file does not include rules for TCP port 9888, which exposes the
|
||||
prometheus exporter if not disabled.
|
||||
You should apply your own rules here.
|
||||
|
||||
This type only works on De{bi,vu}an systems.
|
||||
|
||||
|
@ -47,14 +47,6 @@ NOTE: This type currently does not deal with setting up coturn.
|
|||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
abort-conference-count
|
||||
Only has an effect if the prometheus exporter is enabled and if it is not
|
||||
empty (default).
|
||||
If at least this many conferences are active on the server, the type will
|
||||
bail out before making any changes.
|
||||
This is useful if you want to avoid service disruptions due to e.g. an SLA.
|
||||
|
||||
|
||||
turn-secret
|
||||
The shared secret for the TURN server.
|
||||
|
||||
|
@ -84,11 +76,9 @@ EXAMPLES
|
|||
|
||||
.. code-block:: sh
|
||||
|
||||
# Setup the firewall for Jitsi-Meet
|
||||
# Setup the firewall
|
||||
. "${__global}/type/__jitsi_meet/files/ufw"
|
||||
export require="__ufw"
|
||||
# Setup firewall SSH rules as necessary
|
||||
__ufw_rule ssh --rule 'allow 22/tcp from 10.0.0.0/24'
|
||||
# Setup Jitsi on this host
|
||||
__jitsi_meet \
|
||||
--turn-server "turn.exo.cat" \
|
||||
|
|
|
@ -10,28 +10,6 @@ case "${os}" in
|
|||
;;
|
||||
esac
|
||||
|
||||
current_conferences="$(cat "${__object}/explorer/jitsi-status" | grep -E "^jitsi_conferences[[:space:]]" | cut -d ' ' -f 2)"
|
||||
|
||||
JICOFO_AUTHPASSWORD="$(cat "${__object}/explorer/jicofo-authpassword")"
|
||||
if [ -z "${JICOFO_AUTHPASSWORD}" ]; then
|
||||
# This is probably a first time installation, we'll generate the
|
||||
# password which will be set in debconf by this type
|
||||
# https://github.com/jitsi/jicofo/blob/aafb61b5363a1c4abdbf08e1444a6276b807993e/debian/postinst#L43
|
||||
JICOFO_AUTHPASSWORD="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16)"
|
||||
fi
|
||||
|
||||
ABORT_CONFERENCE_COUNT="$(cat "${__object}/parameter/abort-conference-count")"
|
||||
|
||||
if [ -n "${current_conferences}" ] && [ -n "${ABORT_CONFERENCE_COUNT}" ] && \
|
||||
[ "${ABORT_CONFERENCE_COUNT}" -le "${current_conferences}" ]; then
|
||||
cat <<-EOF
|
||||
Early bail out was requested when at least ${ABORT_CONFERENCE_COUNT} conferences are taking place.
|
||||
There are currently ${current_conferences} active conferences.
|
||||
|
||||
Try again at a later time or remove or increase --abort-conference-count
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JITSI_HOST="${__target_host}"
|
||||
if [ -f "${__object}/parameter/jitsi-version" ]; then
|
||||
|
@ -149,9 +127,8 @@ require="__directory${NGINX_ETC}/sites-available" __file "${NGINX_ETC}/sites-ava
|
|||
server_names_hash_bucket_size 64;
|
||||
|
||||
types {
|
||||
# nginx's default mime.types doesn't include a mapping for wasm or wav.
|
||||
# nginx's default mime.types doesn't include a mapping for wasm
|
||||
application/wasm wasm;
|
||||
audio/wav wav;
|
||||
}
|
||||
|
||||
server {
|
||||
|
@ -202,6 +179,34 @@ else
|
|||
SECURED_DOMAINS_STATE='absent'
|
||||
fi
|
||||
|
||||
if [ -f "${__object}/parameter/jibri" ]; then
|
||||
JIBRI_STATE='present'
|
||||
else
|
||||
JIBRI_STATE='absent'
|
||||
fi
|
||||
|
||||
export JIBRI_STATE
|
||||
# shellcheck source=type/__jitsi_meet/files/prosody.cfg.lua.sh
|
||||
. "${__type}/files/jibri.cfg.lua.sh" # This defines JIBRI_CONFIG
|
||||
__file "/etc/prosody/conf.d/01_jibri.cfg.lua" \
|
||||
--state "${JIBRI_STATE}" \
|
||||
--group prosody \
|
||||
--mode 0440 \
|
||||
--source - <<EOF
|
||||
${JIBRI_CONFIG}
|
||||
EOF
|
||||
# TODO/WARNING cleartext passwords
|
||||
JIBRI_AUTH_PASS='jibriauthpass'
|
||||
JIBRI_RECORDER_PASS='jibrirecorderpass'
|
||||
__jitsi_meet_user "jibri" \
|
||||
--password "${JIBRI_AUTH_PASS}" \
|
||||
--domain "auth.${JITSI_HOST}" \
|
||||
--state "${JIBRI_STATE}"
|
||||
__jitsi_meet_user "recorder" \
|
||||
--password "${JIBRI_RECORDER_PASS}" \
|
||||
--domain "recorder.${JITSI_HOST}" \
|
||||
--state "${JIBRI_STATE}"
|
||||
|
||||
# This is the main host config
|
||||
PROSODY_MAIN_CONFIG="YES"
|
||||
# Prosody settings for common components (jvb, focus, ...)
|
||||
|
@ -220,7 +225,6 @@ __file "/etc/prosody/conf.d/${JITSI_HOST}.zauth.cfg.lua" \
|
|||
|
||||
export SECURED_DOMAINS_STATE
|
||||
export JITSI_HOST
|
||||
export JICOFO_AUTHPASSWORD
|
||||
"${__type}/files/jicofo.conf.sh" | \
|
||||
__file /etc/jitsi/jicofo/jicofo.conf --mode 0444 --source '-'
|
||||
|
||||
|
@ -256,8 +260,8 @@ __file "/usr/share/jitsi-meet/body.html" \
|
|||
EOF
|
||||
|
||||
# These two should be changed on new release
|
||||
EXPORTER_VERSION="1.2.1"
|
||||
EXPORTER_CHECKSUM="sha256:46d4b8475b72fd7632a5203f1cc3c7067bed4629902b7780a1da85e4e06c2129"
|
||||
EXPORTER_VERSION="1.2.0"
|
||||
EXPORTER_CHECKSUM="sha256:6377ffa7be0c7deb66545616add7245da96f8b7746d6712f41cfa9fe72c935ce"
|
||||
EXPORTER_URL="https://github.com/systemli/prometheus-jitsi-meet-exporter/releases/download/${EXPORTER_VERSION}/prometheus-jitsi-meet-exporter_${EXPORTER_VERSION}_linux_amd64.tar.gz"
|
||||
if [ -f "${__object}/parameter/disable-prometheus-exporter" ]; then
|
||||
EXPORTER_STATE="absent"
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
disable-prometheus-exporter
|
||||
secured-domains
|
||||
jibri
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
abort-conference-count
|
||||
jitsi-version
|
||||
turn-secret
|
||||
turn-server
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
# We could automate this, but are using it as an indicator for the
|
||||
# latest branch with which we conciliated changes.
|
||||
BRANCH="jitsi-meet_8319"
|
||||
BRANCH="jitsi-meet_7210"
|
||||
REPO="https://github.com/jitsi/jitsi-meet"
|
||||
|
||||
get_url() {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -38,6 +38,7 @@ var interfaceConfig = {
|
|||
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
|
||||
|
||||
DEFAULT_BACKGROUND: '#040404',
|
||||
DEFAULT_LOGO_URL: '${BRANDING_WATERMARK_PATH}',
|
||||
DEFAULT_WELCOME_PAGE_LOGO_URL: '${BRANDING_WATERMARK_PATH}',
|
||||
|
||||
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
||||
|
@ -87,6 +88,11 @@ var interfaceConfig = {
|
|||
|
||||
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
|
||||
|
||||
/**
|
||||
* Hide the logo on the deep linking pages.
|
||||
*/
|
||||
HIDE_DEEP_LINKING_LOGO: false,
|
||||
|
||||
/**
|
||||
* Hide the invite prompt in the header when alone in the meeting.
|
||||
*/
|
||||
|
@ -95,6 +101,7 @@ var interfaceConfig = {
|
|||
JITSI_WATERMARK_LINK: 'https://jitsi.org',
|
||||
|
||||
LANG_DETECTION: true, // Allow i18n to detect the system language
|
||||
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature.
|
||||
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
|
||||
|
||||
/**
|
||||
|
@ -114,6 +121,23 @@ var interfaceConfig = {
|
|||
*/
|
||||
MOBILE_APP_PROMO: true,
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading android mobile app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading f droid app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
|
||||
|
||||
/**
|
||||
* Specify URL for downloading ios mobile app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
|
||||
|
||||
NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
|
||||
// Names of browsers which should show a warning stating the current browser
|
||||
// has a suboptimal experience. Browsers which are not listed as optimal or
|
||||
// unsupported are considered suboptimal. Valid values are:
|
||||
|
@ -131,7 +155,7 @@ var interfaceConfig = {
|
|||
RECENT_LIST_ENABLED: true,
|
||||
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
||||
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ],
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds' ],
|
||||
|
||||
/**
|
||||
* Specify which sharing features should be displayed. If the value is not set
|
||||
|
@ -148,6 +172,7 @@ var interfaceConfig = {
|
|||
*/
|
||||
SHOW_CHROME_EXTENSION_BANNER: false,
|
||||
|
||||
SHOW_DEEP_LINKING_IMAGE: false,
|
||||
SHOW_JITSI_WATERMARK: true,
|
||||
SHOW_POWERED_BY: false,
|
||||
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
||||
|
@ -188,31 +213,6 @@ var interfaceConfig = {
|
|||
*/
|
||||
// TILE_VIEW_MAX_COLUMNS: 5,
|
||||
|
||||
// List of undocumented settings
|
||||
/**
|
||||
INDICATOR_FONT_SIZES
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
||||
|
||||
/**
|
||||
* Specify URL for downloading ios mobile app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading android mobile app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify mobile app scheme for opening the app from the mobile browser.
|
||||
*/
|
||||
// APP_SCHEME: 'org.jitsi.meet',
|
||||
|
||||
// NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
|
||||
/**
|
||||
* Specify Firebase dynamic link properties for the mobile apps.
|
||||
*/
|
||||
|
@ -225,19 +225,22 @@ var interfaceConfig = {
|
|||
// },
|
||||
|
||||
/**
|
||||
* Hide the logo on the deep linking pages.
|
||||
* Specify mobile app scheme for opening the app from the mobile browser.
|
||||
*/
|
||||
// HIDE_DEEP_LINKING_LOGO: false,
|
||||
// APP_SCHEME: 'org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify the Android app package name.
|
||||
*/
|
||||
// ANDROID_APP_PACKAGE: 'org.jitsi.meet',
|
||||
|
||||
// List of undocumented settings
|
||||
/**
|
||||
* Specify custom URL for downloading f droid app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
|
||||
INDICATOR_FONT_SIZES
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
||||
|
||||
// Connection indicators (
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
|
||||
|
@ -250,19 +253,12 @@ var interfaceConfig = {
|
|||
// Please use defaultLocalDisplayName from config.js
|
||||
// DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
||||
|
||||
// Please use defaultLogoUrl from config.js
|
||||
DEFAULT_LOGO_URL: '${BRANDING_WATERMARK_PATH}',
|
||||
|
||||
// Please use defaultRemoteDisplayName from config.js
|
||||
// DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
|
||||
|
||||
// Moved to config.js as \`toolbarConfig.initialTimeout\`.
|
||||
// INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||
|
||||
// Moved to config.js as \`toolbarConfig.alwaysVisible\`.
|
||||
// Documentation reference for the live streaming feature.
|
||||
// LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
|
||||
|
||||
// Moved to config.js as \`toolbarConfig.alwaysVisible\`.
|
||||
// TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ var interfaceConfig = {
|
|||
CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
|
||||
|
||||
DEFAULT_BACKGROUND: '#040404',
|
||||
DEFAULT_LOGO_URL: 'images/watermark.svg',
|
||||
DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
|
||||
|
||||
DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
|
||||
|
@ -76,6 +77,11 @@ var interfaceConfig = {
|
|||
|
||||
GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
|
||||
|
||||
/**
|
||||
* Hide the logo on the deep linking pages.
|
||||
*/
|
||||
HIDE_DEEP_LINKING_LOGO: false,
|
||||
|
||||
/**
|
||||
* Hide the invite prompt in the header when alone in the meeting.
|
||||
*/
|
||||
|
@ -84,6 +90,7 @@ var interfaceConfig = {
|
|||
JITSI_WATERMARK_LINK: 'https://jitsi.org',
|
||||
|
||||
LANG_DETECTION: true, // Allow i18n to detect the system language
|
||||
LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature.
|
||||
LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
|
||||
|
||||
/**
|
||||
|
@ -103,6 +110,23 @@ var interfaceConfig = {
|
|||
*/
|
||||
MOBILE_APP_PROMO: true,
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading android mobile app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading f droid app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
|
||||
|
||||
/**
|
||||
* Specify URL for downloading ios mobile app.
|
||||
*/
|
||||
MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
|
||||
|
||||
NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
|
||||
// Names of browsers which should show a warning stating the current browser
|
||||
// has a suboptimal experience. Browsers which are not listed as optimal or
|
||||
// unsupported are considered suboptimal. Valid values are:
|
||||
|
@ -120,7 +144,7 @@ var interfaceConfig = {
|
|||
RECENT_LIST_ENABLED: true,
|
||||
REMOTE_THUMBNAIL_RATIO: 1, // 1:1
|
||||
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds', 'more' ],
|
||||
SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds' ],
|
||||
|
||||
/**
|
||||
* Specify which sharing features should be displayed. If the value is not set
|
||||
|
@ -137,6 +161,7 @@ var interfaceConfig = {
|
|||
*/
|
||||
SHOW_CHROME_EXTENSION_BANNER: false,
|
||||
|
||||
SHOW_DEEP_LINKING_IMAGE: false,
|
||||
SHOW_JITSI_WATERMARK: true,
|
||||
SHOW_POWERED_BY: false,
|
||||
SHOW_PROMOTIONAL_CLOSE_PAGE: false,
|
||||
|
@ -177,31 +202,6 @@ var interfaceConfig = {
|
|||
*/
|
||||
// TILE_VIEW_MAX_COLUMNS: 5,
|
||||
|
||||
// List of undocumented settings
|
||||
/**
|
||||
INDICATOR_FONT_SIZES
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
||||
|
||||
/**
|
||||
* Specify URL for downloading ios mobile app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
|
||||
|
||||
/**
|
||||
* Specify custom URL for downloading android mobile app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify mobile app scheme for opening the app from the mobile browser.
|
||||
*/
|
||||
// APP_SCHEME: 'org.jitsi.meet',
|
||||
|
||||
// NATIVE_APP_NAME: 'Jitsi Meet',
|
||||
|
||||
/**
|
||||
* Specify Firebase dynamic link properties for the mobile apps.
|
||||
*/
|
||||
|
@ -214,19 +214,22 @@ var interfaceConfig = {
|
|||
// },
|
||||
|
||||
/**
|
||||
* Hide the logo on the deep linking pages.
|
||||
* Specify mobile app scheme for opening the app from the mobile browser.
|
||||
*/
|
||||
// HIDE_DEEP_LINKING_LOGO: false,
|
||||
// APP_SCHEME: 'org.jitsi.meet',
|
||||
|
||||
/**
|
||||
* Specify the Android app package name.
|
||||
*/
|
||||
// ANDROID_APP_PACKAGE: 'org.jitsi.meet',
|
||||
|
||||
// List of undocumented settings
|
||||
/**
|
||||
* Specify custom URL for downloading f droid app.
|
||||
*/
|
||||
// MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
|
||||
INDICATOR_FONT_SIZES
|
||||
PHONE_NUMBER_REGEX
|
||||
*/
|
||||
|
||||
// -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
|
||||
|
||||
// Connection indicators (
|
||||
// CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
|
||||
|
@ -239,19 +242,12 @@ var interfaceConfig = {
|
|||
// Please use defaultLocalDisplayName from config.js
|
||||
// DEFAULT_LOCAL_DISPLAY_NAME: 'me',
|
||||
|
||||
// Please use defaultLogoUrl from config.js
|
||||
// DEFAULT_LOGO_URL: 'images/watermark.svg',
|
||||
|
||||
// Please use defaultRemoteDisplayName from config.js
|
||||
// DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
|
||||
|
||||
// Moved to config.js as `toolbarConfig.initialTimeout`.
|
||||
// INITIAL_TOOLBAR_TIMEOUT: 20000,
|
||||
|
||||
// Please use `liveStreaming.helpLink` from config.js
|
||||
// Documentation reference for the live streaming feature.
|
||||
// LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live',
|
||||
|
||||
// Moved to config.js as `toolbarConfig.alwaysVisible`.
|
||||
// TOOLBAR_ALWAYS_VISIBLE: false,
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
2.0.8319-1
|
||||
2.0.7210-1
|
|
@ -7,9 +7,8 @@ JITSI_NGINX_CONFIG="$(cat <<EOF
|
|||
#server_names_hash_bucket_size 64;
|
||||
#
|
||||
#types {
|
||||
## nginx's default mime.types doesn't include a mapping for wasm or wav.
|
||||
## nginx's default mime.types doesn't include a mapping for wasm
|
||||
# application/wasm wasm;
|
||||
# audio/wav wav;
|
||||
#}
|
||||
# These upstreams are managed by __jitsi_meet
|
||||
#upstream prosody {
|
||||
|
@ -22,17 +21,6 @@ JITSI_NGINX_CONFIG="$(cat <<EOF
|
|||
# server 127.0.0.1:9090;
|
||||
# keepalive 2;
|
||||
#}
|
||||
#map \$arg_vnode \$prosody_node {
|
||||
# default prosody;
|
||||
# v1 v1;
|
||||
# v2 v2;
|
||||
# v3 v3;
|
||||
# v4 v4;
|
||||
# v5 v5;
|
||||
# v6 v6;
|
||||
# v7 v7;
|
||||
# v8 v8;
|
||||
#}
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
@ -103,13 +91,6 @@ server {
|
|||
alias /usr/share/jitsi-meet/libs/external_api.min.js;
|
||||
}
|
||||
|
||||
location = /_api/room-info {
|
||||
proxy_pass http://prosody/room-info?prefix=\$prefix&\$args;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header X-Forwarded-For \$remote_addr;
|
||||
proxy_set_header Host \$http_host;
|
||||
}
|
||||
|
||||
# ensure all static content can always be found first
|
||||
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)\$
|
||||
{
|
||||
|
@ -121,7 +102,6 @@ server {
|
|||
expires 1y;
|
||||
}
|
||||
}
|
||||
|
||||
# Paths for jsi / interpreters
|
||||
location ~ ^/i/(img/[^./]*.png|jsi.js|style.css)$
|
||||
{
|
||||
|
@ -213,14 +193,6 @@ server {
|
|||
rewrite ^/(.*)\$ /xmpp-websocket;
|
||||
}
|
||||
|
||||
location ~ ^/([^/?&:'"]+)/_api/room-info {
|
||||
set \$subdomain "\$1.";
|
||||
set \$subdir "\$1/";
|
||||
set \$prefix "\$1";
|
||||
|
||||
rewrite ^/(.*)\$ /_api/room-info;
|
||||
}
|
||||
|
||||
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
||||
location ~ ^/([^/?&:'"]+)/(.*)\$ {
|
||||
set \$subdomain "\$1.";
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
server_names_hash_bucket_size 64;
|
||||
|
||||
types {
|
||||
# nginx's default mime.types doesn't include a mapping for wasm or wav.
|
||||
# nginx's default mime.types doesn't include a mapping for wasm
|
||||
application/wasm wasm;
|
||||
audio/wav wav;
|
||||
}
|
||||
upstream prosody {
|
||||
zone upstreams 64K;
|
||||
|
@ -15,17 +14,6 @@ upstream jvb1 {
|
|||
server 127.0.0.1:9090;
|
||||
keepalive 2;
|
||||
}
|
||||
map $arg_vnode $prosody_node {
|
||||
default prosody;
|
||||
v1 v1;
|
||||
v2 v2;
|
||||
v3 v3;
|
||||
v4 v4;
|
||||
v5 v5;
|
||||
v6 v6;
|
||||
v7 v7;
|
||||
v8 v8;
|
||||
}
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
@ -85,13 +73,6 @@ server {
|
|||
alias /usr/share/jitsi-meet/libs/external_api.min.js;
|
||||
}
|
||||
|
||||
location = /_api/room-info {
|
||||
proxy_pass http://prosody/room-info?prefix=$prefix&$args;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
|
||||
# ensure all static content can always be found first
|
||||
location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
|
||||
{
|
||||
|
@ -106,7 +87,7 @@ server {
|
|||
|
||||
# BOSH
|
||||
location = /http-bind {
|
||||
proxy_pass http://$prosody_node/http-bind?prefix=$prefix&$args;
|
||||
proxy_pass http://prosody/http-bind?prefix=$prefix&$args;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
|
@ -115,7 +96,7 @@ server {
|
|||
|
||||
# xmpp websockets
|
||||
location = /xmpp-websocket {
|
||||
proxy_pass http://$prosody_node/xmpp-websocket?prefix=$prefix&$args;
|
||||
proxy_pass http://prosody/xmpp-websocket?prefix=$prefix&$args;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
@ -175,14 +156,6 @@ server {
|
|||
rewrite ^/(.*)$ /xmpp-websocket;
|
||||
}
|
||||
|
||||
location ~ ^/([^/?&:'"]+)/_api/room-info {
|
||||
set $subdomain "$1.";
|
||||
set $subdir "$1/";
|
||||
set $prefix "$1";
|
||||
|
||||
rewrite ^/(.*)$ /_api/room-info;
|
||||
}
|
||||
|
||||
# Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
|
||||
location ~ ^/([^/?&:'"]+)/(.*)$ {
|
||||
set $subdomain "$1.";
|
||||
|
|
|
@ -75,7 +75,8 @@ ${PROSODY_MAIN_END}
|
|||
${PROSODY_DOMAIN_START}
|
||||
-- This will be managed by __jitsi_meet_domain
|
||||
VirtualHost "${JITSI_DOMAIN:?}"
|
||||
authentication = "jitsi-anonymous" -- do not delete me
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
-- Properties below are modified by jitsi-meet-tokens package config
|
||||
-- and authentication above is switched to "token"
|
||||
--app_id="example_app_id"
|
||||
|
@ -91,7 +92,6 @@ VirtualHost "${JITSI_DOMAIN:?}"
|
|||
av_moderation_component = "avmoderation.${JITSI_DOMAIN:?}"
|
||||
speakerstats_component = "speakerstats.${JITSI_DOMAIN:?}"
|
||||
conference_duration_component = "conferenceduration.${JITSI_DOMAIN:?}"
|
||||
end_conference_component = "endconference.${JITSI_DOMAIN:?}"
|
||||
-- we need bosh
|
||||
modules_enabled = {
|
||||
"bosh";
|
||||
|
@ -100,11 +100,9 @@ VirtualHost "${JITSI_DOMAIN:?}"
|
|||
"speakerstats";
|
||||
"external_services";
|
||||
"conference_duration";
|
||||
"end_conference";
|
||||
"muc_lobby_rooms";
|
||||
"muc_breakout_rooms";
|
||||
"av_moderation";
|
||||
"room_metadata";
|
||||
${PROSODY_WEBSOCKET} "websocket";
|
||||
${PROSODY_WEBSOCKET} "smacks";
|
||||
}
|
||||
|
@ -115,7 +113,6 @@ ${PROSODY_WEBSOCKET} "smacks";
|
|||
c2s_require_encryption = false
|
||||
lobby_muc = "lobby.${JITSI_DOMAIN:?}"
|
||||
breakout_rooms_muc = "breakout.${JITSI_DOMAIN:?}"
|
||||
room_metadata_component = "metadata.${JITSI_DOMAIN:?}"
|
||||
main_muc = "conference.${JITSI_DOMAIN:?}"
|
||||
-- muc_lobby_whitelist = { "recorder.${JITSI_DOMAIN:?}" } -- Here we can whitelist jibri to enter lobby enabled rooms
|
||||
|
||||
|
@ -139,6 +136,7 @@ Component "breakout.${JITSI_DOMAIN:?}" "muc"
|
|||
modules_enabled = {
|
||||
"muc_meeting_id";
|
||||
"muc_domain_mapper";
|
||||
--"token_verification";
|
||||
"muc_rate_limit";
|
||||
"polls";
|
||||
}
|
||||
|
@ -186,9 +184,6 @@ Component "speakerstats.${JITSI_DOMAIN:?}" "speakerstats_component"
|
|||
Component "conferenceduration.${JITSI_DOMAIN:?}" "conference_duration_component"
|
||||
muc_component = "conference.${JITSI_DOMAIN:?}"
|
||||
|
||||
Component "endconference.${JITSI_DOMAIN:?}" "end_conference"
|
||||
muc_component = "conference.${JITSI_DOMAIN:?}"
|
||||
|
||||
Component "avmoderation.${JITSI_DOMAIN:?}" "av_moderation_component"
|
||||
muc_component = "conference.${JITSI_DOMAIN:?}"
|
||||
|
||||
|
@ -201,10 +196,6 @@ Component "lobby.${JITSI_DOMAIN:?}" "muc"
|
|||
"muc_rate_limit";
|
||||
"polls";
|
||||
}
|
||||
|
||||
Component "metadata.${JITSI_DOMAIN:?}" "room_metadata_component"
|
||||
muc_component = "conference.${JITSI_DOMAIN:?}"
|
||||
breakout_rooms_component = "breakout.${JITSI_DOMAIN:?}"
|
||||
${PROSODY_DOMAIN_END}
|
||||
|
||||
${PROSODY_SECUREDOMAIN_START}
|
||||
|
|
|
@ -36,7 +36,8 @@ unlimited_jids = {
|
|||
}
|
||||
|
||||
VirtualHost "jitmeet.example.com"
|
||||
authentication = "jitsi-anonymous" -- do not delete me
|
||||
-- enabled = false -- Remove this line to enable this host
|
||||
authentication = "anonymous"
|
||||
-- Properties below are modified by jitsi-meet-tokens package config
|
||||
-- and authentication above is switched to "token"
|
||||
--app_id="example_app_id"
|
||||
|
@ -52,7 +53,6 @@ VirtualHost "jitmeet.example.com"
|
|||
av_moderation_component = "avmoderation.jitmeet.example.com"
|
||||
speakerstats_component = "speakerstats.jitmeet.example.com"
|
||||
conference_duration_component = "conferenceduration.jitmeet.example.com"
|
||||
end_conference_component = "endconference.jitmeet.example.com"
|
||||
-- we need bosh
|
||||
modules_enabled = {
|
||||
"bosh";
|
||||
|
@ -61,16 +61,13 @@ VirtualHost "jitmeet.example.com"
|
|||
"speakerstats";
|
||||
"external_services";
|
||||
"conference_duration";
|
||||
"end_conference";
|
||||
"muc_lobby_rooms";
|
||||
"muc_breakout_rooms";
|
||||
"av_moderation";
|
||||
"room_metadata";
|
||||
}
|
||||
c2s_require_encryption = false
|
||||
lobby_muc = "lobby.jitmeet.example.com"
|
||||
breakout_rooms_muc = "breakout.jitmeet.example.com"
|
||||
room_metadata_component = "metadata.jitmeet.example.com"
|
||||
main_muc = "conference.jitmeet.example.com"
|
||||
-- muc_lobby_whitelist = { "recorder.jitmeet.example.com" } -- Here we can whitelist jibri to enter lobby enabled rooms
|
||||
|
||||
|
@ -94,6 +91,7 @@ Component "breakout.jitmeet.example.com" "muc"
|
|||
modules_enabled = {
|
||||
"muc_meeting_id";
|
||||
"muc_domain_mapper";
|
||||
--"token_verification";
|
||||
"muc_rate_limit";
|
||||
"polls";
|
||||
}
|
||||
|
@ -127,9 +125,6 @@ Component "speakerstats.jitmeet.example.com" "speakerstats_component"
|
|||
Component "conferenceduration.jitmeet.example.com" "conference_duration_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
Component "endconference.jitmeet.example.com" "end_conference"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
Component "avmoderation.jitmeet.example.com" "av_moderation_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
|
||||
|
@ -142,7 +137,3 @@ Component "lobby.jitmeet.example.com" "muc"
|
|||
"muc_rate_limit";
|
||||
"polls";
|
||||
}
|
||||
|
||||
Component "metadata.jitmeet.example.com" "room_metadata_component"
|
||||
muc_component = "conference.jitmeet.example.com"
|
||||
breakout_rooms_component = "breakout.jitmeet.example.com"
|
||||
|
|
|
@ -5,6 +5,7 @@ basic_urlencode() {
|
|||
}
|
||||
|
||||
PASSWD="$(cat "${__object}/parameter/password" 2>/dev/null || true)"
|
||||
DOMAIN="$(cat "${__object}/parameter/domain" 2>/dev/null || true)"
|
||||
STATE="$(cat "${__object}/parameter/state")"
|
||||
|
||||
if [ -z "${PASSWD}" ] && [ "${STATE}" != "absent" ]; then
|
||||
|
@ -23,7 +24,10 @@ EOF
|
|||
fi
|
||||
|
||||
JITSI_USER="$(basic_urlencode "${JITSI_USER_RAW}")"
|
||||
FQDN="$(basic_urlencode "${__target_host}")"
|
||||
if [ -z "${DOMAIN}" ]; then
|
||||
DOMAIN="${__target_host}"
|
||||
fi
|
||||
FQDN="$(basic_urlencode "${DOMAIN}")"
|
||||
FQDN_PATH="/var/lib/prosody/${FQDN}/accounts"
|
||||
FILENAME="${FQDN_PATH}/${JITSI_USER}.dat"
|
||||
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
password
|
||||
state
|
||||
domain
|
||||
|
|
|
@ -6,14 +6,7 @@ os="$(cat "${__global}/explorer/os")"
|
|||
case "${os}" in
|
||||
debian|devuan)
|
||||
# zero-config sysvinit and systemd compatibility
|
||||
os_version="$(cat "${__global}/explorer/os_version")"
|
||||
debian_package="runit-run"
|
||||
case "${os_version}" in
|
||||
beowulf)
|
||||
debian_package="runit"
|
||||
;;
|
||||
esac
|
||||
__package "${debian_package}"
|
||||
__package runit-run
|
||||
;;
|
||||
freebsd)
|
||||
__key_value \
|
||||
|
|
|
@ -33,25 +33,18 @@ if [ "${state}" != "present" ]; then
|
|||
exit
|
||||
fi
|
||||
|
||||
# Setup run file
|
||||
__file --state "${state}" --mode 0550 --source "${source}" \
|
||||
--onchange "sv restart '${sv}' || true" \
|
||||
"${run_file}"
|
||||
export require="${require} __file${run_file}"
|
||||
|
||||
if [ -f "${__object}/parameter/log" ]; then
|
||||
# Setup logger if requested
|
||||
logdir="/var/log/runit"
|
||||
__directory --parents "${svdir}/${sv}/log"
|
||||
__directory --state absent "${svdir}/${sv}/log/main" # Remove lingering old fashioned log
|
||||
__directory --parents "${logdir}/${sv}"
|
||||
export require="${require} __directory${svdir}/${sv}/log __directory${logdir}/${sv}"
|
||||
__directory --parents "${svdir}/${sv}/log/main"
|
||||
export require="${require} __directory${svdir}/${sv}/log/main"
|
||||
__file "${svdir}/${sv}/log/run" \
|
||||
--state "${state}" \
|
||||
--mode 0755 \
|
||||
--onchange "sv restart '${sv}/log' || true" \
|
||||
--source "-" <<EOF
|
||||
#!/bin/sh
|
||||
exec svlogd -tt '${logdir}/${sv}'
|
||||
exec svlogd -tt ./main
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Setup run file
|
||||
__file --state "${state}" --mode 0755 --source "${source}" "${run_file}"
|
||||
|
|
|
@ -90,11 +90,6 @@ binary
|
|||
If `--unpack` is used, a binary with this name must be unpacked.
|
||||
Otherwise, the contents of `--url` will be placed under this binary name.
|
||||
|
||||
env
|
||||
An `env` file consiting of `ENVIRONMENT_VARIABLE=VALUE`, one variable per
|
||||
line.
|
||||
Empty lines and those starting with `#` are ignored.
|
||||
|
||||
service-args
|
||||
Any extra arguments to pass along with `--service-exec`. Beware that any
|
||||
service-args having the format `--config=/etc/foo.cfg` should be
|
||||
|
|
|
@ -112,7 +112,7 @@ if [ "${USER}" != "root" ] && \
|
|||
--system \
|
||||
--state "${STATE}" \
|
||||
--home "${USER_HOME_DIR}" \
|
||||
--comment "cdist-managed service user" \
|
||||
--comment "cdist-managed ${SERVICE_NAME} user" \
|
||||
${USER_CREATE_HOME}
|
||||
# Track dependencies
|
||||
service_require="${service_require} __user/${USER}"
|
||||
|
@ -136,21 +136,11 @@ fi
|
|||
|
||||
|
||||
|
||||
# These messages will trigger a service restart (overridden for systemd)
|
||||
service_config_reload_pattern="^__file${CONFIG_FILE_DEST}"
|
||||
|
||||
# This should setup the object in $service_definition_require
|
||||
# See above.
|
||||
case "${INIT}" in
|
||||
systemd)
|
||||
if [ -z "${SERVICE_DEFINITION}" ]; then
|
||||
SYSTEMD_ENV_FILE="/etc/systemd/system/${SERVICE_NAME}.env"
|
||||
__file "${SYSTEMD_ENV_FILE}" \
|
||||
--mode 0400 \
|
||||
--source "${__object}/parameter/env"
|
||||
# We need to take into account the envionment file for systemd too
|
||||
service_config_reload_pattern="(${service_config_reload_pattern}|^__file${SYSTEMD_ENV_FILE})"
|
||||
|
||||
SERVICE_DEFINITION="$(cat <<EOF
|
||||
[Unit]
|
||||
Description=${SERVICE_DESCRIPTION}
|
||||
|
@ -163,7 +153,6 @@ User=${USER}
|
|||
Group=${GROUP}
|
||||
ExecStart=${SERVICE_EXEC}
|
||||
Restart=always
|
||||
EnvironmentFile=${SYSTEMD_ENV_FILE}
|
||||
${WORKING_DIRECTORY_SYSTEMD}
|
||||
|
||||
[Install]
|
||||
|
@ -180,18 +169,12 @@ EOF
|
|||
;;
|
||||
runit|sysvinit)
|
||||
if [ -z "${SERVICE_DEFINITION}" ]; then
|
||||
RUNIT_ENV="$(sed -Ee 's!^([[:alnum:]_]+)=(.*)$!export \1=\2!' "${__object}/parameter/env")"
|
||||
SERVICE_DEFINITION="$(cat <<EOF
|
||||
#!/bin/sh -e
|
||||
${WORKING_DIRECTORY_RUNIT}
|
||||
# User-provided environment
|
||||
${RUNIT_ENV}
|
||||
# System vars
|
||||
export HOME="\$(getent passwd '${USER}' | cut -d: -f6)"
|
||||
export USER="${USER}"
|
||||
export GROUP="${GROUP}"
|
||||
|
||||
exec 2>&1
|
||||
exec chpst -u "${USER}:${GROUP}" ${SERVICE_EXEC}
|
||||
EOF
|
||||
)"
|
||||
|
@ -296,10 +279,10 @@ EOF
|
|||
--onchange "${perform_service_upgrade}" \
|
||||
--source "-"
|
||||
else
|
||||
# We only restart here if there was a config or env change
|
||||
# We only restart here if there was a config change
|
||||
# but there was not a version change
|
||||
require="${service_require}" __check_messages \
|
||||
"single_binary_service_${__object_id}" \
|
||||
--pattern "${service_config_reload_pattern}" \
|
||||
--pattern "^__file${CONFIG_FILE_DEST}" \
|
||||
--execute "$(sv_cmd restart)"
|
||||
fi
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
config-file-source
|
||||
env
|
||||
user
|
||||
group
|
||||
state
|
||||
|
|
Loading…
Reference in New Issue