|
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