Przeglądaj źródła

fix(updatenotification): Replace deprecated code and move background jobs into `BackgroundJobs` subfolder

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
tags/v29.0.0beta1
Ferdinand Thiessen 3 miesięcy temu
rodzic
commit
d9d3448e23
No account linked to committer's email address

+ 1
- 1
apps/updatenotification/appinfo/info.xml Wyświetl plik

@@ -16,7 +16,7 @@
</dependencies>

<background-jobs>
<job>OCA\UpdateNotification\Notification\BackgroundJob</job>
<job>OCA\UpdateNotification\BackgroundJob\UpdateAvailableNotifications</job>
</background-jobs>

<settings>

+ 5
- 5
apps/updatenotification/lib/AppInfo/Application.php Wyświetl plik

@@ -36,13 +36,13 @@ use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\QueryException;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Util;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Log\LoggerInterface;

class Application extends App implements IBootstrap {
@@ -59,7 +59,7 @@ class Application extends App implements IBootstrap {
IUserSession $userSession,
IAppManager $appManager,
IGroupManager $groupManager,
IAppContainer $appContainer,
ContainerInterface $container,
LoggerInterface $logger) {
if ($config->getSystemValue('updatechecker', true) !== true) {
// Updater check is disabled
@@ -75,8 +75,8 @@ class Application extends App implements IBootstrap {
if (!$appManager->isEnabledForUser('notifications') &&
$groupManager->isAdmin($user->getUID())) {
try {
$updateChecker = $appContainer->get(UpdateChecker::class);
} catch (QueryException $e) {
$updateChecker = $container->get(UpdateChecker::class);
} catch (ContainerExceptionInterface $e) {
$logger->error($e->getMessage(), ['exception' => $e]);
return;
}

apps/updatenotification/lib/ResetTokenBackgroundJob.php → apps/updatenotification/lib/BackgroundJob/ResetToken.php Wyświetl plik

@@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Ferdinand Thiessen <opensource@fthiessen.de>
*
* @license AGPL-3.0
*
@@ -24,43 +25,43 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCA\UpdateNotification;
namespace OCA\UpdateNotification\BackgroundJob;

use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCP\IAppConfig;
use OCP\IConfig;

/**
* Class ResetTokenBackgroundJob deletes any configured token all 24 hours for
*
*
* @package OCA\UpdateNotification
* Deletes the updater secret after if it is older than 48h
*/
class ResetTokenBackgroundJob extends TimedJob {
/** @var IConfig */
private $config;
/** @var ITimeFactory */
private $timeFactory;
class ResetToken extends TimedJob {

/**
* @param IConfig $config
* @param ITimeFactory $timeFactory
*/
public function __construct(IConfig $config,
ITimeFactory $timeFactory) {
parent::__construct($timeFactory);
public function __construct(
ITimeFactory $time,
private IConfig $config,
private IAppConfig $appConfig,
) {
parent::__construct($time);
// Run all 10 minutes
parent::setInterval(60 * 10);
$this->config = $config;
$this->timeFactory = $timeFactory;
}

/**
* @param $argument
*/
protected function run($argument) {
if ($this->config->getSystemValueBool('config_is_read_only') !== false) {
return;
}

$secretCreated = $this->appConfig->getValueInt('core', 'updater.secret.created', $this->time->getTime());
// Delete old tokens after 2 days
if ($this->config->getSystemValueBool('config_is_read_only') === false && $this->timeFactory->getTime() - (int) $this->config->getAppValue('core', 'updater.secret.created', (string) $this->timeFactory->getTime()) >= 172800) {
if ($secretCreated >= 172800) {
$this->config->deleteSystemValue('updater.secret');
}
}

apps/updatenotification/lib/Notification/BackgroundJob.php → apps/updatenotification/lib/BackgroundJob/UpdateAvailableNotifications.php Wyświetl plik

@@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Ferdinand Thiessen <opensource@fthiessen.de>
*
* @license AGPL-3.0
*
@@ -24,11 +25,12 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCA\UpdateNotification\Notification;
namespace OCA\UpdateNotification\BackgroundJob;

use OC\Installer;
use OC\Updater\VersionCheck;
use OCP\App\IAppManager;
use OCP\AppFramework\Services\IAppConfig;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCP\IConfig;
@@ -36,7 +38,7 @@ use OCP\IGroup;
use OCP\IGroupManager;
use OCP\Notification\IManager;

class BackgroundJob extends TimedJob {
class UpdateAvailableNotifications extends TimedJob {
protected $connectionNotifications = [3, 7, 14, 30];

/** @var string[] */
@@ -45,6 +47,7 @@ class BackgroundJob extends TimedJob {
public function __construct(
ITimeFactory $timeFactory,
protected IConfig $config,
protected IAppConfig $appConfig,
protected IManager $notificationManager,
protected IGroupManager $groupManager,
protected IAppManager $appManager,
@@ -87,14 +90,14 @@ class BackgroundJob extends TimedJob {

$status = $this->versionCheck->check();
if ($status === false) {
$errors = 1 + (int) $this->config->getAppValue('updatenotification', 'update_check_errors', '0');
$this->config->setAppValue('updatenotification', 'update_check_errors', (string) $errors);
$errors = 1 + $this->appConfig->getAppValueInt('update_check_errors', 0);
$this->appConfig->setAppValueInt('update_check_errors', $errors);

if (\in_array($errors, $this->connectionNotifications, true)) {
$this->sendErrorNotifications($errors);
}
} elseif (\is_array($status)) {
$this->config->setAppValue('updatenotification', 'update_check_errors', '0');
$this->appConfig->setAppValueInt('update_check_errors', 0);
$this->clearErrorNotifications();

if (isset($status['version'])) {
@@ -162,7 +165,7 @@ class BackgroundJob extends TimedJob {
* @param string $visibleVersion
*/
protected function createNotifications($app, $version, $visibleVersion = '') {
$lastNotification = $this->config->getAppValue('updatenotification', $app, false);
$lastNotification = $this->appConfig->getAppValueString($app, '');
if ($lastNotification === $version) {
// We already notified about this update
return;
@@ -193,7 +196,7 @@ class BackgroundJob extends TimedJob {
return;
}

$this->config->setAppValue('updatenotification', $app, $version);
$this->appConfig->setAppValueString($app, $version);
}

/**
@@ -204,7 +207,7 @@ class BackgroundJob extends TimedJob {
return $this->users;
}

$notifyGroups = (array) json_decode($this->config->getAppValue('updatenotification', 'notify_groups', '["admin"]'), true);
$notifyGroups = $this->appConfig->getAppValueArray('notify_groups', ['admin']);
$this->users = [];
foreach ($notifyGroups as $group) {
$groupToNotify = $this->groupManager->get($group);

+ 15
- 34
apps/updatenotification/lib/Controller/AdminController.php Wyświetl plik

@@ -9,6 +9,7 @@ declare(strict_types=1);
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Vincent Petry <vincent@nextcloud.com>
* @author Ferdinand Thiessen <opensource@fthiessen.de>
*
* @license AGPL-3.0
*
@@ -27,12 +28,13 @@ declare(strict_types=1);
*/
namespace OCA\UpdateNotification\Controller;

use OCA\UpdateNotification\ResetTokenBackgroundJob;
use OCA\UpdateNotification\BackgroundJob\ResetToken;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IRequest;
@@ -40,39 +42,18 @@ use OCP\Security\ISecureRandom;
use OCP\Util;

class AdminController extends Controller {
/** @var IJobList */
private $jobList;
/** @var ISecureRandom */
private $secureRandom;
/** @var IConfig */
private $config;
/** @var ITimeFactory */
private $timeFactory;
/** @var IL10N */
private $l10n;

/**
* @param string $appName
* @param IRequest $request
* @param IJobList $jobList
* @param ISecureRandom $secureRandom
* @param IConfig $config
* @param ITimeFactory $timeFactory
* @param IL10N $l10n
*/
public function __construct($appName,
public function __construct(
string $appName,
IRequest $request,
IJobList $jobList,
ISecureRandom $secureRandom,
IConfig $config,
ITimeFactory $timeFactory,
IL10N $l10n) {
private IJobList $jobList,
private ISecureRandom $secureRandom,
private IConfig $config,
private IAppConfig $appConfig,
private ITimeFactory $timeFactory,
private IL10N $l10n,
) {
parent::__construct($appName, $request);
$this->jobList = $jobList;
$this->secureRandom = $secureRandom;
$this->config = $config;
$this->timeFactory = $timeFactory;
$this->l10n = $l10n;
}

private function isUpdaterEnabled() {
@@ -85,7 +66,7 @@ class AdminController extends Controller {
*/
public function setChannel(string $channel): DataResponse {
Util::setChannel($channel);
$this->config->setAppValue('core', 'lastupdatedat', '0');
$this->appConfig->setValueInt('core', 'lastupdatedat', 0);
return new DataResponse(['status' => 'success', 'data' => ['message' => $this->l10n->t('Channel updated')]]);
}

@@ -98,8 +79,8 @@ class AdminController extends Controller {
}

// Create a new job and store the creation date
$this->jobList->add(ResetTokenBackgroundJob::class);
$this->config->setAppValue('core', 'updater.secret.created', (string)$this->timeFactory->getTime());
$this->jobList->add(ResetToken::class);
$this->appConfig->setValueInt('core', 'updater.secret.created', $this->timeFactory->getTime());

// Create a new token
$newToken = $this->secureRandom->generate(64);

Ładowanie…
Anuluj
Zapisz