www/galene: new port

Galène (or Galene) is a videoconference server (an “SFU”) that is easy to
deploy and that requires moderate server resources. It was originally designed
for lectures, conferences and student tutorials, but is also useful for
traditional meetings.

Galène has been used in production at two major universities (Université de
Paris and Sorbonne Université) for lectures, practicals, seminars, and for
staff meetings. It has been used to host two conferences (SOCS'2020 and
JFLA'2021).
This commit is contained in:
Baptiste Daroussin 2023-09-01 11:08:05 +02:00
parent afb5db2a49
commit 509067a758
8 changed files with 216 additions and 1 deletions

2
GIDs
View file

@ -268,7 +268,7 @@ dkimpy-milter:*:324:
dkfilter:*:325:
smfs:*:326:
_reticulum:*:327:
# free: 328
galene:*:328:
# free: 329
orthanc:*:330:
# free: 331

1
UIDs
View file

@ -273,6 +273,7 @@ dkimpy-milter:*:324:324::0:0:Dkimpy Milter:/nonexistent:/usr/sbin/nologin
dkfilter:*:325:325::0:0:DK Filter Owner:/nonexistent:/usr/sbin/nologin
smfs:*:326:326::0:0:SMFSAV Owner:/nonexistent:/usr/sbin/nologin
_reticulum:*:327:327::0:0:Reticulum Daemon:/nonexistent:/usr/sbin/nologin
galene:*:328:328::0:0:Galene Visioconference server:/nonexistent:/usr/sbin/nologin
# free: 328
# free: 329
orthanc:*:330:330::0:0:Orthanc Daemon:/nonexistent:/usr/sbin/nologin

View file

@ -183,6 +183,7 @@
SUBDIR += fusionpbx
SUBDIR += g-cows
SUBDIR += g-gcl
SUBDIR += galene
SUBDIR += gallery-dl
SUBDIR += gallery2
SUBDIR += garage

71
www/galene/Makefile Normal file
View file

@ -0,0 +1,71 @@
PORTNAME= galene
DISTVERSION= 0.7.2
CATEGORIES= www net-im
MAINTAINER= bapt@FreeBSD.org
COMMENT= The Galène videoconference server
WWW= https://galane.org
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENCE
USES= go:modules
USE_GITHUB= yes
GH_ACCOUNT= jech
GH_TAGNAME= 7062ba100167d82808d982475880a588f0aa32bf
GH_TUPLE= \
at-wat:ebml-go:v0.17.0:at_wat_ebml_go/vendor/github.com/at-wat/ebml-go \
golang-jwt:jwt:v4.5.0:golang_jwt_jwt_v4/vendor/github.com/golang-jwt/jwt/v4 \
golang:crypto:v0.7.0:golang_crypto/vendor/golang.org/x/crypto \
golang:net:v0.8.0:golang_net/vendor/golang.org/x/net \
golang:sys:v0.6.0:golang_sys/vendor/golang.org/x/sys \
google:uuid:v1.3.0:google_uuid/vendor/github.com/google/uuid \
gorilla:websocket:v1.5.0:gorilla_websocket/vendor/github.com/gorilla/websocket \
jech:cert:aca735647728:jech_cert/vendor/github.com/jech/cert \
jech:samplebuilder:6cbba09fc1c9:jech_samplebuilder/vendor/github.com/jech/samplebuilder \
pion:datachannel:v1.5.5:pion_datachannel/vendor/github.com/pion/datachannel \
pion:dtls:v2.2.6:pion_dtls_v2/vendor/github.com/pion/dtls/v2 \
pion:ice:v2.3.2:pion_ice_v2/vendor/github.com/pion/ice/v2 \
pion:interceptor:v0.1.12:pion_interceptor/vendor/github.com/pion/interceptor \
pion:logging:v0.2.2:pion_logging/vendor/github.com/pion/logging \
pion:mdns:v0.0.7:pion_mdns/vendor/github.com/pion/mdns \
pion:randutil:v0.1.0:pion_randutil/vendor/github.com/pion/randutil \
pion:rtcp:v1.2.10:pion_rtcp/vendor/github.com/pion/rtcp \
pion:rtp:d62c6716b99a:pion_rtp/vendor/github.com/pion/rtp \
pion:sctp:v1.8.6:pion_sctp/vendor/github.com/pion/sctp \
pion:sdp:v3.0.6:pion_sdp_v3/vendor/github.com/pion/sdp/v3 \
pion:srtp:v2.0.12:pion_srtp_v2/vendor/github.com/pion/srtp/v2 \
pion:stun:v0.4.0:pion_stun/vendor/github.com/pion/stun \
pion:transport:v2.0.2:pion_transport_v2/vendor/github.com/pion/transport/v2 \
pion:turn:v2.1.0:pion_turn_v2/vendor/github.com/pion/turn/v2 \
pion:udp:v2.0.1:pion_udp_v2/vendor/github.com/pion/udp/v2 \
pion:webrtc:v3.1.59:pion_webrtc_v3/vendor/github.com/pion/webrtc/v3
CGO_ENABLED= 0
PORTDOCS= README README.FRONTEND README.PROTOCOL
OPTIONS_DEFINE= DOCS
USE_RC_SUBR= ${PORTNAME}
USERS= ${PORTNAME}
GROUPS= ${PORTNAME}
SUB_LIST= USERS="${USERS}" GROUPS="${GROUPS}"
PLIST_SUB= USERS="${USERS}" GROUPS="${GROUPS}"
post-install:
${MKDIR} ${STAGEDIR}${DATADIR}
cd ${WRKSRC}/static ; ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}
${MKDIR} ${STAGEDIR}/var/db/galene/recordings \
${STAGEDIR}/var/db/galene/data \
${STAGEDIR}/var/db/galene/groups
post-install-DOCS-on:
${MKDIR} ${STAGEDIR}${DOCSDIR}
cd ${WRKSRC}; ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR}
.include <bsd.port.mk>

