snapshot of https://github.com/jitsi/jicofo.git @ 9ab59aa3d348e282da89da2c9f11ecbecd3f7b79 (2026-09-15)
Some checks failed
Java CI with Maven / Java 21 (push) Failing after 4m41s
Java CI with Maven / Java 17 (push) Failing after 4m42s

This commit is contained in:
upstream-mirror
2026-09-15 16:13:53 +05:00
commit fcbc274d01
275 changed files with 41230 additions and 0 deletions

5
debian/README.Debian vendored Normal file
View File

@@ -0,0 +1,5 @@
jicofo for Debian
---------------------
If you want a WebRTC videoconferencing solution you have to install jitsi-meet
and jitsi-videobridge packages which uses Jitsi Videobridge as a SFU (Selective Forwarding Unit)

6
debian/changelog vendored Normal file
View File

@@ -0,0 +1,6 @@
jicofo (1.0-0-g9fc93ed-1) unstable; urgency=low
* Initial release.
-- Damian Minkov <damencho@jitsi.org> Fri, 10 Oct 2017 16:18:00 +0000

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
12

14
debian/control vendored Normal file
View File

@@ -0,0 +1,14 @@
Source: jicofo
Section: net
Priority: extra
Maintainer: Jitsi Team <dev@jitsi.org>
Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>, Pawel Domas <pawel.domas@jitsi.org>
Build-Depends: debhelper, openjdk-17-jdk | openjdk-21-jdk, maven
Standards-Version: 3.9.3
Homepage: https://jitsi.org/meet
Package: jicofo
Architecture: all
Depends: ${misc:Depends}, openjdk-17-jre-headless | openjdk-17-jre | openjdk-21-jre-headless | openjdk-21-jre, ruby-hocon, jq
Description: JItsi Meet COnference FOcus
Jicofo is a conference focus for Jitsi Meet application.

13
debian/copyright vendored Normal file
View File

@@ -0,0 +1,13 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Jitsi Conference Focus
Upstream-Contact: Emil Ivov <emcho@jitsi.org>
Source: https://github.com/jitsi/jicofo
Files: *
Copyright: 2013-2018 Jitsi
License: Apache 2.0
License: Apache 2.0
On Debian systems, the full text of the Apache licence
version 2.0 can be found in the file
'/usr/share/common-licenses/Apache-2.0'.

0
debian/docs vendored Normal file
View File

101
debian/init.d vendored Normal file
View File

@@ -0,0 +1,101 @@
#! /bin/sh
#
# INIT script for Jitsi Conference Focus
# Version: 1.0 4-Dec-2014 pawel.domas@jitsi.org
#
### BEGIN INIT INFO
# Provides: jicofo
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Jitsi conference Focus
# Description: Conference focus for Jitsi Meet application.
### END INIT INFO
. /lib/lsb/init-functions
# Include jicofo defaults if available
if [ -f /etc/jitsi/jicofo/config ]; then
. /etc/jitsi/jicofo/config
fi
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/share/jicofo/jicofo.sh
DAEMON_DIR=/usr/share/jicofo/
NAME=jicofo
USER=jicofo
PIDFILE=/var/run/jicofo.pid
LOGFILE=/var/log/jitsi/jicofo.log
DESC=jicofo
if [ ! -x $DAEMON ] ;then
echo "Daemon not executable: $DAEMON"
exit 1
fi
set -e
stop() {
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE)
fi
echo -n "Stopping $NAME: "
if [ $PID ]; then
kill $PID || true
rm $PIDFILE || true
echo "$NAME stopped."
else
echo "$NAME doesn't seem to be running."
fi
}
start() {
if [ -f $PIDFILE ]; then
echo "$NAME seems to be already running, we found pidfile $PIDFILE."
exit 1
fi
echo -n "Starting $NAME: "
export JICOFO_AUTH_PASSWORD JICOFO_MAX_MEMORY
start-stop-daemon --start --quiet --background --chuid $USER --make-pidfile --pidfile $PIDFILE \
--exec /bin/bash -- -c "cd $DAEMON_DIR; JAVA_SYS_PROPS=\"$JAVA_SYS_PROPS\" exec $DAEMON $JICOFO_OPTS < /dev/null >> $LOGFILE 2>&1"
echo "$NAME started."
}
reload() {
echo 'Not yet implemented.'
}
status() {
status_of_proc -p $PIDFILE java "$NAME" && exit 0 || exit $?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
force-reload)
reload
;;
status)
status
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|status}" >&2
exit 1
;;
esac
exit 0

