private static function getAllChangesByRelease() { $version_regex = '/^owncloud-' . Settings::APP_ID . ' \\((.*)\\)/'; $contents = file_get_contents(Helper::getOwnAppPath() . self::CHANGELOG_FILE); $releases = explode("\n\n", $contents); $changes_by_version = array(); foreach ($releases as $release) { list($version_line) = explode("\n", $release); $changes = str_replace($version_line . "\n", '', $release); $matches = array(); preg_match($version_regex, $release, $matches); list($_tmp, $version) = $matches; if ($version && !isset($changes_by_version[$version])) { $changes = explode('*', $changes); $changes_by_line = array(); foreach ($changes as $change) { if (!empty($change)) { // Replace multiple whitespaces, newlines, .. $change = preg_replace('/\\s+/', ' ', trim(str_replace("\n", '', $change))); $changes_by_line[] = $change; } } $changes_by_version[$version] = $changes_by_line; } } return $changes_by_version; }
public static function getAllowedIframeDomains() { $origin = Config::SPREED_WEBRTC_ORIGIN; if (empty($origin)) { $origin = Helper::getOwnHost(); } return array($origin, 'mailto:'); }
private function getUserId() { $this->requireLogin(); if (Helper::getConfigValue('SPREED_WEBRTC_IS_SHARED_INSTANCE')) { // Return cloud id instead return $this->getCloudId(); } return $this->user->getUID(); }
/** * @NoAdminRequired * @NoCSRFRequired * @PublicPage */ public function getConfig() { $_response = array('success' => false); try { $_response['spreed_webrtc'] = array('url' => Helper::getSpreedWebRtcUrl()); $_response['success'] = true; } catch (\Exception $e) { $_response['error'] = $e->getCode(); } return new DataResponse($_response); }
/** * @NoAdminRequired * @NoCSRFRequired * @PublicPage */ public function getConfig() { $_response = array('success' => false); try { $_response['spreed_webrtc'] = array('url' => Helper::getSpreedWebRtcUrl()); $_response['owncloud'] = array('login' => array('url' => $this->urlGenerator->linkTo('index.php'))); $_response['success'] = true; } catch (\Exception $e) { $_response['error'] = $e->getCode(); } return new DataResponse($_response); }
private static function testSpreedWebRTCAPI() { // Force ?debug param removal $url = Helper::getSpreedWebRtcUrl(false); $config_url = $url . 'api/v1/config'; // TODO(leon): Switch to curl as this is shitty? $response = file_get_contents($config_url, false, stream_context_create(array('http' => array('timeout' => 5), 'ssl' => array('verify_peer' => false, 'verify_peer_name' => false)))); if (empty($response)) { return 'Unable to connect to WebRTC at ' . $url . '. Did you set a correct SPREED_WEBRTC_ORIGIN and SPREED_WEBRTC_BASEPATH in config/config.php?'; } $json = json_decode($response, true); $error = json_last_error(); if ($error !== JSON_ERROR_NONE) { return 'WebRTC API config endpoint returned incorrect json response: <pre>' . htmlspecialchars($response) . '</pre>'; } if (!isset($json['Plugin']) || empty($json['Plugin'])) { return 'WebRTC API config endpoint does not include a plugin'; } }
<?php use OCA\SpreedME\Helper\Helper; $iframe_url = Helper::getSpreedWebRtcUrl(); script('spreedme', '../extra/static/PostMessageAPI'); script('spreedme', 'webrtc'); style('spreedme', 'webrtc'); $sharedConfig = array('is_guest' => $_['is_guest'] === true, 'features' => array('temporary_password' => Helper::getConfigValue('OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED') === true)); ?> <script id="sharedconfig" type="application/json"><?php // Not an issue to output this directly, json_encode by default has disabled JSON_UNESCAPED_SLASHES echo json_encode($sharedConfig); ?> </script> <div id="debug"><b>Debug</b><br /></div> <div id="container"> <iframe src="<?php echo $iframe_url; ?> " allowfullscreen></iframe> </div>
public static function getAllowedIframeDomains() { $origin = Helper::getSpreedWebRtcOrigin(); return array($origin, 'mailto:'); }
<?php use OCA\SpreedME\Helper\Helper; $iframe_url = Helper::getSpreedWebRtcUrl(); script('spreedme', '../extra/static/config/OwnCloudConfig'); script('spreedme', '../extra/static/PostMessageAPI'); script('spreedme', 'webrtc'); style('spreedme', 'webrtc'); ?> <div id="debug"><b>Debug</b><br /></div> <div id="container"> <iframe src="<?php echo $iframe_url; ?> " allowfullscreen></iframe> </div>
public function saveConfig($config) { $allowedKeys = array('SPREED_WEBRTC_ORIGIN', 'SPREED_WEBRTC_BASEPATH', 'OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED', 'SPREED_WEBRTC_IS_SHARED_INSTANCE'); $_response = array('success' => false); try { foreach ($allowedKeys as $key) { if (isset($config[$key])) { $value = $config[$key]; Helper::setDatabaseConfigValueIfEnabled($key, $value); // Extra configuration for some of the keys switch ($key) { case 'OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED': if ($value === 'true' && Helper::getDatabaseConfigValue('OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY') === '') { // Also generate a 'Temporary Password signing key' Security::regenerateTemporaryPasswordSigningKey(); } break; } } } Helper::setDatabaseConfigValueIfEnabled('is_set_up', 'true'); $_response['success'] = true; } catch (\Exception $e) { $_response['error'] = $e->getCode(); } return new DataResponse($_response); }
<?php use OCA\SpreedME\Helper\Helper; script('spreedme', '../extra/static/config/OwnCloudConfig'); script('spreedme', '../extra/static/PostMessageAPI'); script('spreedme', 'fileselector'); style('spreedme', 'fileselector'); // TODO(leon): Check if this could result in a potential XSS vulnerability $sharedConfig = array('allowed_partners' => Helper::getSpreedWebRtcOrigin()); ?> <script id="sharedconfig" type="application/json"><?php echo json_encode($sharedConfig); ?> </script> <div id="debug"><b>Debug</b><br /></div>
public function __construct($appName, IRequest $request, $userId) { parent::__construct($appName, $request); Helper::notifyIfAppNotSetUp(); }
?> " /> </p> <p class="show-if-advanced-settings"> <label for="SPREED_WEBRTC_IS_SHARED_INSTANCE">SPREED_WEBRTC_IS_SHARED_INSTANCE:</label> <input type="checkbox" id="SPREED_WEBRTC_IS_SHARED_INSTANCE" name="SPREED_WEBRTC_IS_SHARED_INSTANCE" <?php echo Helper::getDatabaseConfigValueOrDefault('SPREED_WEBRTC_IS_SHARED_INSTANCE') === true ? 'checked="checked"' : ''; ?> /> </p> <p class="show-if-advanced-settings"> <label for="OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED">OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED:</label> <input type="checkbox" id="OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED" name="OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED" <?php echo Helper::getDatabaseConfigValueOrDefault('OWNCLOUD_TEMPORARY_PASSWORD_LOGIN_ENABLED') === true ? 'checked="checked"' : ''; ?> /> </p> <p class="hidden OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY warning"> A new OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY was generated.<br />Previously generated 'Temporary Passwords' are no longer valid. </p> <p class="show-if-advanced-settings"> <label for="REGENERATE_OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY">OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY:</label> <input type="button" id="REGENERATE_OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY" name="REGENERATE_OWNCLOUD_TEMPORARY_PASSWORD_SIGNING_KEY" class="needs-confirmation" data-confirmation-message="Do you really want to generate a new signing key?\nAll previously generated 'Temporary Passwords' will be invalidated." value="Generate new signing key" /> </p> <button type="submit" class="primary">Save settings</button> <button type="button" class="do-show-advanced-settings">Show advanced settings</button> </form> </div> <div class="show-if-js-config-found">
<?php use OCA\SpreedME\Helper\Helper; $origin = Helper::getSpreedWebRtcOrigin(); script('spreedme', '../extra/static/config/OwnCloudConfig'); script('spreedme', '../extra/static/PostMessageAPI'); script('spreedme', 'fileselector'); style('spreedme', 'fileselector'); ?> <script data-shared-config='{"allowedPartners": "<?php echo $origin; ?> "}'></script> <div id="debug"><b>Debug</b><br /></div>