|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* CleanUp tasks executed via cron. |
|
4
|
|
|
* |
|
5
|
|
|
* @package ThreemaGateway |
|
6
|
|
|
* @author rugk |
|
7
|
|
|
* @copyright Copyright (c) 2015-2016 rugk |
|
8
|
|
|
* @license MIT |
|
9
|
|
|
*/ |
|
10
|
|
|
|
|
11
|
|
|
class ThreemaGateway_CronEntry_CleanUp |
|
12
|
|
|
{ |
|
13
|
|
|
/** |
|
14
|
|
|
* This task removes all deleted messages, which are so old that they are |
|
15
|
|
|
* no risk for a reply attack anymore. |
|
16
|
|
|
* |
|
17
|
|
|
* This ensures that unnecessary meta data is deleted as afterwards also |
|
18
|
|
|
* the message ID is deleted so no one knows that the message has been |
|
19
|
|
|
* received. |
|
20
|
|
|
*/ |
|
21
|
|
|
public static function pruneOldDeletedMessages() |
|
22
|
|
|
{ |
|
23
|
|
|
/** @var $messageModel ThreemaGateway_Model_Messages */ |
|
24
|
|
|
$messageModel = XenForo_Model::create('ThreemaGateway_Model_Messages'); |
|
25
|
|
|
$messageModel->setTimeLimit(null, ThreemaGateway_Helper_Message::getOldestPossibleReplayAttackDate(), 'date_received'); |
|
26
|
|
|
|
|
27
|
|
|
/* @var XenForo_Options $options */ |
|
28
|
|
|
$xenOptions = XenForo_Application::getOptions(); |
|
29
|
|
|
// only need to test whether one attribute is invalid, all others are |
|
30
|
|
|
// automatically invalid too unless something is really went wrong |
|
31
|
|
|
/* @var array $condition */ |
|
32
|
|
|
$conditions = ['date_send IS NULL']; |
|
33
|
|
|
|
|
34
|
|
|
// when the hardened mode is activated, only set receive date to "null" |
|
35
|
|
|
if ($xenOptions->threema_gateway_harden_reply_attack_protection) { |
|
36
|
|
|
// update all receive_dates with "null" to remove as much meta data |
|
37
|
|
|
// as possible |
|
38
|
|
|
$messageModel->removeMetaData($conditions, ['date_received']); |
|
39
|
|
|
} else { |
|
40
|
|
|
// remove whole data set |
|
41
|
|
|
$messageModel->removeMetaData($conditions); |
|
42
|
|
|
} |
|
43
|
|
|
} |
|
44
|
|
|
|
|
45
|
|
|
/** |
|
46
|
|
|
* This task removes all expired pending requests for the 2FA modes. |
|
47
|
|
|
* |
|
48
|
|
|
* This task should stay enabled. |
|
49
|
|
|
*/ |
|
50
|
|
|
public static function pruneExpiredTfaPendingRequests() |
|
51
|
|
|
{ |
|
52
|
|
|
/** @var $messageModel ThreemaGateway_Model_Messages */ |
|
53
|
|
|
$messageModel = XenForo_Model::create('ThreemaGateway_Model_TfaPendingMessagesConfirmation'); |
|
54
|
|
|
$messageModel->deleteExpired(); |
|
55
|
|
|
} |
|
56
|
|
|
|
|
57
|
|
|
/** |
|
58
|
|
|
* This task removes all old action log entries, which are not anymore used |
|
59
|
|
|
* for rate-limiting/throtteling any actions. |
|
60
|
|
|
* |
|
61
|
|
|
* This task should stay enabled. |
|
62
|
|
|
*/ |
|
63
|
|
|
public static function pruneOldActionLogEntries() |
|
64
|
|
|
{ |
|
65
|
|
|
/** @var $throttleModel ThreemaGateway_Model_ActionThrottle */ |
|
66
|
|
|
$throttleModel = XenForo_Model::create('ThreemaGateway_Model_ActionThrottle'); |
|
67
|
|
|
$throttleModel->pruneActionLog(); |
|
68
|
|
|
} |
|
69
|
|
|
} |
|
70
|
|
|
|