aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2023-09-01 09:08:05 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2023-09-01 09:08:59 +0000
commit509067a758d8fbecbdf22d97c3d10c1b7912e850 (patch)
tree05c0787592e4d75f88856a32beda4ffad946dd34
parentafb5db2a497937478626ee8f4074f4b910558e5a (diff)
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).
-rw-r--r--GIDs2
-rw-r--r--UIDs1
-rw-r--r--www/Makefile1
-rw-r--r--www/galene/Makefile71
-rw-r--r--www/galene/distinfo55
-rw-r--r--www/galene/files/galene.in37
-rw-r--r--www/galene/pkg-descr9
-rw-r--r--www/galene/pkg-plist41
8 files changed, 216 insertions, 1 deletions
diff --git a/GIDs b/GIDs
index 26cfd95b88d7..92053d2e8a01 100644
--- a/GIDs
+++ b/GIDs
@@ -268,7 +268,7 @@ dkimpy-milter:*:324:
dkfilter:*:325:
smfs:*:326:
_reticulum:*:327:
-# free: 328
+galene:*:328:
# free: 329
orthanc:*:330:
# free: 331
diff --git a/UIDs b/UIDs
index 61f105288259..37c8a75bed22 100644
--- a/UIDs
+++ b/UIDs
@@ -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
diff --git a/www/Makefile b/www/Makefile
index 76eb80e0305a..c06b968b2f77 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -183,6 +183,7 @@
SUBDIR += fusionpbx
SUBDIR += g-cows
SUBDIR += g-gcl
+ SUBDIR += galene
SUBDIR += gallery-dl
SUBDIR += gallery2
SUBDIR += garage
diff --git a/www/galene/Makefile b/www/galene/Makefile
new file mode 100644
index 000000000000..443867f800d9
--- /dev/null
+++ b/www/galene/Makefile
@@ -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>
diff --git a/www/galene/distinfo b/www/galene/distinfo
new file mode 100644
index 000000000000..338e926d5852
--- /dev/null
+++ b/www/galene/distinfo
@@ -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
diff --git a/www/galene/files/galene.in b/www/galene/files/galene.in
new file mode 100644
index 000000000000..17b872f5622f
--- /dev/null
+++ b/www/galene/files/galene.in
@@ -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"
diff --git a/www/galene/pkg-descr b/www/galene/pkg-descr
new file mode 100644
index 000000000000..44b2811f29dc
--- /dev/null
+++ b/www/galene/pkg-descr
@@ -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).
diff --git a/www/galene/pkg-plist b/www/galene/pkg-plist
new file mode 100644
index 000000000000..8ca31354a685
--- /dev/null
+++ b/www/galene/pkg-plist
@@ -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