Compare commits

...

3 Commits

Author SHA1 Message Date
Jonas 90c7cb91fa
Merge 668a711dfa into 2f288e34c0 2024-10-17 08:58:20 +02:00
Nextcloud bot 2f288e34c0
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-10-17 02:22:26 +00:00
brtbr 668a711dfa feat: add option to not use avatars in BBB rooms
This commit adds an admin option to disable the use of Nextcloud avatars
in BBB rooms.

If an avatar-cache is configured and a meeting is running while changing
this setting, the avatars of these meetings will not be cleared. In that
case the command-line argument (see README) needs to be used.

Fixes issue #268
2024-06-02 02:08:14 +02:00
7 changed files with 42 additions and 7 deletions

View File

@ -79,6 +79,7 @@ Key | Description
`app.shortener` | Value of your shortener service. Should start with `https://` and contain `{token}`.
`avatar.path` | Absolute path to an optional avatar cache directory.
`avatar.url` | URL which serves `avatar.path` to be used as avatar cache.
`avatar.enabled` | Set to `false` if you want to disable the use of Nextcloud avatars in BBB rooms.
### Avatar cache (v2.2+)
The generation of avatars puts a high load on your Nextcloud instance, since the
@ -113,8 +114,8 @@ For additional security, we recommend to disable directory listing, symlinks and
any language interpreter such as php for the cache directory.
Cached avatars are usually deleted as soon as the meeting ends. In cases the BBB
server shuts down unexpected, we provide the `bbb:clear-avatar-cache` occ
command (example use: `./occ bbb:clear-avatar-cache`).
server shuts down unexpected or you set `avatar.enabled` to `false` (via gui or manually) while a meeting was running,
we provide the `bbb:clear-avatar-cache` occ command (example use: `./occ bbb:clear-avatar-cache`).
## :bowtie: User guide

View File

