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-04-09 13:25:35 +0300
committerJoas Schilling <coding@schilljs.com>2020-05-12 11:40:20 +0300
commite005b9cd6c821f1a41229460370c96f9ff7e310a (patch)
treec07ec57b43f6e938005b7b326eebf39caf8830d5 /lib
parentac5b65c9700d9a319b92986ea9b309b8fab9f963 (diff)
Use a dedicated method to get the signaling mode
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Config.php21
-rw-r--r--lib/Controller/SignalingController.php14
-rw-r--r--lib/Signaling/BackendNotifier.php8
-rw-r--r--lib/Signaling/Listener.php2
4 files changed, 32 insertions, 13 deletions
diff --git a/lib/Config.php b/lib/Config.php
index 3e63719a8..cc15539f0 100644
--- a/lib/Config.php
+++ b/lib/Config.php
@@ -32,6 +32,7 @@ class Config {
public const SIGNALING_INTERNAL = 'internal';
public const SIGNALING_EXTERNAL = 'external';
+ public const SIGNALING_CLUSTER_CONVERSATION = 'conversation_cluster';
/** @var IConfig */
protected $config;
@@ -235,10 +236,26 @@ class Config {
}
public function getSignalingMode(): string {
- if (empty($this->getSignalingServers())) {
+ $validModes = [
+ self::SIGNALING_INTERNAL,
+ self::SIGNALING_EXTERNAL,
+ self::SIGNALING_CLUSTER_CONVERSATION,
+ ];
+
+ $mode = $this->config->getAppValue('spreed', 'signaling_mode', null);
+ if ($mode === self::SIGNALING_INTERNAL) {
return self::SIGNALING_INTERNAL;
}
- return self::SIGNALING_EXTERNAL;
+
+ $numSignalingServers = count($this->getSignalingServers());
+ if ($numSignalingServers === 0) {
+ return self::SIGNALING_INTERNAL;
+ }
+ if ($numSignalingServers === 1) {
+ return self::SIGNALING_EXTERNAL;
+ }
+
+ return \in_array($mode, $validModes, true) ? $mode : self::SIGNALING_EXTERNAL;
}
/**
diff --git a/lib/Controller/SignalingController.php b/lib/Controller/SignalingController.php
index 09e9e536b..6b447c184 100644
--- a/lib/Controller/SignalingController.php
+++ b/lib/Controller/SignalingController.php
@@ -138,15 +138,15 @@ class SignalingController extends OCSController {
}
$signaling = '';
- $servers = $this->talkConfig->getSignalingServers();
- if (!empty($servers)) {
+ $signalingMode = $this->talkConfig->getSignalingMode();
+ if ($signalingMode !== Config::SIGNALING_INTERNAL) {
+ $servers = $this->talkConfig->getSignalingServers();
try {
$serverId = random_int(0, count($servers) - 1);
} catch (\Exception $e) {
$serverId = 0;
}
- $signalingClusterMode = $this->serverConfig->getAppValue('spreed', 'hpb_cluster_mode', '');
- if ($signalingClusterMode === 'conversation') {
+ if ($signalingMode === Config::SIGNALING_CLUSTER_CONVERSATION) {
try {
$serverId = $this->getSignalingServerForConversation($this->userId, $serverId, $token);
} catch (RoomNotFoundException $e) {
@@ -242,8 +242,7 @@ class SignalingController extends OCSController {
* @return DataResponse
*/
public function signaling(string $token, string $messages): DataResponse {
- $signaling = $this->talkConfig->getSignalingServers();
- if (!empty($signaling)) {
+ if ($this->talkConfig->getSignalingMode() !== Config::SIGNALING_INTERNAL) {
return new DataResponse('Internal signaling disabled.', Http::STATUS_BAD_REQUEST);
}
@@ -288,8 +287,7 @@ class SignalingController extends OCSController {
* @return DataResponse
*/
public function pullMessages(string $token): DataResponse {
- $signaling = $this->talkConfig->getSignalingServers();
- if (!empty($signaling)) {
+ if ($this->talkConfig->getSignalingMode() !== Config::SIGNALING_INTERNAL) {
return new DataResponse('Internal signaling disabled.', Http::STATUS_BAD_REQUEST);
}
diff --git a/lib/Signaling/BackendNotifier.php b/lib/Signaling/BackendNotifier.php
index 8e79ac4ed..6be38c826 100644
--- a/lib/Signaling/BackendNotifier.php
+++ b/lib/Signaling/BackendNotifier.php
@@ -84,11 +84,15 @@ class BackendNotifier {
* @throws \Exception
*/
private function backendRequest(string $url, array $data): void {
- $servers = $this->config->getSignalingServers();
- if (empty($servers)) {
+ if ($this->config->getSignalingMode() === Config::SIGNALING_INTERNAL) {
return;
}
+ if ($this->config->getSignalingMode() === Config::SIGNALING_CLUSTER_CONVERSATION) {
+ // FIXME need to send it to the right signaling server
+ }
+ $servers = $this->config->getSignalingServers();
+
// We can use any server of the available backends.
$signaling = $servers[random_int(0, count($servers) - 1)];
$signaling['server'] = rtrim($signaling['server'], '/');
diff --git a/lib/Signaling/Listener.php b/lib/Signaling/Listener.php
index 1f7c07f30..6b1c8d0c3 100644
--- a/lib/Signaling/Listener.php
+++ b/lib/Signaling/Listener.php
@@ -49,7 +49,7 @@ class Listener {
protected static function isUsingInternalSignaling(): bool {
/** @var Config $config */
$config = \OC::$server->query(Config::class);
- return empty($config->getSignalingServers());
+ return $config->getSignalingMode() === Config::SIGNALING_INTERNAL;
}
protected static function registerInternalSignaling(IEventDispatcher $dispatcher): void {