Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2020-05-14 16:20:15 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2020-05-18 16:31:37 +0300
commitc856afdfe4f2a1b977e590d8becc0e9a1507a8cc (patch)
tree03ac6427d6e4288579f556a0f51cea15e98f96e1 /lib
parent2e16f5f8faa4f3979d636adf11166ce3759c92b0 (diff)
Don't allow multiple HPB without clustering and add a cache warning
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Config.php3
-rw-r--r--lib/Settings/Admin/AdminSettings.php9
-rw-r--r--lib/TInitialState.php4
3 files changed, 12 insertions, 4 deletions
diff --git a/lib/Config.php b/lib/Config.php
index 3bef58717..5f14be44c 100644
--- a/lib/Config.php
+++ b/lib/Config.php
@@ -235,7 +235,7 @@ class Config {
];
}
- public function getSignalingMode(): string {
+ public function getSignalingMode($cleanExternalSignaling = true): string {
$validModes = [
self::SIGNALING_INTERNAL,
self::SIGNALING_EXTERNAL,
@@ -252,6 +252,7 @@ class Config {
return self::SIGNALING_INTERNAL;
}
if ($numSignalingServers === 1
+ && $cleanExternalSignaling
&& $this->config->getAppValue('spreed', 'signaling_dev', 'no') === 'no') {
return self::SIGNALING_EXTERNAL;
}
diff --git a/lib/Settings/Admin/AdminSettings.php b/lib/Settings/Admin/AdminSettings.php
index 751c187aa..57196c6d0 100644
--- a/lib/Settings/Admin/AdminSettings.php
+++ b/lib/Settings/Admin/AdminSettings.php
@@ -29,6 +29,7 @@ use OCA\Talk\Participant;
use OCA\Talk\Room;
use OCA\Talk\Service\CommandService;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IInitialStateService;
use OCP\Settings\ISettings;
@@ -43,15 +44,19 @@ class AdminSettings implements ISettings {
private $commandService;
/** @var IInitialStateService */
private $initialStateService;
+ /** @var ICacheFactory */
+ private $memcacheFactory;
public function __construct(Config $talkConfig,
IConfig $serverConfig,
CommandService $commandService,
- IInitialStateService $initialStateService) {
+ IInitialStateService $initialStateService,
+ ICacheFactory $memcacheFactory) {
$this->talkConfig = $talkConfig;
$this->serverConfig = $serverConfig;
$this->commandService = $commandService;
$this->initialStateService = $initialStateService;
+ $this->memcacheFactory = $memcacheFactory;
}
/**
@@ -100,6 +105,8 @@ class AdminSettings implements ISettings {
}
protected function initSignalingServers(): void {
+ $this->initialStateService->provideInitialState('talk', 'has_cache_configured', $this->memcacheFactory->isAvailable());
+ $this->initialStateService->provideInitialState('talk', 'signaling_mode', $this->talkConfig->getSignalingMode(false));
$this->initialStateService->provideInitialState('talk', 'signaling_servers', [
'servers' => $this->talkConfig->getSignalingServers(),
'secret' => $this->talkConfig->getSignalingSecret(),
diff --git a/lib/TInitialState.php b/lib/TInitialState.php
index 5b689e53b..4482ce893 100644
--- a/lib/TInitialState.php
+++ b/lib/TInitialState.php
@@ -55,11 +55,11 @@ trait TInitialState {
);
$signalingMode = $this->talkConfig->getSignalingMode();
- if ($signalingMode !== Config::SIGNALING_INTERNAL
+ if ($signalingMode === Config::SIGNALING_CLUSTER_CONVERSATION
&& !$this->memcacheFactory->isAvailable()
&& $this->serverConfig->getAppValue('spreed', 'signaling_dev', 'no') === 'no') {
throw new HintException(
- 'External signaling is only supported with a distributed cache'
+ 'High Performance Back-end clustering is only supported with a distributed cache!'
);
}