|
8 | 8 | use Dilab\Network\Response; |
9 | 9 | use Monolog\Logger; |
10 | 10 | use Monolog\Handler\StreamHandler; |
| 11 | +use OndrejVrto\FilenameSanitize\FilenameSanitize; |
11 | 12 |
|
12 | 13 | class Resumable |
13 | 14 | { |
@@ -159,18 +160,14 @@ public function getExtension() |
159 | 160 | } |
160 | 161 |
|
161 | 162 | /** |
162 | | - * Makes sure the orginal extension never gets overriden by user defined filename. |
| 163 | + * Creates a safe name |
163 | 164 | * |
164 | | - * @param string User defined filename |
165 | | - * @param string Original filename |
166 | | - * @return string Filename that always has an extension from the original file |
| 165 | + * @param string $name Original name |
| 166 | + * @return string A safer name |
167 | 167 | */ |
168 | | - private function createSafeFilename($filename, $originalFilename) |
| 168 | + private function createSafeName(string $name): string |
169 | 169 | { |
170 | | - $filename = $this->removeExtension($filename); |
171 | | - $extension = $this->findExtension($originalFilename); |
172 | | - |
173 | | - return sprintf('%s.%s', $filename, $extension); |
| 170 | + return FilenameSanitize::of($name)->get(); |
174 | 171 | } |
175 | 172 |
|
176 | 173 | public function handleTestChunk() |
@@ -227,9 +224,9 @@ private function createFileAndDeleteTmp($identifier, $filename) |
227 | 224 |
|
228 | 225 | // if the user has set a custom filename |
229 | 226 | if (null !== $this->filename) { |
230 | | - $finalFilename = $this->createSafeFilename($this->filename, $filename); |
| 227 | + $finalFilename = $this->createSafeName($this->filename); |
231 | 228 | } else { |
232 | | - $finalFilename = $filename; |
| 229 | + $finalFilename = $this->createSafeName($filename); |
233 | 230 | } |
234 | 231 |
|
235 | 232 | // replace filename reference by the final file |
@@ -288,7 +285,7 @@ public function tmpChunkDir($identifier) |
288 | 285 | if (!empty($this->instanceId)){ |
289 | 286 | $tmpChunkDir .= $this->instanceId . DIRECTORY_SEPARATOR; |
290 | 287 | } |
291 | | - $tmpChunkDir .= $identifier; |
| 288 | + $tmpChunkDir .= $this->createSafeName($identifier); |
292 | 289 | $this->ensureDirExists($tmpChunkDir); |
293 | 290 | return $tmpChunkDir; |
294 | 291 | } |
@@ -318,7 +315,7 @@ private function ensureDirExists($path) |
318 | 315 |
|
319 | 316 | public function tmpChunkFilename($filename, $chunkNumber) |
320 | 317 | { |
321 | | - return $filename . '.' . str_pad($chunkNumber, 4, 0, STR_PAD_LEFT); |
| 318 | + return $this->createSafeName($filename) . '.' . str_pad($chunkNumber, 4, 0, STR_PAD_LEFT); |
322 | 319 | } |
323 | 320 |
|
324 | 321 | public function getExclusiveFileHandle($name) |
|
0 commit comments