55
www/galene/distinfo Normal file
View file

@ -0,0 +1,55 @@
TIMESTAMP = 1693557388
SHA256 (jech-galene-0.7.2-7062ba100167d82808d982475880a588f0aa32bf_GH0.tar.gz) = f5f4253c3b50c019790363651d8a8ae338703342a0015b8a62cc793b2ce1cfc1
SIZE (jech-galene-0.7.2-7062ba100167d82808d982475880a588f0aa32bf_GH0.tar.gz) = 739187
SHA256 (at-wat-ebml-go-v0.17.0_GH0.tar.gz) = ebdaa605a117ba86e45a405103435d164d40079dff6f0c3f28d08f4e76ad6c0f
SIZE (at-wat-ebml-go-v0.17.0_GH0.tar.gz) = 69862
SHA256 (golang-jwt-jwt-v4.5.0_GH0.tar.gz) = 00b1cc127cba09b4e4ea9efa5c0f18a36bb55e08b5eec0a222b8e1599a938077
SIZE (golang-jwt-jwt-v4.5.0_GH0.tar.gz) = 53049
SHA256 (golang-crypto-v0.7.0_GH0.tar.gz) = a7e73081a33f1bf496753a0cfd374052fb52da16d00600ca411d086a23da6178
SIZE (golang-crypto-v0.7.0_GH0.tar.gz) = 1634438
SHA256 (golang-net-v0.8.0_GH0.tar.gz) = f9e2128a2d6861db0595428c7cce62fe5a131348a6c7651b6efa8b03d0b10831
SIZE (golang-net-v0.8.0_GH0.tar.gz) = 1244302
SHA256 (golang-sys-v0.6.0_GH0.tar.gz) = b4f6d17c7a128f76169964b437cb66b3f2dbf9a33361928ec19dfecf7b03fc54
SIZE (golang-sys-v0.6.0_GH0.tar.gz) = 1434234
SHA256 (google-uuid-v1.3.0_GH0.tar.gz) = 7f7f37c47980e0afcc178a9ffc390bec29ed2371919b4c07658eb01791a7f921
SIZE (google-uuid-v1.3.0_GH0.tar.gz) = 16210
SHA256 (gorilla-websocket-v1.5.0_GH0.tar.gz) = 5d86f9e1c76ff7ceca0747f78b79864fbaec9d440f4fdb03197466e5102a86b0
SIZE (gorilla-websocket-v1.5.0_GH0.tar.gz) = 54155
SHA256 (jech-cert-aca735647728_GH0.tar.gz) = d2b7c711a7925012643cce6c9ee5cc34e667f54eb478d6163601e4ef46d2232e
SIZE (jech-cert-aca735647728_GH0.tar.gz) = 3363
SHA256 (jech-samplebuilder-6cbba09fc1c9_GH0.tar.gz) = 08082afa77f3083c0b15ed09fe27d43c525bc31af3662e13288dd167a609c2ad
SIZE (jech-samplebuilder-6cbba09fc1c9_GH0.tar.gz) = 12428
SHA256 (pion-datachannel-v1.5.5_GH0.tar.gz) = 88dc92b8b83759af29bf744e1a3d708a462966cfa77d9978575a7d6cd96c4766
SIZE (pion-datachannel-v1.5.5_GH0.tar.gz) = 22496
SHA256 (pion-dtls-v2.2.6_GH0.tar.gz) = e3fe7be7532e2086d3eb04fefdcf525b25319e4f786b9b9c89f0ac961b59f50b
SIZE (pion-dtls-v2.2.6_GH0.tar.gz) = 146508
SHA256 (pion-ice-v2.3.2_GH0.tar.gz) = cf704234d5fab9a17490f6bfbe99d8fc3f8d632b203e6f3026717b93b0a57008
SIZE (pion-ice-v2.3.2_GH0.tar.gz) = 96435
SHA256 (pion-interceptor-v0.1.12_GH0.tar.gz) = 206226d1b5aea5e23393e2f19d48f670cac2bead09d6f82f8dc36efac25f23ae
SIZE (pion-interceptor-v0.1.12_GH0.tar.gz) = 75746
SHA256 (pion-logging-v0.2.2_GH0.tar.gz) = 9e06f3dbf6f4fcf0e61e3a6406cac898fe3df86cb906bc9d73c7c4b466f0a9d6
SIZE (pion-logging-v0.2.2_GH0.tar.gz) = 6750
SHA256 (pion-mdns-v0.0.7_GH0.tar.gz) = 4be439d7572fab99bf9905c93ad75afc0aa13cefe815b0a19f1ed8e2ffdc637b
SIZE (pion-mdns-v0.0.7_GH0.tar.gz) = 13639
SHA256 (pion-randutil-v0.1.0_GH0.tar.gz) = 4b0301915ebbfa77c8621cebf99c6c7d71651762a33ce4fa4e6af8994ecd4993
SIZE (pion-randutil-v0.1.0_GH0.tar.gz) = 7521
SHA256 (pion-rtcp-v1.2.10_GH0.tar.gz) = d69a2497f27e91cc3918fb6f41a19850a1d1e1d1d8f72fbafedfb83c1186fe8c
SIZE (pion-rtcp-v1.2.10_GH0.tar.gz) = 59883
SHA256 (pion-rtp-d62c6716b99a_GH0.tar.gz) = 6d2682e380ea10e63a431f01b9cd2e4356583592c8487a25841146876abe4a6b
SIZE (pion-rtp-d62c6716b99a_GH0.tar.gz) = 54706
SHA256 (pion-sctp-v1.8.6_GH0.tar.gz) = 3752b18cf0cd37c0c4a12aaae01e4c10ea23dc517b8c6ac04c3341b2d5423be6
SIZE (pion-sctp-v1.8.6_GH0.tar.gz) = 90151
SHA256 (pion-sdp-v3.0.6_GH0.tar.gz) = ceae9d450b92db03c2dd817213fa39f8bf152e172d51129decfd1a4cd77e42dc
SIZE (pion-sdp-v3.0.6_GH0.tar.gz) = 30415
SHA256 (pion-srtp-v2.0.12_GH0.tar.gz) = cfe346e7ffe3762d2c8d4568d7151dca1dd426956f822b2982100c98a3daca6b
SIZE (pion-srtp-v2.0.12_GH0.tar.gz) = 36642
SHA256 (pion-stun-v0.4.0_GH0.tar.gz) = e068ceacd5f36302329e7d1de00dd1a071bcb39cb5944468e4c6d8ae5665a34f
SIZE (pion-stun-v0.4.0_GH0.tar.gz) = 87340
SHA256 (pion-transport-v2.0.2_GH0.tar.gz) = 9fccc0bdd6fedf5c272d9884acd39a37ae25e730db407d6febd2e5b1e356bef5
SIZE (pion-transport-v2.0.2_GH0.tar.gz) = 75604
SHA256 (pion-turn-v2.1.0_GH0.tar.gz) = 4440f9b2c82bbce9cee10527859121247e6ab50d0a2c6bc607bab7ff71c675a2
SIZE (pion-turn-v2.1.0_GH0.tar.gz) = 121876
SHA256 (pion-udp-v2.0.1_GH0.tar.gz) = 30bd91e7588f2ce525bb972710c239dd504ca001a5dbb3a17c191e8b541224af
SIZE (pion-udp-v2.0.1_GH0.tar.gz) = 14931
SHA256 (pion-webrtc-v3.1.59_GH0.tar.gz) = b6357b369fec9273b9a69eb7ea5ac53aadaa6fc141a17084e6e5988b8aa3e4b4
SIZE (pion-webrtc-v3.1.59_GH0.tar.gz) = 359387

