diff --git a/Makefile b/Makefile index 3f55e25..7a12ff0 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ FORCE_REBUILD ?= 0 JITSI_RELEASE ?= stable JITSI_BUILD ?= latest -JITSI_REPO ?= jitsi -JITSI_SERVICES ?= base base-java web prosody jicofo jvb jigasi jibri +JITSI_REPO ?= jerryaldrichiii +JITSI_SERVICES ?= base base-java web prosody jicofo jvb BUILD_ARGS := --build-arg JITSI_REPO=$(JITSI_REPO) --build-arg JITSI_RELEASE=$(JITSI_RELEASE) ifeq ($(FORCE_REBUILD), 1) @@ -15,7 +15,7 @@ all: build-all release: tag-all push-all build: - docker build $(BUILD_ARGS) --progress plain --tag $(JITSI_REPO)/$(JITSI_SERVICE) $(JITSI_SERVICE)/ + docker build $(BUILD_ARGS) --progress plain --tag $(JITSI_REPO)/jitsi-$(JITSI_SERVICE) $(JITSI_SERVICE)/ $(addprefix build_,$(JITSI_SERVICES)): $(MAKE) --no-print-directory JITSI_SERVICE=$(patsubst build_%,%,$@) build @@ -24,8 +24,7 @@ tag: docker tag $(JITSI_REPO)/$(JITSI_SERVICE):latest $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD) push: - docker push $(JITSI_REPO)/$(JITSI_SERVICE):latest - docker push $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD) + docker push $(JITSI_REPO)/jitsi-$(JITSI_SERVICE):latest %-all: @$(foreach SERVICE, $(JITSI_SERVICES), $(MAKE) --no-print-directory JITSI_SERVICE=$(SERVICE) $(subst -all,;,$@)) diff --git a/jibri.yml b/jibri.yml deleted file mode 100644 index 67b5b98..0000000 --- a/jibri.yml +++ /dev/null @@ -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: - diff --git a/jibri/Dockerfile b/jibri/Dockerfile deleted file mode 100644 index f1d140d..0000000 --- a/jibri/Dockerfile +++ /dev/null @@ -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 diff --git a/jibri/rootfs/defaults/config.json b/jibri/rootfs/defaults/config.json deleted file mode 100644 index 9b55432..0000000 --- a/jibri/rootfs/defaults/config.json +++ /dev/null @@ -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" - } - ] -} diff --git a/jibri/rootfs/defaults/logging.properties b/jibri/rootfs/defaults/logging.properties deleted file mode 100644 index ba6c34e..0000000 --- a/jibri/rootfs/defaults/logging.properties +++ /dev/null @@ -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 diff --git a/jibri/rootfs/etc/cont-init.d/10-config b/jibri/rootfs/etc/cont-init.d/10-config deleted file mode 100644 index cd5b0f3..0000000 --- a/jibri/rootfs/etc/cont-init.d/10-config +++ /dev/null @@ -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} diff --git a/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json b/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json deleted file mode 100644 index 1fbf2e1..0000000 --- a/jibri/rootfs/etc/opt/chrome/policies/managed/managed_policies.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "CommandLineFlagSecurityWarningsEnabled": false -} - diff --git a/jibri/rootfs/etc/services.d/10-xorg/run b/jibri/rootfs/etc/services.d/10-xorg/run deleted file mode 100644 index 110867b..0000000 --- a/jibri/rootfs/etc/services.d/10-xorg/run +++ /dev/null @@ -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" - diff --git a/jibri/rootfs/etc/services.d/20-icewm/run b/jibri/rootfs/etc/services.d/20-icewm/run deleted file mode 100644 index 83c80a4..0000000 --- a/jibri/rootfs/etc/services.d/20-icewm/run +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/with-contenv bash - -DAEMON="/usr/bin/icewm-session" -exec /bin/bash -c "exec $DAEMON" - diff --git a/jibri/rootfs/etc/services.d/30-jibri/run b/jibri/rootfs/etc/services.d/30-jibri/run deleted file mode 100644 index 62afa52..0000000 --- a/jibri/rootfs/etc/services.d/30-jibri/run +++ /dev/null @@ -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" - diff --git a/jigasi.yml b/jigasi.yml deleted file mode 100644 index ed7c5b4..0000000 --- a/jigasi.yml +++ /dev/null @@ -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: diff --git a/jigasi/Dockerfile b/jigasi/Dockerfile deleted file mode 100644 index d4aae45..0000000 --- a/jigasi/Dockerfile +++ /dev/null @@ -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 diff --git a/jigasi/rootfs/defaults/logging.properties b/jigasi/rootfs/defaults/logging.properties deleted file mode 100644 index 188619a..0000000 --- a/jigasi/rootfs/defaults/logging.properties +++ /dev/null @@ -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 - diff --git a/jigasi/rootfs/defaults/sip-communicator.properties b/jigasi/rootfs/defaults/sip-communicator.properties deleted file mode 100644 index 2a7abc2..0000000 --- a/jigasi/rootfs/defaults/sip-communicator.properties +++ /dev/null @@ -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 }} diff --git a/jigasi/rootfs/etc/cont-init.d/10-config b/jigasi/rootfs/etc/cont-init.d/10-config deleted file mode 100644 index da7e440..0000000 --- a/jigasi/rootfs/etc/cont-init.d/10-config +++ /dev/null @@ -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 diff --git a/jigasi/rootfs/etc/services.d/jigasi/run b/jigasi/rootfs/etc/services.d/jigasi/run deleted file mode 100644 index 2ea08ed..0000000 --- a/jigasi/rootfs/etc/services.d/jigasi/run +++ /dev/null @@ -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" - diff --git a/release.sh b/release.sh deleted file mode 100755 index 3c6998c..0000000 --- a/release.sh +++ /dev/null @@ -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