diff options
-rw-r--r-- | appinfo/routes.php | 8 | ||||
-rw-r--r-- | lib/Config.php | 37 | ||||
-rw-r--r-- | lib/Controller/PageController.php | 44 | ||||
-rw-r--r-- | lib/Controller/SignalingController.php | 12 |
4 files changed, 59 insertions, 42 deletions
diff --git a/appinfo/routes.php b/appinfo/routes.php index 11f867dd6..36fb91906 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -47,6 +47,14 @@ return [ ], ], [ + 'name' => 'Signaling#getSettings', + 'url' => '/api/{apiVersion}/signaling/settings', + 'verb' => 'GET', + 'requirements' => [ + 'apiVersion' => 'v1', + ], + ], + [ 'name' => 'Signaling#backend', 'url' => '/api/{apiVersion}/signaling/backend', 'verb' => 'POST', diff --git a/lib/Config.php b/lib/Config.php index 0b6cab75d..633f840d1 100644 --- a/lib/Config.php +++ b/lib/Config.php @@ -52,6 +52,43 @@ class Config { $this->timeFactory = $timeFactory; } + public function getSettings($userId) { + $stun = []; + $stunServer = $this->getStunServer(); + if ($stunServer) { + $stun[] = [ + 'url' => 'stun:' . $stunServer, + ]; + } + $turn = []; + $turnSettings = $this->getTurnSettings(); + if (!empty($turnSettings['server'])) { + $protocols = explode(',', $turnSettings['protocols']); + foreach ($protocols as $proto) { + $turn[] = [ + 'url' => ['turn:' . $turnSettings['server'] . '?transport=' . $proto], + 'urls' => ['turn:' . $turnSettings['server'] . '?transport=' . $proto], + 'username' => $turnSettings['username'], + 'credential' => $turnSettings['password'], + ]; + } + } + + $signaling = []; + $servers = $this->getSignalingServers(); + if (!empty($servers)) { + $signaling = $servers[mt_rand(0, count($servers) - 1)]; + $signaling = $signaling['server']; + } + + return [ + 'server' => $signaling, + 'ticket' => $this->getSignalingTicket($userId), + 'stunservers' => $stun, + 'turnservers' => $turn, + ]; + } + /** * @return string */ diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 9790ac612..2e1eae87c 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -93,46 +93,6 @@ class PageController extends Controller { } /** - * @return array - */ - private function getSignalingSettings() { - $stun = []; - $stunServer = $this->config->getStunServer(); - if ($stunServer) { - $stun[] = [ - 'url' => 'stun:' . $stunServer, - ]; - } - $turn = []; - $turnSettings = $this->config->getTurnSettings(); - if (!empty($turnSettings['server'])) { - $protocols = explode(',', $turnSettings['protocols']); - foreach ($protocols as $proto) { - $turn[] = [ - 'url' => ['turn:' . $turnSettings['server'] . '?transport=' . $proto], - 'urls' => ['turn:' . $turnSettings['server'] . '?transport=' . $proto], - 'username' => $turnSettings['username'], - 'credential' => $turnSettings['password'], - ]; - } - } - - $signaling = []; - $servers = $this->config->getSignalingServers(); - if (!empty($servers)) { - $signaling = $servers[mt_rand(0, count($servers) - 1)]; - $signaling = $signaling['server']; - } - - return [ - 'server' => $signaling, - 'ticket' => $this->config->getSignalingTicket($this->userId), - 'stunservers' => $stun, - 'turnservers' => $turn, - ]; - } - - /** * @PublicPage * @NoCSRFRequired * @UseSession @@ -204,7 +164,7 @@ class PageController extends Controller { $params = [ 'token' => $token, - 'signaling-settings' => $this->getSignalingSettings(), + 'signaling-settings' => $this->config->getSettings($this->userId), ]; $response = new TemplateResponse($this->appName, 'index', $params); $csp = new ContentSecurityPolicy(); @@ -243,7 +203,7 @@ class PageController extends Controller { $params = [ 'token' => $token, - 'signaling-settings' => $this->getSignalingSettings(), + 'signaling-settings' => $this->config->getSettings($this->userId), ]; $response = new TemplateResponse($this->appName, 'index-public', $params, 'base'); $csp = new ContentSecurityPolicy(); diff --git a/lib/Controller/SignalingController.php b/lib/Controller/SignalingController.php index 0752aebd2..8815a2b8a 100644 --- a/lib/Controller/SignalingController.php +++ b/lib/Controller/SignalingController.php @@ -84,6 +84,18 @@ class SignalingController extends OCSController { } /** + * @NoAdminRequired + * + * Only available for logged in users because guests can not use the apps + * right now. + * + * @return DataResponse + */ + public function getSettings() { + return new DataResponse($this->config->getSettings($this->userId)); + } + + /** * @PublicPage * * @param string $messages |