diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Config.php | 3 | ||||
-rw-r--r-- | lib/Settings/Admin/AdminSettings.php | 9 | ||||
-rw-r--r-- | lib/TInitialState.php | 4 |
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!' ); } |