View file

@ -0,0 +1,37 @@
#!/bin/sh
# PROVIDE: galene
# REQUIRE: LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name=galene
rcvar=${name}_enable
desc="Visioconference server"
load_rc_config "${name}"
: ${galene_enable:="NO"}
: ${galene_user:="%%USERS%%"}
: ${galene_group:="%%GROUPS%%"}
: ${galene_static:="%%DATADIR%%"}
: ${galene_http:=":8443"}
: ${galene_data:="/var/db/galene/data"}
: ${galene_groups:="/var/db/galene/groups"}
: ${galene_recordings:="/var/db/galene/recordings"}
pidfile=/var/run/galene.pid
procname="%%PREFIX%%/bin/galene"
command="/usr/sbin/daemon"
command_args="-cf -p ${pidfile} ${procname} -static ${galene_static} -http ${galene_http} -data ${galene_data} -groups ${galene_groups} -recordings ${galene_recordings} ${galene_args}"
galene_startprecmd()
{
if [ ! -e ${pidfile} ]; then
install -o ${galene_user} -g ${galene_group} /dev/null ${pidfile};
fi
}
start_precmd=galene_startprecmd
run_rc_command "$1"

9
www/galene/pkg-descr Normal file
View file

@ -0,0 +1,9 @@
Galène (or Galene) is a videoconference server (an “SFU”) that is easy to
deploy and that requires moderate server resources. It was originally designed
for lectures, conferences and student tutorials, but is also useful for
traditional meetings.
Galène has been used in production at two major universities (Université de
Paris and Sorbonne Université) for lectures, practicals, seminars, and for
staff meetings. It has been used to host two conferences (SOCS'2020 and
JFLA'2021).

41
www/galene/pkg-plist Normal file
View file

@ -0,0 +1,41 @@
bin/galene
%%DATADIR%%/404.css
%%DATADIR%%/404.html
%%DATADIR%%/common.css
%%DATADIR%%/external/contextual/LICENSE
%%DATADIR%%/external/contextual/contextual.css
%%DATADIR%%/external/contextual/contextual.js
%%DATADIR%%/external/fontawesome/css/all.min.css
%%DATADIR%%/external/fontawesome/css/brands.min.css
%%DATADIR%%/external/fontawesome/css/fontawesome.min.css
%%DATADIR%%/external/fontawesome/css/regular.min.css
%%DATADIR%%/external/fontawesome/css/solid.min.css
%%DATADIR%%/external/fontawesome/css/svg-with-js.min.css
%%DATADIR%%/external/fontawesome/css/v4-font-face.min.css
%%DATADIR%%/external/fontawesome/css/v4-shims.min.css
%%DATADIR%%/external/fontawesome/css/v5-font-face.min.css
%%DATADIR%%/external/fontawesome/webfonts/fa-brands-400.ttf
%%DATADIR%%/external/fontawesome/webfonts/fa-brands-400.woff2
%%DATADIR%%/external/fontawesome/webfonts/fa-regular-400.ttf
%%DATADIR%%/external/fontawesome/webfonts/fa-regular-400.woff2
%%DATADIR%%/external/fontawesome/webfonts/fa-solid-900.ttf
%%DATADIR%%/external/fontawesome/webfonts/fa-solid-900.woff2
%%DATADIR%%/external/fontawesome/webfonts/fa-v4compatibility.ttf
%%DATADIR%%/external/fontawesome/webfonts/fa-v4compatibility.woff2
%%DATADIR%%/external/toastify/LICENSE
%%DATADIR%%/external/toastify/toastify.css
%%DATADIR%%/external/toastify/toastify.js
%%DATADIR%%/galene.css
%%DATADIR%%/galene.html
%%DATADIR%%/galene.js
%%DATADIR%%/index.html
%%DATADIR%%/mainpage.css
%%DATADIR%%/mainpage.js
%%DATADIR%%/protocol.js
%%DATADIR%%/stats.html
%%DATADIR%%/stats.js
%%DATADIR%%/tsconfig.json
@dir(%%USERS%%,%%GROUPS%%,) /var/db/galene/data
@dir(%%USERS%%,%%GROUPS%%,) /var/db/galene/groups
@dir(%%USERS%%,%%GROUPS%%,) /var/db/galene/recordings
@dir /var/db/galene