6
debian/install vendored Normal file
View File

@@ -0,0 +1,6 @@
jicofo/target/dependency/* usr/share/jicofo/lib
lib/logging.properties etc/jitsi/jicofo
jicofo.jar usr/share/jicofo
resources/jicofo.sh usr/share/jicofo
resources/collect-dump-logs.sh usr/share/jicofo
jicofo/jicofo etc/logrotate.d/

38
debian/manpage.1 vendored Normal file
View File

@@ -0,0 +1,38 @@
.\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH JICOFO SECTION "November 28, 2014"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
jicofo \- conference focus for Jitsi Meet application.
.SH SYNOPSIS
.B /usr/share/jicofo/jicofo.sh
.RI [ options ] ...
.br
.B /etc/init.d/jicofo (start|stop|restart)
.SH DESCRIPTION
This manual page documents briefly the
.B jicofo
service.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBjicofo\fP is a conference focus for Jitsi Meet application.
.SH AUTHOR
jicofo was written by Jitsi.org and Bluejimp.com.
.PP
This manual page was written by Pawel Domas <pawel.domas@jitsi.org>,
for the Debian project (and may be used by others).

1
debian/po/POTFILES.in vendored Normal file
View File

@@ -0,0 +1 @@
[type: gettext/rfc822deb] templates

54
debian/po/templates.pot vendored Normal file
View File

@@ -0,0 +1,54 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the jicofo package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: jicofo\n"
"Report-Msgid-Bugs-To: jicofo@packages.debian.org\n"
"POT-Creation-Date: 2016-11-21 19:43+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:1001
msgid "Hostname:"
msgstr ""
#. Type: string
#. Description
#: ../templates:1001
msgid "The jicofo package needs the DNS hostname of your instance."
msgstr ""
#. Type: string
#. Description
#: ../templates:2001
msgid "Jicofo username:"
msgstr ""
#. Type: string
#. Description
#: ../templates:2001
msgid "The jicofo needs an authenticated admin user to connect to xmpp server."
msgstr ""
#. Type: password
#. Description
#: ../templates:3001
msgid "Jicofo user password:"
msgstr ""
#. Type: password
#. Description
#: ../templates:3001
msgid "The secret used to connect to xmpp server as jicofo user."
msgstr ""

167
debian/postinst vendored Normal file
View File

@@ -0,0 +1,167 @@
#!/bin/bash
# postinst script for jicofo
set -e
case "$1" in
configure)
CONFIG="/etc/jitsi/jicofo/config"
# we don't want to regenerate config on upgrade
OLDCONFIG="false"
if [ -f $CONFIG ]; then
. $CONFIG
if [ -n "$JICOFO_HOSTNAME" ] \
&& [ -n "$JICOFO_AUTH_DOMAIN" ] && [ -n "$JICOFO_AUTH_USER" ] && [ -n "$JICOFO_AUTH_PASSWORD" ]; then
OLDCONFIG="true"
fi
fi
# debconf hostname question
. /usr/share/debconf/confmodule
# try to get host from jitsi-videobridge
db_get jitsi-videobridge/jvb-hostname
if [ -z "$RET" ] ; then
# server hostname
db_set jitsi-videobridge/jvb-hostname "localhost"
db_input critical jitsi-videobridge/jvb-hostname || true
db_go
fi
JVB_HOSTNAME=$(echo "$RET" | xargs echo -n)
# generate config on new install
if [ "$OLDCONFIG" = "false" ] || [ "$JVB_HOSTNAME" != "$JICOFO_HOSTNAME" ]; then
JICOFO_HOSTNAME="$JVB_HOSTNAME"
JICOFO_AUTH_DOMAIN="auth.$JICOFO_HOSTNAME"
JICOFO_AUTH_USER="focus"
db_get jicofo/jicofo-authpassword
if [ -z "$RET" ] ; then
RET=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 16`
fi
JICOFO_AUTH_PASSWORD="$RET"
# This re-creates $CONFIG. If previous values existed, they will be set in jicofo.conf below.
echo '# adds java system props that are passed to jicofo (default are for home and logging config file)' > $CONFIG
echo "JAVA_SYS_PROPS=\"-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi\
-Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo\
-Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi\
-Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties\"" >> $CONFIG
fi
# Store values, so we can use it if we are configuring other packages on the same machine
# we are currently doing this on every upgrade in order to be able to successfully upgrade
# from old packages, otherwise we can do it only on new configuration or reconfiguration
db_set jicofo/jicofo-authpassword "$JICOFO_AUTH_PASSWORD"
# and we're done with debconf
db_stop
OLD_JITSI_CONFIG="/etc/jitsi/jicofo/sip-communicator.properties"
HOCON_CONFIG="/etc/jitsi/jicofo/jicofo.conf"
if [ ! -f $HOCON_CONFIG ]; then
echo "Generating an empty jicofo.conf file"
echo "# Jicofo HOCON configuration. See reference.conf in /usr/share/jicofo/jicofo.jar for
#available options, syntax, and default values.
jicofo {
}" >> $HOCON_CONFIG
fi
# Make sure the client-proxy is set correctly.
hocon -f $HOCON_CONFIG set jicofo.xmpp.client.client-proxy "\"focus.$JVB_HOSTNAME\""
# Set the client XMPP config in jicofo.conf. The values were either read from an existing
# /etc/jitsi/jicofo/config or generated above.
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.xmpp-domain" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.xmpp-domain" "\"$JICOFO_HOSTNAME\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.domain" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.domain" "\"$JICOFO_AUTH_DOMAIN\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.username" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.username" "\"$JICOFO_AUTH_USER\""
fi
if ! hocon -f $HOCON_CONFIG get "jicofo.xmpp.client.password" > /dev/null 2>&1 ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.client.password" "\"$JICOFO_AUTH_PASSWORD\""
fi
# Add the JvbBrewery config if missing
if ! grep -sq "org.jitsi.jicofo.BRIDGE_MUC" "$OLD_JITSI_CONFIG" ;then
if ! hocon -f $HOCON_CONFIG get "jicofo.bridge.brewery-jid" > /dev/null 2>&1 ; then
hocon -f $HOCON_CONFIG set "jicofo.bridge.brewery-jid" \"JvbBrewery@internal.auth.${JVB_HOSTNAME}\"
fi
fi
# Mark the jibri domain as trusted unless the trusted-domains have been set.
if [[ $(hocon -j -f $HOCON_CONFIG get "jicofo.xmpp.trusted-domains" 2> /dev/null | jq -r "type") != "array" ]] ;then
hocon -f $HOCON_CONFIG set "jicofo.xmpp.trusted-domains" "[ \"recorder.$JVB_HOSTNAME\" ]"
fi
# we don't want to start the daemon as root
if ! getent group jitsi > /dev/null ; then
groupadd jitsi
fi
if ! getent passwd jicofo > /dev/null ; then
useradd -r -g jitsi --shell /bin/bash --create-home -d /usr/share/jicofo jicofo
fi
if ! groups jicofo | grep '\bjitsi\b' > /dev/null ; then
usermod -g jitsi jicofo
fi
mkdir -p /usr/share/jicofo
# we claim the home folder of jicofo in case it is owned by someone else
OWNER=$(stat -c '%U' /usr/share/jicofo)
GROUP=$(stat -c '%G' /usr/share/jicofo)
if ! dpkg-statoverride --list /usr/share/jicofo/* >/dev/null && [ "$OWNER:$GROUP" != "jicofo:jitsi" ]; then
chown -R jicofo:jitsi /usr/share/jicofo
OWNER=jicofo
GROUP=jitsi
fi
CONFIG_DIR=$(dirname $CONFIG)
if ! dpkg-statoverride --list "$CONFIG_DIR" >/dev/null; then
chown -R jicofo:jitsi "$CONFIG_DIR"
chmod 750 "$CONFIG_DIR"
fi
# die logz
if [ ! -d /var/log/jitsi ]; then
mkdir -p /var/log/jitsi
chown $OWNER:$GROUP /var/log/jitsi
chmod 770 /var/log/jitsi
fi
ls /var/log/jitsi/jicofo* 1>/dev/null 2>&1 && chown -f -R $OWNER:$GROUP /var/log/jitsi/jicofo*
ls /var/log/jitsi/jicofo* 1>/dev/null 2>&1 && chmod -f -R 640 /var/log/jitsi/jicofo*
# ensure focus is not running - it will be started at the end
if invoke-rc.d jicofo status >/dev/null 2>&1 ; then
invoke-rc.d jicofo stop || true
fi
# clean up old jicofo group
if getent group jicofo > /dev/null; then
groupdel jicofo
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

57
debian/postrm vendored Normal file
View File

@@ -0,0 +1,57 @@
#!/bin/bash
# postrm script for jicofo
set -e
# Load debconf
. /usr/share/debconf/confmodule
case "$1" in
purge)
# Clear the debconf variable
db_purge
# clear user and group
# ensure nothing is running as jicofo user
if ps -u jicofo h; then
`ps -u jicofo -o pid h | xargs kill`
fi
# and then remove the user
if getent passwd jicofo > /dev/null ; then
deluser jicofo
fi
# clear logs
if [ -f "/var/log/jitsi/jicofo.log" ]; then
rm -f "/var/log/jitsi/jicofo.log"
fi
rm -rf /usr/share/jicofo/
rm -f /etc/jitsi/jicofo/config
rm -f /etc/jitsi/jicofo/sip-communicator.properties
rm -f /etc/jitsi/jicofo/logging.properties
rm -f /etc/jitsi/jicofo/jicofo.conf
;;
remove)
;;
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
db_stop
exit 0

14
debian/preinst vendored Normal file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
# preinst script for jicofo
set -e
echo "Running preinst $@"
if [ "$1" == "upgrade" ] ;then
if [ -d /etc/logrotate.d/jicofo ] ;then
# An earlier version of the package incorrectly installed a directory in logrotate.d. If that's the case
# remove it, so the file can be properly installed.
echo "/etc/logrotate.d/jicofo is a directory, removing."
rm -rf /etc/logrotate.d/jicofo
fi
fi

30
debian/rules vendored Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
#export DEB_VERBOSE_ALL=true
%:
dh $@
override_dh_auto_clean:
mvn -Dmaven.repo.local=${HOME}/.m2/repository clean
override_dh_auto_configure:
# do nothing
override_dh_auto_test:
# do nothing
override_dh_auto_build:
mvn -Dmaven.repo.local=${HOME}/.m2/repository -DskipTests -Dassembly.skipAssembly=true package
mvn -Dmaven.repo.local=${HOME}/.m2/repository dependency:copy-dependencies -DincludeScope=runtime
override_dh_install:
mkdir -p debian/tmp/jicofo
cp resources/config/jicofo-logrotate.d debian/tmp/jicofo/jicofo
cp jicofo/target/jicofo*.jar debian/tmp/jicofo.jar
dh_install
override_dh_auto_install:
# do nothing

2
debian/source/format vendored Normal file
View File

@@ -0,0 +1,2 @@
3.0 (quilt)

9
debian/templates vendored Normal file
View File

@@ -0,0 +1,9 @@
Template: jitsi-videobridge/jvb-hostname
Type: string
_Description: Hostname:
The jicofo package needs the DNS hostname of your instance.
Template: jicofo/jicofo-authpassword
Type: password
_Description: Jicofo user password:
The secret used to connect to xmpp server as jicofo user.