@ -58,6 +58,7 @@ OC.L10N.register(
"No matches" : "Nessuna corrispondenza",
"admin" : "amministratore",
"moderator" : "moderatore",
"user" : "utente",
"Name" : "Nome",
"Access" : "Accesso",
"Max" : "Massimo",
@ -71,6 +72,7 @@ OC.L10N.register(
"This message is shown to all users in the chat area after they joined." : "Questo messaggio è mostrato a tutti gli utenti nell'area di chat dopo il loro ingresso.",
"Sets a limit on the number of participants for this room. Zero means there is no limit." : "Imposta un limite sul numero di partecipanti per questa stanza. Zero significa che non ci sono limiti.",
"If enabled, the moderator is able to start the recording." : "Se abilitata, il moderatore è in grado di avviare la registrazione.",
"Explanation of the different concepts that constitute access options :<br>- Public: Anyone who has the link can join.- <br>Internal: Only Nextcloud users can join.- <br>Password: Only guests who have the password can join..- <br>Waiting room: A moderator must accept each guest before they can join.- <br>Restricted : Only selected users and groups can access this room." : "Spiegazione dei diversi concetti che costituiscono le opzioni di accesso :<br>- Pubblico: chiunque abbia il link può partecipare.- <br>Interno: possono partecipare solo gli utenti Nextcloud.- <br>Password: solo gli ospiti che hanno la password possono partecipare..- <br>Sala d'attesa: Un moderatore deve accettare ogni ospite prima che possa partecipare.- <br>Limitato: solo gli utenti e i gruppi selezionati possono accedere a questa stanza.",
"A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Un moderatore è in grado di gestire tutti i partecipanti a una riunione, inclusa l'espulsione, il silenziamento o la selezione di un relatore. Gli utenti con il ruolo di moderatore possono anche chiudere una riunione o modificare le impostazioni predefinite.",
"If enabled, normal users have to wait until a moderator is in the room." : "Se abilitata, gli utenti normali devono attendere fino a quando un moderatore è nella stanza.",
"If enabled, a moderator URL is generated which allows access with moderator permission." : "Se abilitata, viene generato un URL moderatore che consente l'accesso con l'autorizzazione del moderatore.",
@ -114,7 +116,10 @@ OC.L10N.register(
"Delete?" : "Vuoi eliminare?",
"Could not delete record" : "Impossibile eliminare il record",
"Server error" : "Errore del server",
"Could not modify publishing state" : "Impossibile modificare lo stato di pubblicazione",
"Open room" : "Stanza aperta",
"Start" : "Avvia",
"Clone room" : "Clona stanza",
"Loading" : "Caricamento",
"You are not allowed to change this option, because this room is shared with you." : "Non ti è consentito modificare questa opzione, poiché questa stanza è condivisa con te.",
"Max. rooms" : "Num. massimo stanze",
@ -130,8 +135,12 @@ OC.L10N.register(
"URL has to start with HTTPS" : "L'URL deve iniziare con HTTPS",
"URL has to contain the {token} placeholder" : "L'URL deve contenere il segnaposto {token}",
"URL has to start with https:// and contain {token}. Additionally the {user} placeholder can be used." : "L'URL deve iniziare con https: // e contenere {token}. Inoltre è possibile utilizzare il segnaposto {user}.",
"The file \"{filename}\" was uploaded to your room." : "Il file \"{filename}\" è stato caricato nella tua stanza.",
"The file \"{filename}\" could not be uploaded to your room." : "Il file \"{filename}\" non è stato possibile caricarlo nella tua stanza.",
"The file \"{filename}\" could not be uploaded to your room. Maybe your BigBlueButton server does not support this action." : "Il file \"{filename}\" non può essere caricato nella tua stanza. Forse il tuo server BigBlueButton non supporta questa azione.",
"Send file to BBB" : "Invia file a BBB",
"Send to" : "Invia a",
"Start with" : "Inizia con",
"Please select the room in which you like to use the file \"{filename}\"." : "Seleziona la stanza in cui vorresti usare il file \"{filename}\".",
"No rooms available!" : "Nessuna stanza disponibile",
"Send to BBB" : "Invia a BBB",

View File

@ -56,6 +56,7 @@
"No matches" : "Nessuna corrispondenza",
"admin" : "amministratore",
"moderator" : "moderatore",
"user" : "utente",
"Name" : "Nome",
"Access" : "Accesso",
"Max" : "Massimo",
@ -69,6 +70,7 @@
"This message is shown to all users in the chat area after they joined." : "Questo messaggio è mostrato a tutti gli utenti nell'area di chat dopo il loro ingresso.",
"Sets a limit on the number of participants for this room. Zero means there is no limit." : "Imposta un limite sul numero di partecipanti per questa stanza. Zero significa che non ci sono limiti.",
"If enabled, the moderator is able to start the recording." : "Se abilitata, il moderatore è in grado di avviare la registrazione.",
"Explanation of the different concepts that constitute access options :<br>- Public: Anyone who has the link can join.- <br>Internal: Only Nextcloud users can join.- <br>Password: Only guests who have the password can join..- <br>Waiting room: A moderator must accept each guest before they can join.- <br>Restricted : Only selected users and groups can access this room." : "Spiegazione dei diversi concetti che costituiscono le opzioni di accesso :<br>- Pubblico: chiunque abbia il link può partecipare.- <br>Interno: possono partecipare solo gli utenti Nextcloud.- <br>Password: solo gli ospiti che hanno la password possono partecipare..- <br>Sala d'attesa: Un moderatore deve accettare ogni ospite prima che possa partecipare.- <br>Limitato: solo gli utenti e i gruppi selezionati possono accedere a questa stanza.",
"A moderator is able to manage all participants in a meeting including kicking, muting or selecting a presenter. Users with the role moderator are also able to close a meeting or change the default settings." : "Un moderatore è in grado di gestire tutti i partecipanti a una riunione, inclusa l'espulsione, il silenziamento o la selezione di un relatore. Gli utenti con il ruolo di moderatore possono anche chiudere una riunione o modificare le impostazioni predefinite.",
"If enabled, normal users have to wait until a moderator is in the room." : "Se abilitata, gli utenti normali devono attendere fino a quando un moderatore è nella stanza.",
"If enabled, a moderator URL is generated which allows access with moderator permission." : "Se abilitata, viene generato un URL moderatore che consente l'accesso con l'autorizzazione del moderatore.",
@ -112,7 +114,10 @@
"Delete?" : "Vuoi eliminare?",
"Could not delete record" : "Impossibile eliminare il record",
"Server error" : "Errore del server",
"Could not modify publishing state" : "Impossibile modificare lo stato di pubblicazione",
"Open room" : "Stanza aperta",
"Start" : "Avvia",
"Clone room" : "Clona stanza",
"Loading" : "Caricamento",
"You are not allowed to change this option, because this room is shared with you." : "Non ti è consentito modificare questa opzione, poiché questa stanza è condivisa con te.",
"Max. rooms" : "Num. massimo stanze",
@ -128,8 +133,12 @@
"URL has to start with HTTPS" : "L'URL deve iniziare con HTTPS",
"URL has to contain the {token} placeholder" : "L'URL deve contenere il segnaposto {token}",
"URL has to start with https:// and contain {token}. Additionally the {user} placeholder can be used." : "L'URL deve iniziare con https: // e contenere {token}. Inoltre è possibile utilizzare il segnaposto {user}.",
"The file \"{filename}\" was uploaded to your room." : "Il file \"{filename}\" è stato caricato nella tua stanza.",
"The file \"{filename}\" could not be uploaded to your room." : "Il file \"{filename}\" non è stato possibile caricarlo nella tua stanza.",
"The file \"{filename}\" could not be uploaded to your room. Maybe your BigBlueButton server does not support this action." : "Il file \"{filename}\" non può essere caricato nella tua stanza. Forse il tuo server BigBlueButton non supporta questa azione.",
"Send file to BBB" : "Invia file a BBB",
"Send to" : "Invia a",
"Start with" : "Inizia con",
"Please select the room in which you like to use the file \"{filename}\"." : "Seleziona la stanza in cui vorresti usare il file \"{filename}\".",
"No rooms available!" : "Nessuna stanza disponibile",
"Send to BBB" : "Invia a BBB",

View File

@ -131,10 +131,12 @@ class API {
}
if ($uid) {
$avatarUrl = $this->avatarRepository->getAvatarUrl($room, $uid);
$joinMeetingParams->setUserID($uid);
$joinMeetingParams->setAvatarURL($avatarUrl);
if ($this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true') {
$avatarUrl = $this->avatarRepository->getAvatarUrl($room, $uid);
$joinMeetingParams->setAvatarURL($avatarUrl);
}
}
return $this->getServer()->getJoinMeetingURL($joinMeetingParams);

View File

@ -7,6 +7,7 @@ use OCA\BigBlueButton\Db\Room;
use OCA\BigBlueButton\Event\MeetingEndedEvent;
use OCA\BigBlueButton\Event\RecordingReadyEvent;
use OCA\BigBlueButton\Service\RoomService;
use OCP\IConfig;
use OCP\AppFramework\Controller;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
@ -27,18 +28,23 @@ class HookController extends Controller {
/** @var IEventDispatcher */
private $eventDispatcher;
/** @var IConfig */
private $config;
public function __construct(
string $appName,
IRequest $request,
RoomService $service,
AvatarRepository $avatarRepository,
IEventDispatcher $eventDispatcher
IEventDispatcher $eventDispatcher,
IConfig $config
) {
parent::__construct($appName, $request);
$this->service = $service;
$this->avatarRepository = $avatarRepository;
$this->eventDispatcher = $eventDispatcher;
$this->config = $config;
}
public function setToken(string $token): void {
@ -65,7 +71,9 @@ class HookController extends Controller {
$this->service->updateRunning($room->getId(), false);
$this->avatarRepository->clearRoom($room->uid);
if ($this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true') {
$this->avatarRepository->clearRoom($room->uid);
}
$this->eventDispatcher->dispatch(MeetingEndedEvent::class, new MeetingEndedEvent($room, $recordingmarks));
}

View File

@ -30,6 +30,7 @@ class Admin implements ISettings {
'join.theme' => $this->config->getAppValue('bbb', 'join.theme') === 'true' ? 'checked' : '',
'app.shortener' => $this->config->getAppValue('bbb', 'app.shortener'),
'join.mediaCheck' => $this->config->getAppValue('bbb', 'join.mediaCheck', 'true') === 'true' ? 'checked' : '',
'avatar.enabled' => $this->config->getAppValue('bbb', 'avatar.enabled', 'true') === 'true' ? 'checked' : '',
];
return new TemplateResponse('bbb', 'admin', $parameters);

View File

@ -29,6 +29,11 @@ script('bbb', 'restrictions');
<label for="bbb-join-theme"><?php p($l->t('Use Nextcloud theme in BigBlueButton.')); ?></label>
</p>
<p>
<input type="checkbox" name="avatar.enabled" id="bbb-avatar-enabled" class="checkbox bbb-setting" value="1" <?php p($_['avatar.enabled']); ?> />
<label for="bbb-avatar-enabled"><?php p($l->t('Use Nextcloud avatars in BBB rooms.')); ?></label>
</p>
<h3><?php p($l->t('Default Room Settings')); ?></h3>
<p><?php p($l->t('Below you can change some default values, which are used to create a new room.')); ?></p>