From f76a2add671f812ea778936aa149b2e4072acc6e Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 14 Oct 2020 14:17:12 +0200 Subject: [PATCH] Add a shared secret Signed-off-by: Joas Schilling --- appinfo/routes.php | 10 +++++- lib/Config.php | 6 +++- lib/Controller/SettingsController.php | 32 +++++++++++++++++ lib/Settings/Admin/AdminSettings.php | 1 + src/components/AdminSettings/SIPBridge.vue | 40 ++++++++++++++-------- src/services/settingsService.js | 17 +++++++++ 6 files changed, 89 insertions(+), 17 deletions(-) diff --git a/appinfo/routes.php b/appinfo/routes.php index 49651fe46a..32bd845708 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -495,8 +495,16 @@ return [ ], /** - * UserSettings + * Settings */ + [ + 'name' => 'Settings#setSIPSettings', + 'url' => '/api/{apiVersion}/settings/sip', + 'verb' => 'POST', + 'requirements' => [ + 'apiVersion' => 'v1', + ], + ], [ 'name' => 'Settings#setUserSetting', 'url' => '/api/{apiVersion}/settings/user', diff --git a/lib/Config.php b/lib/Config.php index ffbcc1fa8e..0b77abdbce 100644 --- a/lib/Config.php +++ b/lib/Config.php @@ -72,7 +72,11 @@ class Config { } public function getDialInInfo(): string { - return $this->config->getAppValue('spreed', 'sip_bridge_dial-in_info', ''); + return $this->config->getAppValue('spreed', 'sip_bridge_dial-in_info'); + } + + public function getSIPSharedSecret(): string { + return $this->config->getAppValue('spreed', 'sip_bridge_shared_secret'); } public function isDisabledForUser(IUser $user): bool { diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index 1124456e5f..2de96ae5d2 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -34,6 +34,8 @@ use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\IConfig; +use OCP\IGroup; +use OCP\IGroupManager; use OCP\IRequest; use Psr\Log\LoggerInterface; @@ -43,6 +45,8 @@ class SettingsController extends OCSController { protected $rootFolder; /** @var IConfig */ protected $config; + /** @var IGroupManager */ + protected $groupManager; /** @var LoggerInterface */ protected $logger; /** @var string|null */ @@ -52,11 +56,13 @@ class SettingsController extends OCSController { IRequest $request, IRootFolder $rootFolder, IConfig $config, + IGroupManager $groupManager, LoggerInterface $logger, ?string $userId) { parent::__construct($appName, $request); $this->rootFolder = $rootFolder; $this->config = $config; + $this->groupManager = $groupManager; $this->logger = $logger; $this->userId = $userId; } @@ -99,4 +105,30 @@ class SettingsController extends OCSController { return false; } + + /** + * @param string[] $sipGroups + * @param string $dialInInfo + * @param string $sharedSecret + * @return DataResponse + */ + public function setSIPSettings( + array $sipGroups = [], + string $dialInInfo = '', + string $sharedSecret = ''): DataResponse { + + $groups = []; + foreach ($sipGroups as $gid) { + $group = $this->groupManager->get($gid); + if ($group instanceof IGroup) { + $groups[] = $group->getGID(); + } + } + + $this->config->setAppValue('spreed', 'sip_bridge_groups', json_encode($groups)); + $this->config->setAppValue('spreed', 'sip_bridge_dial-in_info', $dialInInfo); + $this->config->setAppValue('spreed', 'sip_bridge_shared_secret', $sharedSecret); + + return new DataResponse(); + } } diff --git a/lib/Settings/Admin/AdminSettings.php b/lib/Settings/Admin/AdminSettings.php index da2df2f663..1bf2fa62dc 100644 --- a/lib/Settings/Admin/AdminSettings.php +++ b/lib/Settings/Admin/AdminSettings.php @@ -488,6 +488,7 @@ class AdminSettings implements ISettings { } $this->initialStateService->provideInitialState('talk', 'sip_bridge_groups', $groups); + $this->initialStateService->provideInitialState('talk', 'sip_bridge_shared_secret', $this->talkConfig->getSIPSharedSecret()); $this->initialStateService->provideInitialState('talk', 'sip_bridge_dial-in_info', $this->talkConfig->getDialInInfo()); } diff --git a/src/components/AdminSettings/SIPBridge.vue b/src/components/AdminSettings/SIPBridge.vue index 56f2064b19..307b35e878 100644 --- a/src/components/AdminSettings/SIPBridge.vue +++ b/src/components/AdminSettings/SIPBridge.vue @@ -21,9 +21,11 @@ -->