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-27 16:47:58 +0300
committerJoas Schilling <coding@schilljs.com>2020-05-12 11:40:21 +0300
commit3fe01a19ec17deae14b8ff5dbd8ef9d3e7e331f3 (patch)
treeab3bba7904f3c0cb29dad74742d7da5dc352f5a5 /lib
parent650427e01af6f22590206253d2ab1a7542f42b10 (diff)
Allow to hardcode a signaling server per conversation token
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Signaling/Manager.php21
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/Signaling/Manager.php b/lib/Signaling/Manager.php
index 521e7ada9..b5269016b 100644
--- a/lib/Signaling/Manager.php
+++ b/lib/Signaling/Manager.php
@@ -27,16 +27,21 @@ use OCA\Talk\Config;
use OCA\Talk\Room;
use OCP\ICache;
use OCP\ICacheFactory;
+use OCP\IConfig;
class Manager {
+ /** @var IConfig */
+ protected $serverConfig;
/** @var Config */
protected $talkConfig;
/** @var ICache */
private $cache;
- public function __construct(Config $talkConfig,
+ public function __construct(IConfig $serverConfig,
+ Config $talkConfig,
ICacheFactory $cacheFactory) {
+ $this->serverConfig = $serverConfig;
$this->talkConfig = $talkConfig;
$this->cache = $cacheFactory->createDistributed('hpb_servers');
}
@@ -81,11 +86,19 @@ class Manager {
return $servers[$serverId];
}
- $randomServerId = random_int(0, count($servers) - 1);
+ $serverIdToAssign = random_int(0, count($servers) - 1);
+ $hardcodedServers = $this->serverConfig->getSystemValue('talk_hardcoded_hpb', []);
+ if (isset($hardcodedServers[$room->getToken()])) {
+ $hardcodedServerId = $hardcodedServers[$room->getToken()];
+ if (isset($servers[$hardcodedServerId])) {
+ $serverIdToAssign = $hardcodedServerId;
+ }
+ }
+
$serverId = $this->cache->get($room->getToken());
if ($serverId === null) {
- $this->cache->set($room->getToken(), $randomServerId);
- $serverId = $randomServerId;
+ $this->cache->set($room->getToken(), $serverIdToAssign);
+ $serverId = $serverIdToAssign;
$room->setAssignedSignalingServer($serverId);
}