parent
a3f2df9045
commit
889a838faa
17 changed files with 4 additions and 636 deletions
@ -1,36 +0,0 @@ |
||||
version: '3' |
||||
|
||||
services: |
||||
jibri: |
||||
image: jitsi/jibri:latest |
||||
restart: ${RESTART_POLICY} |
||||
volumes: |
||||
- ${CONFIG}/jibri:/config:Z |
||||
- /dev/shm:/dev/shm |
||||
cap_add: |
||||
- SYS_ADMIN |
||||
- NET_BIND_SERVICE |
||||
devices: |
||||
- /dev/snd:/dev/snd |
||||
environment: |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_RECORDER_DOMAIN |
||||
- XMPP_SERVER |
||||
- XMPP_DOMAIN |
||||
- JIBRI_XMPP_USER |
||||
- JIBRI_XMPP_PASSWORD |
||||
- JIBRI_BREWERY_MUC |
||||
- JIBRI_RECORDER_USER |
||||
- JIBRI_RECORDER_PASSWORD |
||||
- JIBRI_RECORDING_DIR |
||||
- JIBRI_FINALIZE_RECORDING_SCRIPT_PATH |
||||
- JIBRI_STRIP_DOMAIN_JID |
||||
- JIBRI_LOGS_DIR |
||||
- DISPLAY=:0 |
||||
- TZ |
||||
depends_on: |
||||
- jicofo |
||||
networks: |
||||
meet.jitsi: |
||||
|
@ -1,53 +0,0 @@ |
||||
ARG JITSI_REPO=jitsi |
||||
FROM ${JITSI_REPO}/base-java |
||||
|
||||
#ARG CHROME_RELEASE=latest |
||||
#ARG CHROMEDRIVER_MAJOR_RELEASE=latest |
||||
ARG CHROME_RELEASE=78.0.3904.97 |
||||
ARG CHROMEDRIVER_MAJOR_RELEASE=78 |
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
||||
|
||||
RUN \ |
||||
apt-dpkg-wrap apt-get update \ |
||||
&& apt-dpkg-wrap apt-get install -y jibri libgl1-mesa-dri procps \ |
||||
&& apt-cleanup |
||||
|
||||
RUN \ |
||||
[ "${CHROME_RELEASE}" = "latest" ] \ |
||||
&& wget -q https://dl-ssl.google.com/linux/linux_signing_key.pub -O /etc/apt/trusted.gpg.d/google.asc \ |
||||
&& echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \ |
||||
&& apt-dpkg-wrap apt-get update \ |
||||
&& apt-dpkg-wrap apt-get install -y google-chrome-stable \ |
||||
&& apt-cleanup \ |
||||
|| true |
||||
|
||||
RUN \ |
||||
[ "${CHROME_RELEASE}" != "latest" ] \ |
||||
&& curl -4so "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" "http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" \ |
||||
&& apt-dpkg-wrap apt-get update \ |
||||
&& apt-dpkg-wrap apt-get install -y "/tmp/google-chrome-stable_${CHROME_RELEASE}-1_amd64.deb" \ |
||||
&& apt-cleanup \ |
||||
|| true |
||||
|
||||
RUN \ |
||||
[ "${CHROMEDRIVER_MAJOR_RELEASE}" = "latest" ] \ |
||||
&& CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE)" \ |
||||
|| CHROMEDRIVER_RELEASE="$(curl -4Ls https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROMEDRIVER_MAJOR_RELEASE})" \ |
||||
&& curl -4Ls "https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_RELEASE}/chromedriver_linux64.zip" \ |
||||
| zcat >> /usr/bin/chromedriver \ |
||||
&& chmod +x /usr/bin/chromedriver \ |
||||
&& chromedriver --version |
||||
|
||||
RUN \ |
||||
apt-dpkg-wrap apt-get update \ |
||||
&& apt-dpkg-wrap apt-get install -y jitsi-upload-integrations jq \ |
||||
&& apt-cleanup |
||||
|
||||
COPY rootfs/ / |
||||
|
||||
RUN /fix-permissions.sh |
||||
|
||||
VOLUME /config |
||||
|
||||
USER 1001 |
@ -1,60 +0,0 @@ |
||||
{ |
||||
"recording_directory":"{{ .Env.JIBRI_RECORDING_DIR }}", |
||||
// The path to the script which will be run on completed recordings |
||||
{{ if .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH -}} |
||||
"finalize_recording_script_path": "{{ .Env.JIBRI_FINALIZE_RECORDING_SCRIPT_PATH }}", |
||||
{{ end -}} |
||||
"xmpp_environments": [ |
||||
{ |
||||
// A friendly name for this environment which can be used |
||||
// for logging, stats, etc. |
||||
"name": "prod environment", |
||||
// The hosts of the XMPP servers to connect to as part of |
||||
// this environment |
||||
"xmpp_server_hosts": [ |
||||
"{{ .Env.XMPP_SERVER }}" |
||||
], |
||||
"xmpp_domain": "{{ .Env.XMPP_DOMAIN }}", |
||||
// Jibri will login to the xmpp server as a privileged user |
||||
"control_login": { |
||||
"domain": "{{ .Env.XMPP_AUTH_DOMAIN }}", |
||||
// The credentials for logging in |
||||
"username": "{{ .Env.JIBRI_XMPP_USER }}", |
||||
"password": "{{ .Env.JIBRI_XMPP_PASSWORD }}" |
||||
}, |
||||
// Using the control_login information above, Jibri will join |
||||
// a control muc as a means of announcing its availability |
||||
// to provide services for a given environment |
||||
"control_muc": { |
||||
"domain": "{{ .Env.XMPP_INTERNAL_MUC_DOMAIN }}", |
||||
"room_name": "{{ .Env.JIBRI_BREWERY_MUC }}", |
||||
// MUST be unic for every instanse |
||||
"nickname": "jibri-instanse-{{ .Env.JIBRI_INSTANCE_ID }}" |
||||
}, |
||||
// All participants in a call join a muc so they can exchange |
||||
// information. Jibri can be instructed to join a special muc |
||||
// with credentials to give it special abilities (e.g. not being |
||||
// displayed to other users like a normal participant) |
||||
"call_login": { |
||||
"domain": "{{ .Env.XMPP_RECORDER_DOMAIN }}", |
||||
"username": "{{ .Env.JIBRI_RECORDER_USER }}", |
||||
"password": "{{ .Env.JIBRI_RECORDER_PASSWORD }}" |
||||
}, |
||||
// When jibri gets a request to start a service for a room, the room |
||||
// jid will look like: |
||||
// roomName@optional.prefixes.subdomain.xmpp_domain |
||||
// We'll build the url for the call by transforming that into: |
||||
// https://xmpp_domain/subdomain/roomName |
||||
// So if there are any prefixes in the jid (like jitsi meet, which |
||||
// has its participants join a muc at conference.xmpp_domain) then |
||||
// list that prefix here so it can be stripped out to generate |
||||
// the call url correctly |
||||
"room_jid_domain_string_to_strip_from_start": "{{ .Env.JIBRI_STRIP_DOMAIN_JID }}.", |
||||
// The amount of time, in minutes, a service is allowed to continue. |
||||
// Once a service has been running for this long, it will be |
||||
// stopped (cleanly). A value of 0 means an indefinite amount |
||||
// of time is allowed |
||||
"usage_timeout": "0" |
||||
} |
||||
] |
||||
} |
@ -1,33 +0,0 @@ |
||||
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler |
||||
|
||||
java.util.logging.FileHandler.level = FINE |
||||
java.util.logging.FileHandler.pattern = {{ .Env.JIBRI_LOGS_DIR }}/log.%g.txt |
||||
java.util.logging.FileHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
java.util.logging.FileHandler.count = 10 |
||||
java.util.logging.FileHandler.limit = 10000000 |
||||
|
||||
org.jitsi.jibri.capture.ffmpeg.util.FfmpegFileHandler.level = FINE |
||||
org.jitsi.jibri.capture.ffmpeg.util.FfmpegFileHandler.pattern = {{ .Env.JIBRI_LOGS_DIR }}/ffmpeg.%g.txt |
||||
org.jitsi.jibri.capture.ffmpeg.util.FfmpegFileHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
org.jitsi.jibri.capture.ffmpeg.util.FfmpegFileHandler.count = 10 |
||||
org.jitsi.jibri.capture.ffmpeg.util.FfmpegFileHandler.limit = 10000000 |
||||
|
||||
org.jitsi.jibri.sipgateway.pjsua.util.PjsuaFileHandler.level = FINE |
||||
org.jitsi.jibri.sipgateway.pjsua.util.PjsuaFileHandler.pattern = {{ .Env.JIBRI_LOGS_DIR }}/pjsua.%g.txt |
||||
org.jitsi.jibri.sipgateway.pjsua.util.PjsuaFileHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
org.jitsi.jibri.sipgateway.pjsua.util.PjsuaFileHandler.count = 10 |
||||
org.jitsi.jibri.sipgateway.pjsua.util.PjsuaFileHandler.limit = 10000000 |
||||
|
||||
org.jitsi.jibri.selenium.util.BrowserFileHandler.level = FINE |
||||
org.jitsi.jibri.selenium.util.BrowserFileHandler.pattern = {{ .Env.JIBRI_LOGS_DIR }}/browser.%g.txt |
||||
org.jitsi.jibri.selenium.util.BrowserFileHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
org.jitsi.jibri.selenium.util.BrowserFileHandler.count = 10 |
||||
org.jitsi.jibri.selenium.util.BrowserFileHandler.limit = 10000000 |
||||
|
||||
java.util.logging.ConsoleHandler.level = FINE |
||||
java.util.logging.ConsoleHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
|
||||
org.jitsi.level = FINE |
||||
|
||||
org.glassfish.level = INFO |
||||
org.osgi.level = INFO |
@ -1,60 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
if [[ -z $JIBRI_RECORDER_PASSWORD || -z $JIBRI_XMPP_PASSWORD ]]; then |
||||
echo 'FATAL ERROR: Jibri recorder password and auth password must be set' |
||||
exit 1 |
||||
fi |
||||
|
||||
OLD_JIBRI_RECORDER_PASSWORD=passw0rd |
||||
if [[ "$JIBRI_RECORDER_PASSWORD" == "$OLD_JIBRI_RECORDER_PASSWORD" ]]; then |
||||
echo 'FATAL ERROR: Jibri recorder password must be changed, check the README' |
||||
exit 1 |
||||
fi |
||||
|
||||
OLD_JIBRI_XMPP_PASSWORD=passw0rd |
||||
if [[ "$JIBRI_XMPP_PASSWORD" == "$OLD_JIBRI_XMPP_PASSWORD" ]]; then |
||||
echo 'FATAL ERROR: Jibri auth password must be changed, check the README' |
||||
exit 1 |
||||
fi |
||||
|
||||
# DISPLAY is necessary for start |
||||
[ -z "${DISPLAY}" ] \ |
||||
&& ( echo -e "\e[31mERROR: Please set DISPLAY variable.\e[39m"; kill 1; exit 1 ) |
||||
|
||||
# check loaded snd_aloop module and exit if is not loaded on the host |
||||
[ -z "$(lsmod | grep -om1 snd_aloop)" ] \ |
||||
&& ( echo -e "\e[31mERROR: Please load snd-aloop module on the docker host.\e[39m"; kill 1; exit 1 ) |
||||
|
||||
# TODO Fix this for OpenShift |
||||
# get host's audio group id |
||||
host_audio_group="$(stat -c %g /dev/snd/pcmC0D0p 2>/dev/null)" |
||||
|
||||
# audio group is not found. Has it been run without jibri.yml? |
||||
[ -z "${host_audio_group}" ] \ |
||||
&& ( echo -e "\e[31mERROR: Binding /dev/snd is not found. Please check that you run docker-compose with -f jibri.yml.\e[39m"; kill 1; exit 1 ) |
||||
|
||||
# try to create group with this id. If group with the id already exists, just skip |
||||
groupadd -g ${host_audio_group} jibri-audio >/dev/null 2>&1 |
||||
# include user to the group by id |
||||
usermod -aG ${host_audio_group} jibri |
||||
|
||||
# script for finalizing must have executing bit. |
||||
[ ! -z "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \ |
||||
&& [ -f "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \ |
||||
&& [ ! -x "${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH}" ] \ |
||||
&& chmod +x ${JIBRI_FINALIZE_RECORDING_SCRIPT_PATH} |
||||
|
||||
# set random jibri nickname for the instance if is not set |
||||
[ -z "${JIBRI_INSTANCE_ID}" ] && export JIBRI_INSTANCE_ID=$(date +%N) |
||||
|
||||
# always recreate configs |
||||
tpl /defaults/config.json > /etc/jitsi/jibri/config.json |
||||
tpl /defaults/logging.properties > /etc/jitsi/jibri/logging.properties |
||||
|
||||
# make recording dir |
||||
[ -z "${JIBRI_RECORDING_DIR}" ] && export JIBRI_RECORDING_DIR=/config/recordings |
||||
mkdir -pm 770 ${JIBRI_RECORDING_DIR} |
||||
|
||||
# make logs dir |
||||
[ -z "${JIBRI_LOGS_DIR}" ] && export JIBRI_LOGS_DIR=/config/logs |
||||
mkdir -pm 770 ${JIBRI_LOGS_DIR} |
@ -1,4 +0,0 @@ |
||||
{ |
||||
"CommandLineFlagSecurityWarningsEnabled": false |
||||
} |
||||
|
@ -1,5 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
DAEMON="/usr/bin/Xorg -nocursor -noreset +extension RANDR +extension RENDER -logfile /tmp/xorg.log -config /etc/jitsi/jibri/xorg-video-dummy.conf ${DISPLAY}" |
||||
exec /bin/bash -c "exec $DAEMON" |
||||
|
@ -1,5 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
DAEMON="/usr/bin/icewm-session" |
||||
exec /bin/bash -c "exec $DAEMON" |
||||
|
@ -1,9 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
# TODO Fix this for OpenShift |
||||
# we have to set it, otherwise chrome won't find ~/.asoundrc file |
||||
HOME=/home/jibri |
||||
|
||||
DAEMON=/opt/jitsi/jibri/launch.sh |
||||
exec /bin/bash -c "exec $DAEMON" |
||||
|
@ -1,50 +0,0 @@ |
||||
version: '3' |
||||
|
||||
services: |
||||
# SIP gateway (audio) |
||||
jigasi: |
||||
image: jitsi/jigasi:latest |
||||
restart: ${RESTART_POLICY} |
||||
ports: |
||||
- '${JIGASI_PORT_MIN}-${JIGASI_PORT_MAX}:${JIGASI_PORT_MIN}-${JIGASI_PORT_MAX}/udp' |
||||
volumes: |
||||
- ${CONFIG}/jigasi:/config:Z |
||||
- ${CONFIG}/transcripts:/tmp/transcripts:Z |
||||
environment: |
||||
- ENABLE_AUTH |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_MUC_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_SERVER |
||||
- XMPP_DOMAIN |
||||
- PUBLIC_URL |
||||
- JIGASI_SIP_URI |
||||
- JIGASI_SIP_PASSWORD |
||||
- JIGASI_SIP_SERVER |
||||
- JIGASI_SIP_PORT |
||||
- JIGASI_SIP_TRANSPORT |
||||
- JIGASI_SIP_DEFAULT_ROOM |
||||
- JIGASI_XMPP_USER |
||||
- JIGASI_XMPP_PASSWORD |
||||
- JIGASI_BREWERY_MUC |
||||
- JIGASI_PORT_MIN |
||||
- JIGASI_PORT_MAX |
||||
- JIGASI_HEALTH_CHECK_SIP_URI |
||||
- JIGASI_HEALTH_CHECK_INTERVAL |
||||
- JIGASI_SIP_KEEP_ALIVE_METHOD |
||||
- JIGASI_ENABLE_SDES_SRTP |
||||
- ENABLE_TRANSCRIPTIONS |
||||
- JIGASI_TRANSCRIBER_ADVERTISE_URL |
||||
- JIGASI_TRANSCRIBER_RECORD_AUDIO |
||||
- JIGASI_TRANSCRIBER_SEND_TXT |
||||
- GC_PROJECT_ID |
||||
- GC_PRIVATE_KEY_ID |
||||
- GC_PRIVATE_KEY |
||||
- GC_CLIENT_EMAIL |
||||
- GC_CLIENT_ID |
||||
- GC_CLIENT_CERT_URL |
||||
- TZ |
||||
depends_on: |
||||
- prosody |
||||
networks: |
||||
meet.jitsi: |
@ -1,17 +0,0 @@ |
||||
ARG JITSI_REPO=jitsi |
||||
FROM ${JITSI_REPO}/base-java |
||||
|
||||
ENV GOOGLE_APPLICATION_CREDENTIALS /config/key.json |
||||
|
||||
RUN \ |
||||
apt-dpkg-wrap apt-get update && \ |
||||
apt-dpkg-wrap apt-get install -y jigasi jq && \ |
||||
apt-cleanup |
||||
|
||||
COPY rootfs/ / |
||||
|
||||
RUN /fix-permissions.sh |
||||
|
||||
VOLUME ["/config", "/tmp/transcripts"] |
||||
|
||||
USER 1001 |
@ -1,18 +0,0 @@ |
||||
handlers= java.util.logging.ConsoleHandler |
||||
|
||||
java.util.logging.ConsoleHandler.level = ALL |
||||
java.util.logging.ConsoleHandler.formatter = net.java.sip.communicator.util.ScLogFormatter |
||||
|
||||
net.java.sip.communicator.util.ScLogFormatter.programname=Jigasi |
||||
|
||||
.level=INFO |
||||
net.sf.level=SEVERE |
||||
net.java.sip.communicator.plugin.reconnectplugin.level=FINE |
||||
org.ice4j.level=SEVERE |
||||
org.jitsi.impl.neomedia.level=SEVERE |
||||
|
||||
# Do not worry about missing strings |
||||
net.java.sip.communicator.service.resources.AbstractResourcesService.level=SEVERE |
||||
|
||||
#net.java.sip.communicator.service.protocol.level=ALL |
||||
|
@ -1,150 +0,0 @@ |
||||
net.java.sip.communicator.impl.protocol.SingleCallInProgressPolicy.enabled=false |
||||
|
||||
# Adjust opus encoder complexity |
||||
net.java.sip.communicator.impl.neomedia.codec.audio.opus.encoder.COMPLEXITY=10 |
||||
|
||||
# Disables packet logging |
||||
net.java.sip.communicator.packetlogging.PACKET_LOGGING_ENABLED=false |
||||
|
||||
# SIP account |
||||
net.java.sip.communicator.impl.protocol.sip.acc1=acc1 |
||||
{{ if and .Env.JIGASI_SIP_PORT .Env.JIGASI_SIP_TRANSPORT }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_ADDRESS={{ .Env.JIGASI_SIP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_AUTO_CONFIG=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_PORT={{ .Env.JIGASI_SIP_PORT | default "5060" }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PREFERRED_TRANSPORT={{ .Env.JIGASI_SIP_TRANSPORT | default "UDP" }} |
||||
{{ end }} |
||||
{{ if .Env.JIGASI_ENABLE_SDES_SRTP | default "0" | toBool }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SAVP_OPTION=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DEFAULT_ENCRYPTION=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DEFAULT_SIPZRTP_ATTRIBUTE=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.ZRTP=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.SDES=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.DTLS-SRTP=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.ZRTP=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.SDES=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SDES_CIPHER_SUITES=AES_CM_128_HMAC_SHA1_80,AES_CM_128_HMAC_SHA1_32 |
||||
{{ end }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ACCOUNT_UID=SIP\:{{ .Env.JIGASI_SIP_URI }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PASSWORD={{ .Env.JIGASI_SIP_PASSWORD | b64enc }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROTOCOL_NAME=SIP |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SERVER_ADDRESS={{ .Env.JIGASI_SIP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.USER_ID={{ .Env.JIGASI_SIP_URI }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.KEEP_ALIVE_INTERVAL=25 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.KEEP_ALIVE_METHOD={{ .Env.JIGASI_SIP_KEEP_ALIVE_METHOD | default "OPTIONS" }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.VOICEMAIL_ENABLED=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.JITSI_MEET_ROOM_HEADER_NAME=X-Room-Name |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.JITSI_MEET_DOMAIN_BASE_HEADER_NAME=X-Domain-Base |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.AMR-WB/16000=750 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.G722/8000=700 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.GSM/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.H263-1998/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.H264/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.PCMA/8000=600 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.PCMU/8000=650 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/12000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/16000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/24000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.VP8/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.iLBC/8000=10 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.opus/48000=1000 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.red/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/16000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/32000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.telephone-event/8000=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.ulpfec/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.OVERRIDE_ENCODINGS=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DOMAIN_BASE={{ .Env.XMPP_DOMAIN }} |
||||
|
||||
# XMPP account used for control |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1=acc1 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ACCOUNT_UID=Jabber:{{ .Env.JIGASI_XMPP_USER }}@{{ .Env.XMPP_AUTH_DOMAIN }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.USER_ID={{ .Env.JIGASI_XMPP_USER }}@{{ .Env.XMPP_AUTH_DOMAIN }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_SERVER_OVERRIDDEN=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.SERVER_ADDRESS={{ .Env.XMPP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.PASSWORD={{ .Env.JIGASI_XMPP_PASSWORD | b64enc }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.AUTO_GENERATE_RESOURCE=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.RESOURCE_PRIORITY=30 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_CARBON_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.DEFAULT_ENCRYPTION=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_USE_ICE=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_ACCOUNT_DISABLED=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_PREFERRED_PROTOCOL=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.AUTO_DISCOVER_JINGLE_NODES=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.PROTOCOL=Jabber |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.IS_USE_UPNP=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.USE_DEFAULT_STUN_SERVER=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ENCRYPTION_PROTOCOL.DTLS-SRTP=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.VIDEO_CALLING_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.OVERRIDE_ENCODINGS=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.G722/8000=705 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.GSM/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.H263-1998/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.H264/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.PCMA/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.PCMU/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/12000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/16000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/24000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.SILK/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.VP8/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.iLBC/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.opus/48000=750 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/16000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/32000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.speex/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.Encodings.telephone-event/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.BREWERY={{ .Env.JIGASI_BREWERY_MUC }}@{{ .Env.XMPP_INTERNAL_MUC_DOMAIN }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc1.DOMAIN_BASE={{ .Env.XMPP_DOMAIN }} |
||||
|
||||
org.jitsi.jigasi.BREWERY_ENABLED=true |
||||
|
||||
org.jitsi.jigasi.HEALTH_CHECK_SIP_URI={{ .Env.JIGASI_HEALTH_CHECK_SIP_URI | default "" }} |
||||
org.jitsi.jigasi.HEALTH_CHECK_INTERVAL={{ .Env.JIGASI_HEALTH_CHECK_INTERVAL | default "300000" }} |
||||
org.jitsi.jigasi.HEALTH_CHECK_TIMEOUT=600000 |
||||
|
||||
org.jitsi.jigasi.xmpp.acc.IS_SERVER_OVERRIDDEN=true |
||||
org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS={{ .Env.XMPP_SERVER }} |
||||
org.jitsi.jigasi.xmpp.acc.VIDEO_CALLING_DISABLED=true |
||||
org.jitsi.jigasi.xmpp.acc.JINGLE_NODES_ENABLED=false |
||||
org.jitsi.jigasi.xmpp.acc.AUTO_DISCOVER_STUN=false |
||||
org.jitsi.jigasi.xmpp.acc.IM_DISABLED=true |
||||
org.jitsi.jigasi.xmpp.acc.SERVER_STORED_INFO_DISABLED=true |
||||
org.jitsi.jigasi.xmpp.acc.IS_FILE_TRANSFER_DISABLED=true |
||||
{{ if .Env.ENABLE_AUTH | default "0" | toBool }} |
||||
org.jitsi.jigasi.xmpp.acc.USER_ID={{ .Env.JIGASI_XMPP_USER }}@{{ .Env.XMPP_AUTH_DOMAIN }} |
||||
org.jitsi.jigasi.xmpp.acc.PASS={{ .Env.JIGASI_XMPP_PASSWORD }} |
||||
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false |
||||
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true |
||||
{{ end }} |
||||
|
||||
# Activate this property if you are using self-signed certificates or other |
||||
# type of non-trusted certicates. In this mode your service trust in the |
||||
# remote certificates always. |
||||
net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true |
||||
|
||||
{{ if .Env.ENABLE_TRANSCRIPTIONS | default "0" | toBool }} |
||||
# Transcription config |
||||
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true |
||||
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=true |
||||
org.jitsi.jigasi.transcription.DIRECTORY=/tmp/transcripts |
||||
org.jitsi.jigasi.transcription.BASE_URL={{ .Env.PUBLIC_URL }}/transcripts |
||||
org.jitsi.jigasi.transcription.jetty.port=-1 |
||||
org.jitsi.jigasi.transcription.ADVERTISE_URL={{ .Env.JIGASI_TRANSCRIBER_ADVERTISE_URL | default "false"}} |
||||
org.jitsi.jigasi.transcription.SAVE_JSON=false |
||||
org.jitsi.jigasi.transcription.SEND_JSON=true |
||||
org.jitsi.jigasi.transcription.SAVE_TXT=true |
||||
org.jitsi.jigasi.transcription.SEND_TXT={{ .Env.JIGASI_TRANSCRIBER_SEND_TXT | default "false"}} |
||||
org.jitsi.jigasi.transcription.RECORD_AUDIO={{ .Env.JIGASI_TRANSCRIBER_RECORD_AUDIO | default "false"}} |
||||
org.jitsi.jigasi.transcription.RECORD_AUDIO_FORMAT=wav |
||||
{{end}} |
||||
|
||||
{{ if .Env.JIGASI_SIP_DEFAULT_ROOM }} |
||||
org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME={{ .Env.JIGASI_SIP_DEFAULT_ROOM }} |
||||
{{ end }} |
||||
|
||||
org.jitsi.jigasi.MUC_SERVICE_ADDRESS={{ .Env.XMPP_MUC_DOMAIN }} |
@ -1,50 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
if [[ -z $JIGASI_XMPP_PASSWORD ]]; then |
||||
echo 'FATAL ERROR: Jigasi auth password must be set' |
||||
exit 1 |
||||
fi |
||||
|
||||
OLD_JIGASI_XMPP_PASSWORD=passw0rd |
||||
if [[ "$JIGASI_XMPP_PASSWORD" == "$OLD_JIGASI_XMPP_PASSWORD" ]]; then |
||||
echo 'FATAL ERROR: Jigasi auth password must be changed, check the README' |
||||
exit 1 |
||||
fi |
||||
|
||||
tpl /defaults/sip-communicator.properties > /config/sip-communicator.properties |
||||
if [[ -f /config/custom-sip-communicator.properties ]]; then |
||||
cat /config/custom-sip-communicator.properties >> /config/sip-communicator.properties |
||||
fi |
||||
|
||||
if [[ ! -f /config/logging.properties ]]; then |
||||
cp /defaults/logging.properties /config |
||||
fi |
||||
|
||||
# Create Google Cloud Credentials |
||||
if [[ $ENABLE_TRANSCRIPTIONS -eq 1 || $ENABLE_TRANSCRIPTIONS == "true" ]]; then |
||||
if [[ -z $GC_PROJECT_ID || -z $GC_PRIVATE_KEY_ID || -z $GC_PRIVATE_KEY || -z $GC_CLIENT_EMAIL || -z $GC_CLIENT_ID || -z $GC_CLIENT_CERT_URL ]]; then |
||||
echo 'Transcriptions: One or more environment variables are undefined' |
||||
exit 1 |
||||
fi |
||||
|
||||
jq -n \ |
||||
--arg GC_PROJECT_ID "$GC_PROJECT_ID" \ |
||||
--arg GC_PRIVATE_KEY_ID "$GC_PRIVATE_KEY_ID" \ |
||||
--arg GC_PRIVATE_KEY "$GC_PRIVATE_KEY" \ |
||||
--arg GC_CLIENT_EMAIL "$GC_CLIENT_EMAIL" \ |
||||
--arg GC_CLIENT_ID "$GC_CLIENT_ID" \ |
||||
--arg GC_CLIENT_CERT_URL "$GC_CLIENT_CERT_URL" \ |
||||
'{ |
||||
type: "service_account", |
||||
project_id: $GC_PROJECT_ID, |
||||
private_key_id: $GC_PRIVATE_KEY_ID, |
||||
private_key: $GC_PRIVATE_KEY, |
||||
client_email: $GC_CLIENT_EMAIL, |
||||
client_id: $GC_CLIENT_ID, |
||||
auth_uri: "https://accounts.google.com/o/oauth2/auth", |
||||
token_uri: "https://oauth2.googleapis.com/token", |
||||
auth_provider_x509_cert_url: "https://www.googleapis.com/oauth2/v1/certs", |
||||
client_x509_cert_url: $GC_CLIENT_CERT_URL |
||||
}' \ |
||||
> /config/key.json |
||||
fi |
@ -1,9 +0,0 @@ |
||||
#!/usr/bin/with-contenv bash |
||||
|
||||
JAVA_SYS_PROPS="-Djava.util.logging.config.file=/config/logging.properties" |
||||
|
||||
DAEMON=/usr/share/jigasi/jigasi.sh |
||||
DAEMON_OPTS="--nocomponent=true --configdir=/ --configdirname=config --min-port=$JIGASI_PORT_MIN --max-port=$JIGASI_PORT_MAX" |
||||
|
||||
exec /bin/bash -c "JAVA_SYS_PROPS=\"$JAVA_SYS_PROPS\" exec $DAEMON $DAEMON_OPTS" |
||||
|
@ -1,72 +0,0 @@ |
||||
#!/bin/bash |
||||
|
||||
set -e |
||||
|
||||
# Don't start a release if the tree is dirty |
||||
# |
||||
|
||||
if [[ ! -z $(git status -s) ]]; then |
||||
echo "Git tree is not clean, aborting release!" |
||||
exit 1 |
||||
fi |
||||
|
||||
# Get version and branch (we only do stable for now) |
||||
# |
||||
|
||||
V="$1" |
||||
RELEASE="${2:-stable}" |
||||
|
||||
if [[ -z $V ]]; then |
||||
echo "A version must be specified!" |
||||
exit 1 |
||||
fi |
||||
|
||||
VERSION="${RELEASE}-${V}" |
||||
echo "Releasing ${VERSION}" |
||||
|
||||
if git rev-parse "${VERSION}" >/dev/null 2>&1; then |
||||
echo "Tag for such version already exists!" |
||||
exit 1 |
||||
fi |
||||
|
||||
# Prepare changelog |
||||
# |
||||
|
||||
LAST_VERSION=$(git describe --tags --abbrev=0) |
||||
CHANGES=$(git log --oneline --no-decorate --no-merges ${LAST_VERSION}..HEAD --pretty=format:"%x2a%x20%h%x20%s") |
||||
|
||||
echo "Changelog:" |
||||
echo "$CHANGES" |
||||
|
||||
echo -e "## ${VERSION}\n\nBased on ${RELEASE} release ${V}.\n\n${CHANGES}\n" > tmp |
||||
cat CHANGELOG.md >> tmp |
||||
mv tmp CHANGELOG.md |
||||
|
||||
# Set specific image tags in compose files |
||||
# |
||||
|
||||
sed -i "" -e "s/latest/${VERSION}/" *.yml |
||||
|
||||
# Commit all changes and tag the repo |
||||
# |
||||
|
||||
git commit -a -m "release: ${VERSION}" -m "${CHANGES}" |
||||
git tag -a "${VERSION}" -m "release" -m "${CHANGES}" |
||||
|
||||
# Tag Docker images and push them to DockerHub |
||||
# |
||||
|
||||
JITSI_BUILD=${VERSION} make release |
||||
|
||||
# Revert back to "latest" for development |
||||
# |
||||
|
||||
sed -i "" -e "s/${VERSION}/latest/" *.yml |
||||
|
||||
git commit -a -m "misc: working on latest" |
||||
|
||||
# Push all changes and tags |
||||
# |
||||
|
||||
git push |
||||
git push --tags |
Loading…
Reference in new issue