PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.1
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.1
4.11.2 4.11.1 4.11.0 4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Backup / Service / BackupSigner.php
wp-staging / Backup / Service Last commit date
Compression 1 week ago Database 1 week ago DirectoryExplorer 1 week ago AbstractBackgroundBackupRequest.php 1 week ago AbstractBackupsFinder.php 1 week ago AbstractExtractor.php 1 week ago AbstractServiceProvider.php 1 week ago Archiver.php 1 week ago BackupAssets.php 1 week ago BackupContent.php 1 week ago BackupMetadataEditor.php 1 week ago BackupMetadataReader.php 1 week ago BackupSigner.php 1 week ago BackupsDirectoryResolver.php 1 week ago BackupsFinder.php 1 week ago BeforeUpdateBackupRequest.php 1 week ago BeforeUpdateBackupsService.php 1 week ago Extractor.php 1 week ago FileBackupService.php 1 week ago FileBackupServiceProvider.php 1 week ago ServiceInterface.php 1 week ago TmpBackupCleaner.php 1 week ago UpdateProtectionHealth.php 1 week ago UpdateProtectionSettings.php 1 week ago ZlibCompressor.php 1 week ago
BackupSigner.php
156 lines
1 <?php
2
3 namespace WPStaging\Backup\Service;
4
5 use RuntimeException;
6 use WPStaging\Backup\Dto\Job\JobBackupDataDto;
7 use WPStaging\Backup\Entity\BackupMetadata;
8 use WPStaging\Framework\Filesystem\FileObject;
9
10 class BackupSigner
11 {
12
13 protected $backupMetadataEditor;
14
15
16 protected $jobDataDto;
17
18
19
20
21 public function __construct(BackupMetadataEditor $backupMetadataEditor)
22 {
23 $this->backupMetadataEditor = $backupMetadataEditor;
24 }
25
26
27
28
29
30 public function setup(JobBackupDataDto $jobDataDto)
31 {
32 $this->jobDataDto = $jobDataDto;
33 }
34
35
36
37
38
39 public function signBackup(string $backupFilePath)
40 {
41 $this->signBackupFile($backupFilePath);
42 }
43
44
45
46
47
48 public function validateSignedBackup(string $backupFilePath)
49 {
50 $this->validateBackupFile($backupFilePath);
51 }
52
53
54
55
56
57
58
59
60
61
62
63
64 protected function signBackupFile(string $backupFilePath, int $backupSize = 0, int $partSize = 0)
65 {
66 clearstatcache();
67 if (!is_file($backupFilePath)) {
68 throw new \RuntimeException('The backup file is invalid: ' . $backupFilePath . '.');
69 }
70
71 $file = new FileObject($backupFilePath, FileObject::MODE_APPEND_AND_READ);
72 $backupMetadata = new BackupMetadata();
73 $backupMetadata = $backupMetadata->hydrateByFile($file);
74
75 if ($backupSize === 0) {
76 $backupSize = $file->getSize();
77
78 $backupSize = $this->reCalcBackupSize($backupSize);
79 }
80
81 $this->jobDataDto->setTotalBackupSize($backupSize);
82 $backupMetadata->setBackupSize($backupSize);
83 $this->signMultiPartMetadata($backupMetadata, $partSize);
84 $this->backupMetadataEditor->setBackupMetadata($file, $backupMetadata);
85 }
86
87
88
89
90
91
92
93 protected function validateBackupFile(string $backupFilePath, int $backupSize = 0, int $partSize = 0)
94 {
95 clearstatcache();
96 if (!is_file($backupFilePath)) {
97 throw new RuntimeException('The backup file does not exist: ' . $backupFilePath);
98 }
99
100 $file = new FileObject($backupFilePath);
101
102 $backupMetadata = new BackupMetadata();
103 $backupMetadata = $backupMetadata->hydrateByFile($file);
104
105 if ($backupMetadata->getName() !== $this->jobDataDto->getName()) {
106 throw new RuntimeException('Unexpected Name in Metadata.');
107 }
108
109 if ($backupSize === 0) {
110 $backupSize = $file->getSize();
111 }
112
113 if ($backupMetadata->getBackupSize() !== $backupSize) {
114 throw new RuntimeException(sprintf('Unexpected Backup Size in Metadata. Size in Metadata %s, Size in File %s', $backupMetadata->getBackupSize(), $backupSize));
115 }
116
117 $this->validateMultipartMetadata($backupMetadata, $partSize);
118 }
119
120
121
122
123
124
125 protected function signMultipartMetadata(BackupMetadata $backupMetadata, int $partSize)
126 {
127
128 }
129
130
131
132
133
134
135 protected function validateMultipartMetadata(BackupMetadata $backupMetadata, int $partSize)
136 {
137
138 }
139
140
141
142
143
144
145
146
147
148
149
150
151 private function reCalcBackupSize(int $backupSize = 0): int
152 {
153 return $backupSize - 2 + strlen((string)$backupSize);
154 }
155 }
156